【发布时间】:2016-04-25 02:18:11
【问题描述】:
在我的应用程序中,我需要更改按钮的背景颜色以响应某些事件。通过设置创建一个可绘制对象、设置其绘制并将该可绘制对象用作按钮背景可以正常工作:
ShapeDrawable drawable = new ShapeDrawable(roundRectShape);
drawable.getPaint().setColor(color);
b.setBackground(drawable);
现在,我想在该可绘制对象上叠加一个 alpha 蒙版,创建一个“条纹”按钮。以下是蓝色和黑色按钮的外观(假设背景颜色为白色,但这些部分实际上应该是 100% 透明的):
我在 Inkscape 中制作了这个 alpha 蒙版,并成功将其导入为矢量资产。我可能需要将其转换为某种位图,但我不确定。
我已经阅读了一堆文章和 SO 问题,提到要应用 PorterDuff 矩阵,但无法将这些转化为解决我当前的问题。
有人知道怎么做吗?
这是另一个可视化,希望能让事情更清楚。此处按钮的父视图的背景颜色为淡粉色,按钮边框以红色勾勒(但在最终产品中应该是不可见的):
【问题讨论】:
-
我不太听从你的解释。为清楚起见,您能否生成设备上显示的按钮图像?
-
@Karakuri,我添加了另一个示例,概述了按钮边框并使背景变为非白色。这是否有助于解释预期的结果?它仍然在 Inkscape 中模拟,因为我还没有弄清楚如何在 Android 中做到这一点:)
-
只是一个想法,但创建自己的 View 子类可能更容易,它采用颜色并使用
Paint对象自己绘制 6 个条形。关于 Android 视图的一个肮脏的小秘密:任何视图都可以被点击(所以你实际上不需要Button...除非你也想要那里的文本,那么也许你确实需要Button)。跨度>
标签: android android-drawable android-button android-vectordrawable