创建一个没有透明度的波纹可绘制

时间:2014-11-17 07:51:00

标签: android android-5.0-lollipop ripple rippledrawable

我对如何正确使用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>

因此它是一个纯白色背景,在聚焦或按下时会变成淡蓝色。

如何获得相同的颜色但具有连锁效果? 我想我需要使用一个掩码来防止它超出视图范围?

2 个答案:

答案 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>