Android实现再图标右上角显示数字
16lz
2021-01-26
最近有一个需求就是需要把购物车的图标右上角加一个数字
自定义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);
效果如下:
更多相关文章
- Android仿淘宝添加商品时属性规格popupwindow
- ArrayList动态删除 自定义Adapter (附源码)
- android 设置为壁纸代码
- Android(安卓)api28 tablayout改变
- 设置布局默认为LinearLayout,却成了RelativeLayout
- Android(安卓)Studio的下载、安装与配置
- 一步一步学android之布局管理器——LinearLayout
- Android:TextView显示富文本信息
- android Activity窗体显示状态设置