Android Ripple的详解
转自:Android L Ripple的使用
总纲
没有边界的Ripple(Ripple With No Mask)
用颜色作为Mask的Ripple(Ripple With Color Mask),然而颜色并没有什么卵用
用图片作为Mask的Ripple(Ripple With Picture Mask)
用设定形状作为Mask的Ripple(Ripple With Shape Mask)
搭配selector作为Ripple(Ripple With Selector)
1、没有边界的Ripple(Ripple With No Mask)
<ripple>
标签
Ripple标签,即对应一个RippleDrawable,当它被设置为一个控件的background属性时,控件在按下时,即会显示水波效果
ripple_red.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="#FF0000" ></ripple>
使用
<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/ripple_red"android:clickable="true"android:gravity="center"android:text="Ripple With No Mask" />
效果
2、 用颜色作为Mask的Ripple(Ripple With Color Mask)
然而颜色并没有什么卵用,对于限定边界还是有用的
如果在一个ripple标签中,添加一个item,其id为@android:id/mask,drawable属性为引用的颜色(color) ,则水波效果会限定在drawable对应的RippleDrawable本身矩形区域内部。
ripple_red_with_white_mask.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="#FF0000" ><item android:id="@android:id/mask"android:drawable="@android:color/white" /></ripple>
效果:
3、用图片作为Mask的Ripple(Ripple With Picture Mask)
如果在一个ripple标签中,添加一个item,其id为@android:id/mask,drawable属性为引用的图片(png,jpg),则水波效果会限定在图片drawable中非透明部分对应的区域内部。
ripple_red_with_pic_mask
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="#FF0000" ><item android:id="@android:id/mask"android:drawable="@drawable/icon_folder_r" /></ripple>
效果:
4、用设定形状作为Mask的Ripple(Ripple With Shape Mask)
如果在一个ripple标签中,添加一个item,其id为@android:id/mask
,drawable属性为引用的形状(shape) ,则水波效果会限定在shape对应的区域内部。
先定义shape:shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"><solid android:color="#ff9d77"/><corners android:bottomRightRadius="100dp"/>
</shape>
再定义ripple:ripple_red_with_shape_mask
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="#FF0000" ><item android:id="@android:id/mask"android:drawable="@drawable/shape"/></ripple>
效果:
5、搭配selector作为Ripple(Ripple With Selector)
如果在一个ripple标签中,添加一个item,在item的内部写上标签,那么这个RippleDrawable在按下的时候,同时具有水波效果和selector指定的图层。
ripple_red_with_selector
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="#FF0000" ><item><selector><item
android:drawable="@drawable/icon_folder_i"android:state_pressed="true"></item><item
android:drawable="@drawable/icon_folder_r"android:state_pressed="false"></item></selector></item></ripple>
效果:
Android Ripple的详解相关推荐
- 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...
- JMessage Android 端开发详解
JMessage Android 端开发详解 目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能. 首先,一个最基础的 ...
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...
- Android事件流程详解
Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...
- Android Studio 插件开发详解二:工具类
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...
- 《Android游戏开发详解》一2.16 区分类和对象
本节书摘来异步社区<Android游戏开发详解>一书中的第2章,第2.16节,作者: [美]Jonathan S. Harbour 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社 ...
- Android Framework系统服务详解
Android Framework系统服务详解 操作环境 系统:Linux (Ubuntu 12.04) 平台:高通 Android版本:5.1 PS: 符号...为省略N条代码 一.大致原理分析 A ...
- android屏幕适配详解
android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...
- Android LiveData组件详解以及LiveDataBus
转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/99749323 本文出自[赵彦军的博客] 一.LiveData简介 LiveDat ...
最新文章
- DEV—【GridControl添加按钮列】
- 《机器学习实战》chapter03 决策树
- ant 实现批量打包android应用
- vue点击切换css样式
- 阿里巴巴数据中台实践分享
- 新出炉的面试题,了解一下?
- 最优化方法——梯度下降法、牛顿法、LM算法
- 中药的专利标准化研究
- 计算机行业未来的规划模板,计算机专业个人职业规划优秀模板
- python画密度散点图_实战Pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图以及相关系数矩阵图)...
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会(转)...
- c语言 文件指针移动一位,c语言怎样移动文件指针到制定位置?
- matlab求向量的模,MATLAB向量的模
- 蓝牙耳机哪款好?2021无线蓝牙耳机测评
- timing lib时序弧
- Flutter Decoration背景设定(边框、圆角、阴影、形状、渐变、背景图像等)
- 关于Android Studio开发中“unfortunately, xxx has stopped”的错误提示
- 我们不靠天,也不靠地,我们靠自己
- 温度传感器检测温度报警装置
- php7序列化,PHP内核层解析反序列化漏洞
热门文章
- 欧尼酱讲JVM(07)——方法的栖身之所—虚拟机栈
- 如何用数据库寻找相似的历史k线
- The AudioContext was not allowed to start(解决方案)
- Java网络编程——UDP
- 投影机拼接融合技术--DXUT框架
- java分布式库存系统_这个是真的厉害,高并发场景下的订单和库存处理方案,讲的很详细了!...
- 如何不靠运气变得富有 (四) —— 致富与运气无关
- Starling开发微信打灰机(二)
- 煤炭企业内部调拨物资称重问题如何管理(二)
- ERP管理软件:供应链管理的八大基本原则