工控智汇

工控智汇

MaterialDesign之RippleDrawable

admin 92 44

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