alvinzhangyuntian / Ripple

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

图挂了,可以参考文档:https://note.youdao.com/coshare/index.html?token=65452D45ED5D4253B96B68123D1DD9EF&gid=2809112 目前几种水波纹效果说明:
1、圆形无边界(一般用作父布局背景或前)
2、圆形有边界(常用,一般用作父布局背景或前景)
3、方形有边界(常用,一般用作父布局背景或前景)
4、图形表面水波纹(常用,易被忽略的重点)
5、水波纹和selector配合(常用,一般用作有选中效果的布局)
Android系统已经提供给我们有边界和无边界(圆形)的效果(API要求21以上,如果没效果加上android:clickable="true"

android:background="?android:attr/selectableItemBackground"
android:background="?android:attr/selectableItemBackgroundBorderless"

但是,默认的效果颜色并不一定能满足开发(UI~)的要求
所以,我们要自定义自己想要的效果
通过android:background="@drawable/ripple。。。"设置

下面,就几种水波纹效果一一介绍

主项目drawable-v21和drawable中已加入以下所有代码

1. ripple_bright_oval_no_mask(圆形无边界亮色水波纹,暗色为ripple_dark_oval_no_mask)

drawable-v21:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_bright_color">
</ripple>

drawable:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@color/ripple_bright_color" android:state_pressed="true"/>
   <item android:drawable="@color/ripple_bright_color" android:state_focused="true"/>
   <item android:drawable="@color/transparent"/>
</selector>

没错,就是这么简单,后面不再粘贴5.0以下代码

2. ripple_bright_oval(圆形有边界亮色水波纹,暗色为ripple_dark_oval)

文章开头说了这些效果的使用位置,水波纹可以使用在背景和前景上
当要加水波纹的区域layout为FrameLayout(实测RelativeLayout也适用)时,可以给布局加上android:foreground="@drawable/ripple_bright_rectangle"实现水波纹浮现在布局上面的效果

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_dark_color">
    <item android:id="@android:id/mask">
        <shape android:shape="oval">
            <solid android:color="?android:colorAccent"/>
        </shape>
    </item>
</ripple>

3. ripple_bright_rectangle(方形有边界亮色水波纹,暗色为ripple_dark_rectangle)

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_bright_color">
    <item android:id="@android:id/mask"
        android:drawable="?android:colorAccent"/>
</ripple>

4. 重点:图形表面水波纹

通常,我们会遇到一些给某个图片按钮增加水波纹的需求,使用上面的几种效果已经无法达到自己内心的要求(UI那边也通不过~)
举个栗子:

只是把内容换成相应的图片或者图形即可

  • image
ic_go_material_store_selector.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_bright_color">
    <item android:drawable="@drawable/ic_effects_download"/>
</ripple>
  • image
btn_orange_20_corners_selector.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_bright_color">
    <item>
        <!--<color android:color="@color/colorAccent" />-->
        <shape>
            <solid android:color="@color/colorAccent" />
            <corners android:radius="@dimen/vsc_bt_corners_radius_size" />
        </shape>
    </item>
</ripple>

5.如果在一个ripple标签中,添加一个item,在item的内部写上标签,那么这个RippleDrawable在按下的时候,同时具有水波效果和selector指定的图层。

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_bright_color">
    <item>
        <selector>
            <item
                android:drawable="@color/edit_panel"
                android:state_checked="true" />
        </selector>
    </item>
</ripple>
最后安利一下Markdown,挺好用

About


Languages

Language:Kotlin 62.7%Language:Java 37.3%