我对如何正确使用Ripple Drawable感到有些迷茫。
让我说我有这个可绘性:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="false" android:state_focused="true" android:drawable="@color/accent_color_light" />
<item android:state_pressed="true" android:drawable="@color/accent_color_light" />
<item android:drawable="@android:color/white" />
</selector>
因此它是一个纯白色背景,在聚焦或按下时会变成淡蓝色。
如何获得相同的颜色但具有连锁效果? 我想我需要使用一个掩码来防止它超出视图范围?
答案 0 :(得分:24)
忘了回答我自己的问题。
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_shortAnimTime"
android:color="@color/my_color" >
<item android:id="@android:id/mask">
<shape android:shape="rectangle" >
<solid android:color="@android:color/holo_green_light" />
</shape>
</item>
</ripple>
项目中带有id&#34;掩码&#34;的颜色没有显示。它用于表示涟漪效应的形状和界限。没有它,它可以超出视图的范围。
答案 1 :(得分:21)
RippleDrawable
已经是StateListDrawable
(即selector
) - 因此您可以使用波纹绘制作为背景(使用默认状态) - 类似这样的内容:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/accent_color_light">
<item android:id="@android:id/mask">
<color android:color="@android:color/white" />
</item>
<item android:drawable="@android:color/white" />
</ripple>
面具片边界涟漪(实际上,上面的片段,减去颜色和设置非压制背景的最后android:drawable
)是棒棒糖中使用的default list selector。 / p>