点击水波纹效果

本文介绍如何在Android应用中实现水波纹点击效果。通过使用`selectableItemBackground`属性或自定义`ripple`效果,可以为按钮和其他布局元素添加美观的交互反馈。文章还提供了针对不同Android版本的兼容解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当布局没有设置 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。

转载于:https://www.cnblogs.com/epmouse/p/6537787.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值