编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/73200900

前言

  android中的水波纹效果是5.0以后即API Level 21以后出现的,因此minSdkVersion必须设置在21及以上才可以使用此效果

Demo效果展示

  • 5.0以上版本手机:

  • 5.0以下版本适配:

水波纹效果实现

  • 系统中提供了水波纹效果的实现方法即在布局界面调用以下代码即可
// 系统提供的水波纹效果(有界/不能改颜色)
android:background="?android:selectableItemBackground"
// 系统提供的水波纹效果(无界/不能改颜色)
android:background="?android:selectableItemBackgroundBorderless"
  • 自定义的水波纹效果(有界/白色)
// background的根节点使用ripple(波纹)即可
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="@color/ripple"><!-- 点击后的背景色--><item><shape><!-- 点击前的背景色--><solid android:color="@color/white"/></shape></item>
</ripple>
  • 自定义的水波纹效果(无界/白色)
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="@color/ripple"><!-- 点击前默认白色 点击后的背景色-->
</ripple>
  • 自定义的水波纹效果(有界/彩色)
      将自定义的水波纹效果(有界/白色) 的颜色代码改一下就可以了

  • 自定义的水波纹效果(无界/彩色)
      将自定义的水波纹效果(无界/白色) 的颜色代码改一下就可以了

  • 自定义的水波纹效果(有界/彩色/圆角)

// 即在自定义的水波纹效果(有界/彩色)代码中添加corners节点
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="@color/colorAccent"><!-- 点击后的背景色--><item><shape><!-- 点击前的背景色--><solid android:color="@color/colorPrimaryDark"/><!-- 设置四个角的角度 --><corners android:radius="30dp"/></shape></item>
</ripple>

5.0以下版本适配

  为了目前已经实现了5.0以上即API Level 21 以上版本的正常显示问题,但API Level 21以下版本是没有水波纹效果的,这一套布局无法实现全部需求,需要针对API Level 21 以下版本再写一套布局,因此需在res目录下新建一个drawable-v21文件夹放置只能API Level 21 以上版本才能使用的布局,drawable文件夹放置API Level 21 以下版本使用的布局和都可使用的布局。这样,android 5.0版本及以上手机先在drawable-v21文件夹找布局,再到drawable文件夹找布局,找不到就报错;android 5.0版本以下手机在drawable文件夹找布局

  • 系统提供属性的适配
// 系统提供的水波纹效果(有界/不能改颜色)
android:background="?android:selectableItemBackground"

  系统已实现了适配,5.0以上是水波纹效果,5.0以下是带选择器的按钮效果

// 系统提供的水波纹效果(无界/不能改颜色)
android:background="?android:selectableItemBackgroundBorderless"

  系统没有实现适配,5.0以下无法使用

  • 自定义效果适配(就是写一些状态选择器,我只以 自定义的水波纹效果(有界/白色) 进行适配,具体见文末Demo代码)
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 没有焦点时的背景颜色 --><item android:drawable="@color/white" android:state_window_focused="false" /><!-- 非触摸模式下获得焦点并单击时的背景颜色 --><item android:drawable="@color/ripple" android:state_focused="true" android:state_pressed="true" /><!-- 触摸模式下单击时的背景颜色 --><item android:drawable="@color/ripple" android:state_focused="false" android:state_pressed="true" /><!-- 选中时的背景颜色 --><item android:drawable="@color/ripple" android:state_selected="true" /><!-- 获得焦点时的背景  颜色 --><item android:drawable="@color/ripple" android:state_focused="true" />
</selector>

Demo下载请移步:http://download.csdn.net/detail/zxc514257857/9870032

----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------

