[转]关于ripple的那些事

  • 内容
  • 评论
  • 相关

基础使用

ripple一般分为有边界以及无边界的,不过一般来说,我们不会使用无边界的,本篇博客主要介绍如何使用ripple。本文主要内容来自_江南一点雨

有界ripple

我们只需要给控件设置如下代码即可,这样在5.0及以上就是ripple效果,在5.0一下为普通的点击变色效果。注意:控件需要设置android:clickable="true",方可看到效果

无界水波纹

同样的,我们也只需要设置如下一句代码即可,同样需要控件可点击,不过,此方法只在api>=21(5.0)有效,5.0以下会直接崩溃

自定义ripple

自定义ripple与自定义selector等类似,只需要在drawable文件夹下面使用ripple标签定义即可,如下。android:color为必须设置的,为ripple的点击颜色,使用此方法定义的为无界ripple。然后就与使用普通的资源文件一样,直接设置给控件的background即可。注意,不兼容5.0以下

自定义有界ripple

要想定义有界的ripple。我们只需要在添加一个item即可。如下,其中item中的android:drawable如果设置为颜色,并没有啥用,同样的,不兼容5.0以下

上面提到了,在ripple中的item里面设置颜色并没有用,那么这个是干嘛的呢,其实通过系统id mask我们就知道,应该是掩码图,所以放张机器人的图片试试。可以看到,就变成了我们设置的那个机器人。

 

ripple与shape混用

有时候我们需要默认显示另一个背景颜色,可是这个时候其实我们也可以在item中直接定义shape,不兼容5.0以下

ripple与selector混用

ripple不仅可以与shape混用,甚至还可以与selector混用,不兼容5.0以下

ripple兼容

在上面我都用红色标明了,ripple是5.0之后才推出的新特性,所以在5.0之前是无法使用的,会造成程序闪退,兼容的方法就是使用不同版本的drawable文件夹。可以看到,在res下新建一个drawable-v21文件夹,然后在drawable新建一个同名的xml文件即可。

 

参考资料:_江南一点雨

评论

0条评论

发表评论

邮箱地址不会被公开。