在我的应用程序中,我需要响应某些事件来更改按钮的背景色。通过设置创建一个可绘制对象,设置其绘画并将该可绘制对象用作按钮背景,可以很好地工作:

    ShapeDrawable drawable = new ShapeDrawable(roundRectShape);
    drawable.getPaint().setColor(color);
    b.setBackground(drawable);


现在,我想在该可绘制对象上覆盖一个Alpha蒙版,从而创建一个“条纹”按钮。这是蓝色和黑色按钮的外观(假设白色为背景色,但是这些部分实际上应该是100%透明的):

android - 如何将Alpha蒙版应用于Android可绘制对象?-LMLPHP

我在Inkscape中制作了该Alpha蒙版,并将其成功导入为矢量资产。我可能需要将其转换为各种位图,但不确定。

我已经读了很多文章和关于PorterDuff矩阵的问题,但是还不能将它们转化为解决当前问题的方法。

有人知道怎么做吗?



这是另一种可视化效果,希望可以使事情变得更清晰。按钮的父视图的背景颜色在这里是浅粉红色,按钮边框用红色勾勒出轮廓(但在最终产品中实际上应该是不可见的):

android - 如何将Alpha蒙版应用于Android可绘制对象?-LMLPHP

最佳答案

//这会有所帮助。

ImageView img = (ImageView) findViewById(R.drawable.yourimage);

img.setAlpha(100);


//透明值介于0到255之间;
//如果要使用位图

Bitmap b = BitmapFactory.decodeResources(getResources(), R.drawable.yourimage);

img.setImageBitmap(b);

img.setAlpha(100);

07-27 16:41