我正在尝试向我的按钮添加自定义涟漪效果,但是通过 XML 文件将其添加为背景完全没有效果
<?xml version="1.0" encoding="UTF-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#4DB6D7FF">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<corners android:radius="3dp" />
</shape>
</item>
</ripple>
我尝试在代码中重新创建它并得到了这样的东西
ColorStateList list = new ColorStateList(
new int[][] {StateSet.WILD_CARD},
new int[] {(Color.parseColor("#4DB6D7FF") & 0x00ffffff) | 0x19000000}
);
int r = Utils.dpToPx(3); //Any conversion method from dp to pixels
Drawable mask = new ShapeDrawable(new RoundRectShape(new float[] {r, r, r, r, r, r, r, r}, null, null));
RippleDrawable drawable = new RippleDrawable(list, null, mask);
以编程方式将 RippleDrawable 设置为我的按钮作为背景似乎可以添加所需的效果
btn.setBackground(drawable);
所以问题很简单:为什么 代码 变体有效,但 XML 变体 不行 ?