如何让所有 View 都可以带上点击的水波纹效果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让所有 View 都可以带上点击的水波纹效果相关的知识,希望对你有一定的参考价值。
参考技术A PF的话 可以用表达式 当撞击事件发生时 动态创建一个面片 赋予一个水波纹的动画材质点击水波纹效果
当布局没有设置 background属性的时候给其布局中加入一下代码就是系统默认的水波纹效果
比如在recyclerview的item布局中,或者其他任意布局中。
android:background="?android:attr/selectableItemBackground" android:clickable="true" android:focusable="true"
当UI有要求布局、按钮等的背景颜色时,使用ripple属性来设置背景。
在drawable-v21中加入:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/feedback_sbmit_btn_color_press"//点击时水波纹的颜色 > <item> <shape android:shape="rectangle">//水波纹矩形形态。 <solid android:color="@color/feedback_sbmit_btn_color_nor" />//正常状态的颜色 <!--<corners android:radius="4dp" />--> </shape> </item>
//以下两行表示当按钮或布局不可用时的状态,可根据自己的实际情况添加。如果只考虑点击的话删除以下两行即可。 <item android:drawable="@drawable/input_green" android:state_enabled="true"/> <item android:drawable="@drawable/after_send_2x" android:state_enabled="false"/> </ripple>
由于ripple属性是21以上的系统才有,所以还需要在5.0以下,也就是正常的drawable文件夹下创建同名文件,代码如下:(就是正常selector的写法)
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/feedback_sbmit_btn_color_press" android:state_pressed="true"/> <item android:drawable="@color/feedback_sbmit_btn_color_press" android:state_focused="true"/> <item android:drawable="@drawable/input_green" android:state_enabled="true"/> <item android:drawable="@drawable/input_green" android:state_pressed="false"/> <item android:drawable="@drawable/input_green" android:state_focused="false"/> <item android:drawable="@drawable/after_send_2x" android:state_enabled="false"/> </selector>
说明:android5.0以上的系统默认button、imageButton、radioButton、checkBox等默认获取焦点的控件,在不设置background属性的情况下就具有水波纹效果
设置该属性后(比如颜色图片等等),水波纹失效。想要达到效果,就在v21中使用ripple设置background。
以上是关于如何让所有 View 都可以带上点击的水波纹效果的主要内容,如果未能解决你的问题,请参考以下文章
UWP:使用Composition实现类似安卓的水波纹Ripple效果