图挂了,可以参考文档: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中已加入以下所有代码
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以下代码
文章开头说了这些效果的使用位置,水波纹可以使用在背景和前景上
当要加水波纹的区域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>
<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>
通常,我们会遇到一些给某个图片按钮增加水波纹的需求,使用上面的几种效果已经无法达到自己内心的要求(UI那边也通不过~)
举个栗子:
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>
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>
<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>