1.使用5.0以上的sdk,并设置value-21的style的AppBaseTheme为parent=”android:Theme.Material.Light”类型。

//此时假如不给textview,listview等控件添加background的话已经实现波纹效果了,但假如设计师有要求用其他颜色或者自定义波纹的颜色的话就只能按照下面的方式来写了。

2.创建drawable-v21文件夹作为只供5.0以上的系统使用的素材。

3.不同类型的控件有不同的设置方式,详情如下:

3.1:textview:设置background属性,值假设为drawable_viewclickripple,并分别放置在drawable和drawable-v21文件夹内(同名,5.0以上系统会自动调用drawable-v21里的素材,5.0以下的系统会自动调用drawable里的素材,下同):

在drawable文件夹内(即5.0以下没效果,也可自行设置点击双色效果):

在drawable-v21文件夹内(color为涟漪的颜色,一般取#9ccc):

android:color="@color/ripplecolor" >

3.2:imageview:可以支持selector(写到src属性中);background用法同textview。

3.3:button、viewgroup:由于这些控件没有src属性,所以若要实现点击变色和涟漪效果共存的话需要这样写:

设置background属性,值假设为drawable_longbuttonclickripple,并分别放置在drawable和drawable-v21文件夹内:

在drawable文件夹内:

在drawable-v21文件夹内(color为涟漪的颜色,一般取#9ccc) :

android:color="@color/ripplecolor" >

其中roundbutton_red_bg可以为单色selector、单双色组合selector、shape等都可以的。

3.4:listview:

3.4.1:在listview的布局文件内设置:

android:drawSelectorOnTop="true"

android:listSelector="@drawable/color_double_list_bg"

color_double_list_bg分别放置在drawable和drawable-v21文件夹内:

在drawable文件夹内(内容为空,点击变色效果有item的background实现):

在drawable-v21文件夹内(ripplecolor_lvitem为波纹的颜色,一般与listview的item按下去时的颜色相同(list_txt_bg_pressed);solid处的颜色其实没有效果,但不能是透明的,为了保险起见这里写为listview的item正常显示时的颜色,即list_txt_bg_normal,默认没点击时的颜色写在listview item的background上(不会覆盖涟漪效果)):

android:color="@color/ripplecolor_lvitem" >

3.4.2:在listview的item中写明:

android:background="@drawable/color_double_list_bg_item"

color_double_list_bg_item分别放置在drawable和drawable-v21文件夹内:

在drawable文件夹内:

在drawable-v21文件夹内(内容只为item正常色,否则会有两个波纹):

到此,listview的涟漪效果配置结束,相对比较复杂。有两点需要注意:

1.不能只在item的根viewgroup的background里用上文textview或imageview那样简单的写background,否则在某些手机里(如mx4)涟漪起始点一直为中心点而不是点击点,或导致其他一些莫名的不正确效果。

2.没有了。

3.5:android.support.v7.widget.CardView:

frameLayout有个属性为foreground,cardview继承于framelayout,所以可通过

android:foreground="?attr/selectableItemBackground"

即可设置波纹效果。

但在某些手机(小米4 nexus5等没有阴影效果,需要在application或activity中写明android:hardwareAccelerated=”true”开启硬件加速才有阴影)

若要再实现点击时卡片的吸附效果(如下)

可再这样设置:

首先,创建一个 TranslationZ 的变换动画放在 /res/anim,自己取一个名(如 touch_raise.xml),加入以下内容:

android:propertyName="translationZ"

android:valueTo="5dp"

android:valueType="floatType" />

android:propertyName="translationZ"

android:valueTo="0dp"

android:valueType="floatType" />

然后为你需要添加效果的 CardView(其他 View 同理)所在的 Layout XML 复制多一份到 /res/layout-v21(此api只能在5.0以上支持),然后在新的那份 XML 的 CardView 中加入属性 android:stateListAnimator=”@anim/touch_raise”。

这样,你的卡片按住时就会有浮起(阴影加深)的效果了。(需要为cardview设置onclicklistener)

假如给cardview设置了app:cardElevation=”5dp”属性,即纵深的深度,则还需要写上app:cardPreventCornerOverlap=”false”

app:cardUseCompatPadding=”true”防止在5.0以下和5.0以上系统中cardview自动预留的margin不一样的问题。详情参见http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1025/3621.html

假如想在5.0以下的手机上也实现同样的效果,只能使用第三方库了,如com.balysv.materialripple.MaterialRippleLayout

android涟漪效果,在5.0以上手机上用系统原生方式实现波纹涟漪效果相关推荐

  1. android自定义控件几种,Android 自定义View一个控件搞定多种水波纹涟漪扩散效果 - CSDN博客...

    效果图 实现思路 这个效果实现起来并不难,重要的是思路 此View满足了多种水波纹涟漪扩散效果,这要求它能满足很多的变化 根据上面的样式,可以看出此View需要满足以下变化 圆圈从中心可循环向外扩散 ...

  2. Android: Jetpack Compose如何禁用涟漪(水波纹)效果

    系列文章目录 Android: Jetpack Compose如何禁用涟漪(水波纹)效果 Android:使用Jetpack Compose 实现Text控件跑马灯效果 Android:使用Jetpa ...

  3. Android 7.0真实上手体验

    Android 7.0真实上手体验 Android 7.0的首个开发者预览版发布了,支持的设备只有Nexus6.Nexus 5X.Nexus 6P.Nexus 9.Nexus Player.Pixel ...

  4. Android Studio 配置OpenCV4.4.0 不用安装OpenCV Manager (泪崩居然用了礼拜天2天的时间居然还没配置成功,今天又看了下配置成功了)

    Android Studio 配置OpenCV4.4.0 ,说来惭愧居然用户礼拜天2天的时间呢,期间遇到的问题大致有4个问题 这里我也总结出了最后在列举出来,(可能是新版和之前旧版本不一样的问题按照网 ...

  5. 【转】Vue.js 2.0 快速上手精华梳理

    Vue.js 2.0 快速上手精华梳理 Sandy 发掘代码技巧:公众号:daimajiqiao 自从Vue2.0发布后,Vue就成了前端领域的热门话题,github也突破了三万的star,那么对于新 ...

  6. Android 获取系统语言(兼容7.0)

    转载连接:http://likfe.com/2017/05/10/android-sys-language/ 前言 获取系统当前语言是一个比较常用的功能,在 Android 7.0 系统上旧函数获取到 ...

  7. android 自定义帧动画,Android 自定义方式实现帧动画效果

    前言 首先说下为啥要通过自定义处理的方式去实现Android的帧动画效果,因为通过系统原生支持的xml和java代码这两种方式实现,在播放的图片量很多时,会出现内存溢出,此现象也是在做项目当中有遇到, ...

  8. android 5.0状态栏下载地址,Android沉浸式状态栏(5.0以上系统)

    Android沉浸式状态栏(5.0以上系统) 沉浸式状态栏可以分为两种: 1.直接给状态栏设置颜色 (如下图:) 这里写图片描述 java代码形式: if (Build.VERSION.SDK_INT ...

  9. 代码android点击效果,GitHub - likaiyuan559/TouchEffects: Android View点击特效TouchEffects,几行代码为所有控件添加点击效果...

    Android 点击特效TouchEffects TouchEffects能够帮助你更快速方便的增加点击时候的效果,TouchEffects的目标是打造一个稳定.全面.且能更方便的自定义及个性化的一款 ...

最新文章

  1. 4月23日遇到的问题
  2. python运行速度和电脑配置有关系吗-学python最电脑配置有要求么
  3. eigrp配置实验_路由器 OSPF 动态路由配置
  4. 如何加快按生产订单查找物料凭证的报表的速度
  5. Python实现鸢尾花数据集分类问题——基于skearn的SVM(有详细注释的)
  6. OMNeT++学习程序 4
  7. XSS 跨站脚本攻击 的防御解决方案
  8. php中vc14是什么意思,VC9、VC11、VC14、VC15是啥?
  9. java 社招 简历_招聘java简历模板
  10. 记录下在linux下编译java源程序
  11. Linux 初始化 init 系统(一)
  12. 离心泵CAE_2_ICEM剖分网格_2_叶轮流道
  13. matlab 调速系统试验,实验三-双闭环直流调速系统MATLAB仿真.doc
  14. BOM有效日期的设置
  15. 懒人脚本查看本机IP地址
  16. android p 小米6,小米6还能再战几年!将升级Android P
  17. List总结(LinkedList, ArrayList等使用场景和性能分析) [From skywang12345 ]
  18. vue防止用户恶意点击按钮
  19. 电瓶车充电桩收费平台在福建学校的应用
  20. ESP32-NVS存储(非易失性存储库)

热门文章

  1. xib、stoaryboard详解
  2. python字体有哪些种类_Python的数据类型(字符串类型),python
  3. 【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
  4. 计算机文档加密如何解锁,电脑提示文档已被administrator锁定怎么办
  5. mysql update convert_Oracle/云MySQL/MsSQL“大迁移”真相及最优方案
  6. STL容器——案例版
  7. 转载:分布式Session共享:tomcat+memcached实现session共享
  8. python爬虫模式_python爬虫的入门试炼
  9. 应对SOX法案的挑战
  10. ACWing n-皇后问题