棒棒糖RippleDrawable与select器的前棒棒糖

我有不同的draw9patch png作为背景的button。 目前button由selector控制,如下所示:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/pressed" android:state_pressed="true"/> <item android:drawable="@drawable/disabled" android:state_enabled="false"/> <item android:drawable="@drawable/focused" android:state_focused="true"/> <item android:drawable="@drawable/default"/> </selector> 

对于Android棒棒糖,他们有一个RippleDrawable触摸效果,这是这样的:

 <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight"> <item> ... </item> </ripple> 

对于新的触摸涟漪效应:

1:我可以将draw9patch设置为RippleDrawable背景吗?

2:如何容纳上面两种不同的xml我想遵循材质devise? 我必须为新的RippleDrawable分出一个新的文件夹/布局xml吗?

1)是的。 有关如何合成图层的更多详细信息,请参阅RippleDrawable的文档,但基本上需要:

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:attr/colorControlHighlight"> <item android:drawable="@drawable/yourninepatch" /> </ripple> 

或者以一种干净的方式处理残疾人状态,你可能想要:

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:attr/colorControlHighlight"> <item> <selector> <item android:state_enabled="false"> <nine-patch android:src="@drawable/yourninepatch" android:alpha="?android:attr/disabledAlpha" /> </item> <item> <nine-patch android:src="@drawable/yourninepatch" /> </item> </selector> </item> </ripple> 

2)是的,你应该把你的涟漪XML放在drawable-v21中。