使用RippleDrawable来使UI点击产生水波纹效果

    xiaoxiao2021-03-26  6

    通过使用RippleDrawable来使UI点击产生水波纹效果

    虽然身在手机ODM公司,但是很少查看系统的代码,今天偶然打开graphic/drawable文件,突然发现好多个Drawable,就从中挑了一个作为整个Drawable系列的开篇吧! 好了闲话不多说了,进入今天的主题,使用RippleDrawable使UI点击产生水波纹效果(其实我刚开始以为网上看到的UI水波纹效果都是别人自定义的View实现的,果然,我还是太年轻了!!)

    首先声明三组颜色,都是一一对应的,浅色用来当做默认背景,深色设置为产生水波纹的颜色。

    <resources> <color name="light_gray">#EAEAEA</color> <color name="darker_orange">#EE5C42</color> <color name="light_orange">#EEAD0E</color> <color name="darker_green">#00CD66</color> <color name="light_green">#00FA9A</color> </resources>

    上述所声明的颜色,将在rippleDrawable中使用,看代码 darker_green_btn.xml

    <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/darker_green" android:radius="150dp"> <item android:drawable="@color/light_green"/> </ripple>

    darker_orange_btn.xml

    <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/darker_orange" android:radius="80dp" > <item android:drawable="@color/light_orange"/> </ripple>

    darker_gray_btn.xml

    <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/darker_gray" > <item android:drawable="@color/light_gray"/> </ripple>

    在RippleDrawable的标签中还有一个radius属性,但这个属性被设置为具体值的时候,在点击到UI上时,将产生一个以radius为半径圆形区域,颜色跟水波纹颜色相同,具体可以看gif图,不设定的话,整个UI会完全覆盖一个跟水波纹颜色相同的区域,给用户按键被按下的感觉。 gif效果图如下:

    布局文件如下:

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.rippledrawable.MainActivity"> <Button style="@style/custom_btn_margin" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/darker_gray_ripple" android:text="@string/btn_gray" /> <Button style="@style/custom_btn_margin" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/darker_orange_ripple" android:text="@string/btn_orange" /> <Button style="@style/custom_btn_margin" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/darker_green_ripple" android:text="@string/btn_green" /> </LinearLayout>

    至于java文件吗?可以说在使用rippleDrawable产生水波纹效果时,几乎不用我们写神马Java代码,用起来就是方便!

    下面是我的微信个人公众号,方便的话,可以关注一下,这将是对我最大的鼓励!

    这个水波纹效果我也将其归属于Material Design中了! 代码地址: 存放所有与Material Design 相关的demo,里面东西比较乱,不要直接git clone 哈

    转载请注明原文地址: https://ju.6miu.com/read-600123.html

    最新回复(0)