美文网首页
android创建带圆弧角度的图标控件(setXfermode的

android创建带圆弧角度的图标控件(setXfermode的

作者: 还是做个码农 | 来源:发表于2022-09-26 00:18 被阅读0次

当你开发中遇到这样一个需求,需要将一张正方形的图片在在应用中显示带圆弧的图标显示,而直接用android设置圆角又不符合UI的需求,此时就需要用android设置画图方法setXfermode进行遮罩处理。


image.png e0091bb4b4494b5594798c2d3c9e1dd4.png a9cdc766cd944a50b9cc9712d0927798.png

自定义ImageView如下:

    public MaskIconView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mPaint = new Paint();
        mPorterDuffXfermode = new PorterDuffXfermode(PorterDuff.Mode.DST_OUT);
        mMaskBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.allmenu_icon_mask);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //需要设置View的硬件加速,不然会出现黑色背景和将背景透视问题
        setLayerType(LAYER_TYPE_HARDWARE, mPaint);
        mPaint.setXfermode(mPorterDuffXfermode);
        canvas.drawBitmap(mMaskBitmap, 0, 0, mPaint);
        mPaint.setXfermode(null);
    }

如果需要设置按键的触摸效果,需要使用tint的属性,设置属性android:tint="@color/app_color_selector"。

    <com.android.example.widgets.MaskIconView
        android:id="@+id/iv_icon"
        android:layout_centerHorizontal="true"
        android:tint="@color/app_color_selector"
        android:layout_width="134dp"
        android:layout_height="134dp"
        />

app_color_selector如下:


eac7c2efa3d1491790b4374f8dc8cf31.png

其默认为透明色


03f5b26c822d419b93c8582f68f245d9.png

相关文章

网友评论

      本文标题:android创建带圆弧角度的图标控件(setXfermode的

      本文链接:https://www.haomeiwen.com/subject/vmczortx.html