最近有一个需求就是需要把购物车的图标右上角加一个数字

自定义ImageView如下:

public class NumImageView extends ImageView {    //要显示的数量数量    private int num = 0;    //红色圆圈的半径    private float radius;    //圆圈内数字的半径    private float textSize;    //右边和上边内边距    private int paddingRight;    private int paddingTop;    public NumImageView(Context context) {        super(context);    }    public NumImageView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public NumImageView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    //设置显示的数量    public void setNum(int num) {        this.num = num;        //重新绘制画布        invalidate();    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        if (num > 0) {            //初始化半径            radius = getWidth() / 5;            //初始化字体大小            textSize = num < 10 ? radius + 5 : radius;            //初始化边距            paddingRight = getPaddingRight();            paddingTop = getPaddingTop();            //初始化画笔            Paint paint = new Paint();            //设置抗锯齿            paint.setAntiAlias(true);            //设置颜色为红色            paint.setColor(getResources().getColor(R.color.zhuti));            //设置填充样式为充满            paint.setStyle(Paint.Style.FILL);            //画圆            canvas.drawCircle(getWidth() - radius - paddingRight/2, radius + paddingTop/2, radius, paint);            //设置颜色为白色            paint.setColor(0xffffffff);            //设置字体大小            paint.setTextSize(textSize);            //画数字            canvas.drawText("" + (num < 99 ? num : 99),                    num < 10 ? getWidth() - radius - textSize / 4 - paddingRight/2                            : getWidth() - radius - textSize / 2 - paddingRight/2,                    radius + textSize / 3 + paddingTop/2, paint);        }    }}

在布局中使用

 <com.jkgl.view.NumImageView            android:id="@+id/actionbar_btn"            android:layout_width="30dp"            android:layout_height="30dp"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:layout_marginLeft="@dimen/text_layout_10_dp"            android:layout_marginRight="14dp"            android:scaleType="centerInside"            android:src="@drawable/icon"/>

代码中使用:

actionbar_btn = (NumImageView) view.findViewById(R.id.actionbar_btn);actionbar_btn.setNum(10);

效果如下:

更多相关文章

  1. Android仿淘宝添加商品时属性规格popupwindow
  2. ArrayList动态删除 自定义Adapter (附源码)
  3. android 设置为壁纸代码
  4. Android(安卓)api28 tablayout改变
  5. 设置布局默认为LinearLayout,却成了RelativeLayout
  6. Android(安卓)Studio的下载、安装与配置
  7. 一步一步学android之布局管理器——LinearLayout
  8. Android:TextView显示富文本信息
  9. android Activity窗体显示状态设置

随机推荐

  1. android 的常标签和方法 android 初学者
  2. android支付宝首页、蚂蚁森林效果、视频
  3. Android 实现显示文字的Gallery
  4. android Setting中隐藏项
  5. Android 网站资源收集大全
  6. Android 修改 以太网 IP地址
  7. Android各种Layout用到的一些重要的属性
  8. android:gravity与android:layout_gravit
  9. 3.EditText
  10. andriod RelativeLayout布局居中