关键词:
文章目录
1. Ripple效果的设置 2. Ripple的生效 3. 不适用Ripple的场景 4. 无边界的Ripple (unbounded ripple) 5. 硬件加速开关对无边界Ripple的影响 6. 子层(Child Layer) 7. Mask层(Mask Layer) 8. 与ClickableSpan冲突 9. Ripple动画的自动播放
GitHub源码:Ripple Demo RippleDrawable官方文档链接:RippleDrawable 效果图如下:
Ripple效果的设置
可以在XML布局文件中对 View
的 android:background
属性进行赋值.android:foreground
的Ripple支持仅支持 FrameLayout
或其子类如support-v7中的 CardView
.android:foreground
的Ripple使用场景为当点击不透明的Image
时,见效果图中的Ripple by 'foreground' Only FrameLayout Support
也可以在代码中动态设置.
Ripple的生效
当 View
有设置 OnClickListener
的情况下被点击, 或者获得/失去焦点变化时,将出现Ripple效果.
不适用Ripple的场景
点击之后就立马消失的组件(setVisibility:gone invisible 或 remove). 因为当组件恢复为visiable
后,未播放完的Ripple
动画会继续播放,会产生疑惑。
无边界的Ripple (unbounded ripple)
见效果图中第一行Ripple NO Child Layers or Mask
(/drawable/ripple.xml)
当ripple
标签内只指定一个android:color
属性时,则该ripple
效果的绘制会溢出其所在View
的边界,直接绘制在父控件的背景之上。 如果父控件没有设置背景,则会进一步绘制在父控件的上一级父控件的背景之上。
如在Demo
中layout/layout_toolbar.xml
,把作为rootView
的LinearLayout
的属性android:background="@android:color/background_dark"
删除,则会出现下图的效果:
硬件加速开关对无边界Ripple的影响
在Android 3.0 (API level 11)引入的硬件加速功能默认在application/Activity/View这三个层级上都是开启的。 但如果手贱关闭了,则无边界Ripple
不会生效。 见效果图中的第二行Ripple NO Child Layers or Mask but HARDWARE OFF
子层(Child Layer)
由于View
在不同的交互下有不同的state
,常见的为pressed
和’focused’或normal
这三种状态. 所以Ripple
通过多个item
来表示不同state
下的显示,每个item
都是一个子层(Child Layer),能够直接显示color
、shape
、drawable/image
及 selector
.
当Ripple
存在一个或多个子层时,则ripple
效果则被限定在当前View
的边界内了.无边界效果(unbounded ripple)失效.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// ↓↓↓ Ripple With Child Layer(Color Red) and Mask
<ripple android:color ="@android:color/holo_green_light" >
<item android:id ="@android:id/mask"
android:drawable =
"@android:color/holo_red_light" />
</ripple >
// ↓↓↓ Ripple With Shape and Mask
<ripple android:color ="@android:color/holo_green_light" >
<item android:id ="@android:id/mask" >
<shape android:shape ="rectangle" >
<solid android:color ="@android:color/holo_red_light" />
<corners android:radius ="30dp" />
</shape >
</item >
</ripple >
// ↓↓↓ Ripple With Picture and Mask
<ripple android:color ="@android:color/holo_green_light" >
<item android:id ="@android:id/mask"
android:drawable =
查看详情
svn命令及使用总结
错误处理svn:E175009:TheXMLresponsecontainsinvalidXMLsvn:E130003:MalformedXML:noelementfound找到svnup的错误目录,然后执行svnup--set-depthempty&&svnup--set-depthinfinity 查看详情
svn命令及使用总结
错误处理svn:E175009:TheXMLresponsecontainsinvalidXMLsvn:E130003:MalformedXML:noelementfound找到svnup的错误目录,然后执行svnup--set-depthempty&&svnup--set-depthinfinity 查看详情
gdb调试命令的使用及总结
...可定位到这个函数的定义及查看附近的其他源码。或者:使用断点或单步运行,到某个函数处使用s进入这个函数。3)设置断点 (gdb)b6 这样会在运 查看详情
001_javascript数组常用方法总结及使用案例
一、https://msdn.microsoft.com/zh-cn/library/ff679976(v=vs.94).aspx二、ip地址转换成对应的二进制.constip=‘172.16.0.5‘;constmask1=‘255.255.255.0‘;functionconvert(ipStr){returnipStr.split(‘.‘).map(function(ipSec){//ret 查看详情
r语言使用dalex包对h2o包构建的机器学习模型进行解释分析:总结及实战
R语言使用DALEX包对h2o包构建的机器学习模型进行解释分析:总结及实战 目录R语言使用DALEX包对h2o包构建的机器学习模型进行解释分析:总结及实战< 查看详情
mpandroidchart开发使用总结及采坑记录(代码片段)
...PAndroidChart之柱状图开发总结1.1设置不同的图表1.2BarChart的使用流程1.3Chart的基础设置1.4图表描述相关设置1.5是否显示右侧y轴1.6图例相关设置1.7x轴设置1.8Y轴设置二、BarChart开发实例2.1实现某一水平的高亮柱状图2.2实现训练的曲线... 查看详情
mpandroidchart开发使用总结及采坑记录(代码片段)
...PAndroidChart之柱状图开发总结1.1设置不同的图表1.2BarChart的使用流程1.3Chart的基础设置1.4图表描述相关设置1.5是否显示右侧y轴1.6图例相关设置1.7x轴设置1.8Y轴设置二、BarChart开发实例2.1实现某一水平的高亮柱状图2.2实现训练的曲线... 查看详情
java单例设计模式总结及举例
*设计模式:前人总结出来的经验,被后人直接拿来使用.*单例设计模式:一个类只允许有一个对象,将这个对象作为一个全局的访问点,提供出去供大家使用.*分析:* 1.用户只能有一个对象* 2.全局的访问点:得到的对象就... 查看详情
c语言关键字registerexternstatic一些总结,及项目中使用的心得
...期。静态变量,从变量产生到整个程序执行结束。当函数使用变量结束后,变量的存储空间依然存在,变量的值也会随着函数的对其的使用而改变。如在函数内定义了一个static变量,那第一次调用该函数后,该变量的值将会被保... 查看详情
android颜色(不)透明度的使用及项目开发中的心得总结(代码片段)
文章目录背景1.Android中颜色简介2.不透明度3.使用方法3.1第一种使用方法3.2第二种使用方法3.3.第三种使用方法4.小结背景总结一下平时工作开发中,如何对UI设计稿上的颜色(不)透明度的使用心得及注意事项。1.Android... 查看详情
android颜色(不)透明度的使用及项目开发中的心得总结(代码片段)
文章目录背景1.Android中颜色简介2.不透明度3.使用方法3.1第一种使用方法3.2第二种使用方法3.3.第三种使用方法4.小结背景总结一下平时工作开发中,如何对UI设计稿上的颜色(不)透明度的使用心得及注意事项。1.Android... 查看详情
cmake用法及常用命令总结
...大小写无关的,参数和变量是大小写相关的。但推荐全部使用大写指令。符号#后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。 自己写了一个小例子,包含了静态库和动态库以及... 查看详情
小程序canvas使用,及一些坑,以及自己的一些小总结
自己做了一个小程序,主要用于给头像加图标的那种,和qq似的,主要用canvas做的,第一回用,掉了很多坑,所以今天系统的总结一下自己所做的,如果大家有不理解的地方,欢迎提问canvas可以用来画一些东西,前台生成一些海... 查看详情
2017总结及2018计划
...用,用的过程中再不断迭代(过年期间完成,3月前正式使用) 2.学习swift重写app(2月左右)3.尽可能用rn之类的把两端app统一起来,降低维护成本(根据学习情况5-6月)4.至少读完6本书(读完之前不买新的)5.泰语学... 查看详情
springmvc接受json参数详解及常见错误总结我改
...pringMVC接受JSON参数详解及常见错误总结最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP。所以把一个练手项目的前台全部改成Ajax了,跳转再使用SpringMVC控制转... 查看详情
html2canvas使用总结及避坑
参考技术A在项目中碰到这样一个需求,需要生成一张截图,并且把这个图片传给后端,后端返回一串图片的cdn地址,然后通过postmessage的方式传给第三方页面;分享一个好用的插件html2canvas,这个插件原理就是先把html转成canvas标... 查看详情
web前端课程技术总结node.js使用方法及相关方法分析
Node.js使用方法及相关方法分析 首先我们要了解什么是node.js?官方解释是:node.js是一个基于Chromev8引擎的javascript运行环境。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效。他是由c++编写的所以速度很快简... 查看详情