MaterialDesign之RippleDrawable详解
官方地址
下面是官方文档,也非常简明,下面就是我按照官方的代码来测试

效果图如下:

这里做解释:
android:color这个属性是涟漪波浪的颜色
android:drawable这个属性既可以是color,也可以是drawable资源,它是与android:id=”@android:id/mask”紧密相关的
一、idmask类似一个标记,
如果有该属性,android:drawable就被忽略了。
先看看效果:

这个是要做实验的layout。
有android:id=”@android:id/mask”的时候:


可以看到,有mask的时候,android:drawable就被忽略了
没有android:id=”@android:id/mask”的时候:


二、对于第一幅图中第4种现象:
官方翻译是:如果没有定义子层和遮罩层,波纹(Ripple)会设置成View的背景,波纹将绘制在View的层级结构最高的父节点背景。在这种情况下,绘图区域可能延伸到可绘制的边界外。
很不幸的是RippleDrawable是以后推出的,它不支持5.0以前的版本,这里推荐安装一个AndroidSelector插件,可以自动化生产兼容的资源文件。安装如下:

安装了之后要重启才能生效,我这里安装过了,就没有那个install按钮了。重启androidstudio之后,就按如下步骤:res右键-》new-》AndroidSelector


filename:要生成drawable资源的名称
color:控件的背景颜色
pressed:控件按压后的背景颜色
selectable5-backgroud:5.0以下控件的selector资源文件
selectable5-backgroud(v21):5.0以上控件的RippleDrawable资源文件
当你的手机系统是高于的,那么系统就会选择RippleDrawable文件,如果手机系统低于,则选择selector文件
生成的selector文件如下:
生成的RippleDrawable资源文件如下:
演示效果如下:
给一个button设置background
四、修改全局波浪效果
如果你想整体修改波纹颜色,就在style中覆盖android:colorControlHighlight属性。
resources
!--Baseapplicationtheme.--
stylename="AppTheme"parent=""
!--Customizeyourthemehere.--
itemname="colorPrimary"@color/colorPrimary/item
itemname="colorPrimaryDark"@color/colorPrimaryDark/item
itemname="colorAccent"@color/colorAccent/item
!--修改波纹颜色--
itemname="colorControlHighlight"@color/colorPrimary/item/style/resources





