写一个轻量的用户引导工具:Android自定义View之GuideView

自定义自己的轻量级GuideView,满足app的正常引导需求,半透明灰色蒙板,控件高亮展示,添加引导说明。

将主要代码贴出做简单解释。

首先自定义蒙板View

onDraw()方法中关键代码如下

setLayerType(View.LAYER_TYPE_SOFTWARE, null); //需要关闭硬件加速,否则混合模式显示无效
Paint paint = new Paint(); //新建画笔
paint.setAntiAlias(true); //抗锯齿
setBackgroundColor(Color.TRANSPARENT); //设置画布背景透明
paint.setColor(0xa0000000); //设置画笔颜色半透明
canvas.drawRect(0,0,width,height,paint); //半透明画满整个画布,with、height为自定义View宽高
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); //设置图像混合模式为clear
paint.drawRect(left,top,right,bottom,paint); //绘制镂空图形

PorterDuff.Mode.CLEAR:上层绘制不会提交到画布,并把与下层交集部分也清除,类似镂空,设置此混合模式之后画笔所画图形部分就为镂空部分

其他混合模式如下:

PorterDuff.Mode.CLEAR 上层绘制不会提交到画布,并把与下层交集部分也清除<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单实现的自定义圆形View的示例代码: ``` public class CircleView extends View { private Paint mPaint; private int mColor; public CircleView(Context context) { super(context); init(); } public CircleView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CircleView); mColor = ta.getColor(R.styleable.CircleView_circle_color, Color.RED); ta.recycle(); init(); } private void init() { mPaint = new Paint(); mPaint.setColor(mColor); mPaint.setAntiAlias(true); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec); int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec); int size = Math.min(width, height); setMeasuredDimension(size, size); } @Override protected void onDraw(Canvas canvas) { int radius = getWidth() / 2; canvas.drawCircle(radius, radius, radius, mPaint); } public void setColor(int color) { mColor = color; mPaint.setColor(mColor); invalidate(); } } ``` 这个自定义View继承自View类,重了onMeasure和onDraw方法,实现了一个简单的圆形View。此外,还包含一个setColor方法,用于设置圆形的颜色。 在XML布局文件中,可以使用该自定义View并设置其属性,如下所示: ``` <com.example.customview.CircleView android:id="@+id/circle_view" android:layout_width="100dp" android:layout_height="100dp" app:circle_color="@color/blue" /> ``` 其中,app:circle_color是自定义的属性,在CircleView类的构造方法中使用TypedArray获取该属性的值,并设置圆形的颜色。 希望这个示例代码能够帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值