android的ripple点击效果很好看,怎么自定义点击呢?
我们来看看
示例:
在drawable文件夹中添加xml文件,比如娶个名字:ripple1.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/green">
<item android:drawable="@color/red"/>
</ripple>
这里的< item>标签是没有点击的时候显示的内容,可以添加多个< item>标签
然后在可点击的控件中设置background属性
如下:
<Button
android:id="@+id/dial_btn"
android:layout_width="300dp"
android:layout_height="300dp"
android:background="@drawable/ripple1"/>
当没有点击的时候显示的是这样的
没有点击的时候
当我们点击的时候是这样的
点击的时候
在点击的位置会有我们设置的android:color="@color/green"逐渐扩散(#ff00ff00),
看周围这清爽的屎绿色,会在我们刚刚点击的时候就出现,布满整个View,这个屎绿色其实是系统自动生成的,它其实就是android:color="@color/green"这个颜色设置了透明度的颜色,透明度具体多少我不清楚啦
最后涟漪扩散到全部是这样的:
完全扩散的模样
有个地方需要注意:
如果设置了< item>标签,则涟漪就只会扩散在< item>显示的地方
如下图,下图< item>是个圆形,则涟漪不会超过圆形的范围
涟漪范围
但有个特例,就是没有设置< item>标签的时候:
涟漪会以view的中心点为原点,扩散在直径为view对角线的圆上.
也就是说有部分会超出view限定的范围,具体看图:
没有设置item标签
最后关于涟漪扩散的速度:
无论点击在view的哪个位置,涟漪总是在相同的时间抵达到view的四个角.
所以会出现涟漪移动速度不均匀的情况
注意:只有api>=21才能使用ripple效果