Android开发中的水波纹效果实现相关推荐

  1. android水波效果,android动态壁纸中的水波纹效果

    [实例简介] android动态壁纸中的水波纹效果,采用opengl中的shader实现 [实例截图] [核心代码] @Override public String getVertexShader() ...

  2. android 立体 流量球,Android自定义View——实现水波纹效果类似剩余流量球

    Android自定义View--实现水波纹效果类似剩余流量球 三个点   pre   ber   block   span   初始化   move   理解最近突然手痒就想搞个贝塞尔曲线做个水波纹效 ...

  3. 聊聊Android5.0中的水波纹效果

    水波纹效果已经不是什么稀罕的东西了,用过5.0新控件的小伙伴都知道这个效果,可是如果使用一个TextView或者Button或者其它普通控件的话,你是否知道如何给它设置水波纹效果呢?OK,我们今天就来 ...

  4. android自定义水波纹,Android自定义View——实现水波纹效果类似剩余流量球(示例代码)...

    最近突然手痒就想搞个贝塞尔曲线做个水波纹效果玩玩,终于功夫不负有心人最后实现了想要的效果,一起来看下吧: 效果图镇楼 一:先一步一步来分解一下实现的过程 需要绘制一个正弦曲线(sin)或者余弦曲线(c ...

  5. Android自定义View——实现水波纹效果类似剩余流量球

    最近突然手痒就想搞个贝塞尔曲线做个水波纹效果玩玩,终于功夫不负有心人最后实现了想要的效果,一起来看下吧: 效果图镇楼 一:先一步一步来分解一下实现的过程 需要绘制一个正弦曲线(sin)或者余弦曲线(c ...

  6. android水波圆圈动画,Android支付宝咻咻水波纹效果的实现

    概述 最近看到支付宝咻咻的页面就想模仿一下,话不多说,先看效果图.(录制的有点渣) GIF.gif 先说说这个效果: 1.点击中间图标开始搜索附近的人. 2.开始搜索后水波纹一圈圈的加速向外扩张. 3 ...

  7. android开发控件水波纹,Android实现水波纹控件的方法

    有很多app使用过水波纹的这样的效果,看着很酷酷的样子,所以自己就撸码写了一个. 实现思路: 利用贝塞尔曲线绘制圆弧(也就是水波的波纹) 通过动画改变绘制的起始点使水波纹平移 首先,定义我们需要的自定 ...

  8. Android开发中App演示Gif效果动画的制作过程详讲

    相信大家在做好App时,都想录制一段Gif动态效果.但可能苦于不知如何去实现,或者没有比较好的软件去实现.今天我给大家来详细的讲下整个过程=================== 首先,需要录制好一段视 ...

  9. Android 按钮实现按压水波纹效果

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

最新文章

  1. 亲 , Zookeeper了解一下 : 概述
  2. Linux系统调优概述
  3. C#提取HTML代码中的文字(转)
  4. rust(56)-mp3(1)
  5. mysql sys exec_python - 使用MySQL UDF执行命令-sys_exec不起作用 - 堆栈内存溢出
  6. 30 PP配置-生产车间控制-定义计划策略
  7. qt stylesheet 隐藏_Qt QDockWidget实现鼠标移出自动隐藏
  8. Xamarin.Forms 简介
  9. Rust: Path等
  10. PwnLnX:针对Linux系统的渗透测试工具
  11. html右键菜单背景图片,win10系统设置鼠标右键菜单背景图片的步骤
  12. linux系统live管理界面,live-系统爱好者
  13. spring源码系列(五)——番外篇回答网友的问题
  14. linux设置法语键盘布局,法语键盘布局图;
  15. PhantomJS+Selenium+Scrapy抓取巨潮资讯网企业信息
  16. 能量收集技术能为利用环境能源的应用带来巨大优势
  17. Python————办公自动化
  18. 微信小程序 校园食堂订餐点餐配送系统项目app毕业设计
  19. python写数学公式大全_数学公式书写
  20. DNS故障分析【转】

热门文章

  1. tta部署_TTA、丰源轮胎云平台项目合作交接仪式
  2. 一步步搞定Android行情K线蜡烛图(带十字光标)
  3. 微软免费MSE背后真正的动机和面临的挑战
  4. mysql只能导出65535条,Mysql报Rowsizetoolarge65535的原因及解决方法
  5. 美国新法案为金融机构制定勒索软件防御和响应指南
  6. 大数据介绍及集群安装
  7. 阿里暑期实习c\c++研发工程师一面经历
  8. 构建用户安全评级,UGC智能化审核应用实践
  9. html5制作端午节游戏,零代码怎么制作一个端午节H5小游戏页面?
  10. 刘未鹏|C++的罗浮宫