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

Ste*_*his 11 android ripple rippledrawable android-5.0-lollipop

关于如何正确使用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>
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*his 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>
Run Code Online (Sandbox Code Playgroud)

不显示具有id"mask"的项目中的颜色.它用于表示涟漪效应的形状和界限.没有它,它可以超出视图的范围.


ahm*_*dre 22

RippleDrawable已经是一个StateListDrawable(即selector) - 所以你可以使用一个波纹drawable作为你的背景(默认状态) - 像这样:

<?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>
Run Code Online (Sandbox Code Playgroud)

屏蔽片限制了波纹(实际上,上面的片段,减去了颜色,最后android:drawable一个设置了非按下的背景)是棒棒糖中使用的默认列表选择器.