在项目中需要实现item的渐变隐藏,一开始想复杂了,兜兜转转一圈才发现可以用最简单的方式实现。

效果如下:

需要源码的同学,转到github下载

一、方式

1.基本思路

这种简单的渐变隐藏效果,可以使用蒙层的思路去完成。也就是如图,我们可以在RecyclerView上添加一个透明度渐变的图层,这样随着透明度的减少,RecyclerView就渐变隐藏了。

2.蒙层的建立

透明渐变的图层需要用到LayerDrawableShapeDrawable,对应标签是<layer-list><shape>,通过在res/drawable文件夹下建立.xml文件进行定义。

<layer-list>通过设置item来进行不同drawable复合,而<shape>中的<gradient>用于设置渐变,<solid>用于设置纯色。

3.颜色数值的解析

#FFFFFF这种六位颜色数值的表示中,前两位代表透明度,后四位才代表具体的颜色。前两位为#FF代表完全不透明,#00代表完全透明。

比如淡紫色为#E6E6FA,是示例的背景色,那么蒙层只需要从#00E6E6FA#FFE6E6FA就可以实现透明到不透明的渐变。

二、代码解析

省略RecyclerView的创建代码,直接看布局文件。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"....android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerViewandroid:background="@color/colorbackground"android:id="@+id/recycleview"android:layout_width="match_parent"android:layout_height="match_parent"/><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/layer_list_mask"/></android.support.constraint.ConstraintLayout>

很简单的布局,我们只是在RecyclerView上,添加了一个同等大小的ImageView作为蒙层。

我们来看蒙层的代码,也就是上面的@drawble/layer_list_mask.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><!--透明渐变蒙层--><itemandroid:bottom="100dp"android:top="350dp"><shape android:shape="rectangle"><!--设置渐变--><gradientandroid:angle="-90"android:startColor="#00E6E6FA"android:endColor="#FFE6E6FA"/></shape></item><!--底部蒙层非透明--><itemandroid:height="100dp"android:gravity="bottom"><shape android:shape="rectangle"><!--设置纯颜色进行遮挡--><solid android:color="#FFE6E6FA" /></shape></item>
</layer-list>

笔者用<layer-list>标签让两个shape复合,而逐渐不透明的渐变 从顶部350dp开始,距离底部100dp的地方结束。最后,底部的100dp部分用纯色,就会遮挡住这一部分了。

你可以调整或者按着自己的思路来建立蒙层,达到期望的效果。

希望这篇文章可以有所帮助。

逐渐消失的Item! —— RecyclerView隐藏与渐变的实现相关推荐

  1. Android RecyclerView隐藏item的所在区域显示空白

    说明: RecyclerView隐藏当前item时候,由于为了优化性能,只是把内容隐藏,但是高度不会改变,这样就会出现一片空白区域. 解决方法: 手动改变隐藏的item高度为0. 代码: 比如要隐藏下 ...

  2. android标题栏渐变动画,Android 顶部标题栏随滑动时的渐变隐藏和渐变显示效果

    各位早上好,话不多说,先上效果图: 注意顶部:首页textview的变化(显示和隐藏)! 首先分析下:ui状态,其是由recyclerview添加头部组成+recyclerview 头部添加和recy ...

  3. Android炫酷的Toolbar+Bottom+Fab悬浮按钮显示、隐藏、渐变的各种实现姿势

    前言 由于手机屏幕大小的限制,各种控件需要根据需求进行显示,隐藏,移动等,以增加视觉效果,用户体验.就拿目前市场上常见的APP如知乎.QQ.淘宝.美团等来说,在他们的APP里面随处可见一些比较优美的处 ...

  4. Qt软件开发文档14---聊天窗口的实现,对QlistWidget点击item项隐藏虚线框的实现

    要实现如下对话窗口: 先声明一个封装类FeedBackListItem feedbacklistitem.h #ifndef FeedBackListItem_H #define FeedBackLi ...

  5. vue 自定义属性判断点击每个item 显示隐藏

    用到的知识点有循环读出列表 v-for  map 或 vue.set <!DOCTYPE html> <html ng-app="app"> <hea ...

  6. RecycleView Item设置隐藏会空白占位解决方案

    1.item设置gone后会空白占位 (1)itemIVew不能有margin,如果有的话替换成padding,否则不能隐藏空白区域:例如:<LinearLayout xmlns:android ...

  7. 在Recyclerview使用GlideAPP加载大量图片导致内存溢出(oom)

    网络上有很多解决的办法,但是都是在清理磁盘缓存和内存上做,并不能及时释放内存. 1.可以在每次请求数据和加载数据后调用 /** * 清除内存缓存. */public static void clear ...

  8. 20230218----重返学习-渐变及less预处理的VSCode插件

    day-010-ten-20230218-渐变及less预处理的VSCode插件 渐变 linear-gradient()函数用于创建一个表示两种或多种颜色线性渐变的图片.其结果属于gradient数 ...

  9. android顶部渐变显示,Android实现直播聊天区域顶部渐变效果

    背景 4月份开发直播时,有一个需求,需要实现一个RecylerView顶部渐变的效果 实际效果 解决思路 图层重叠处理(本质是alpha叠加出来的效果) 实现流程 保存一个图层,然后画渐变,最后再和原 ...

最新文章

  1. redis 安装启动及设置密码windows
  2. 弹性碰撞后速度方向_$1.1.1 弹性碰撞经典例题1——力学及运动学
  3. BCH到底该采用哪种交易排序规则?
  4. Centos7设置时区
  5. ignite windows无法访问linux ignite集群_Linux常见命令
  6. 遭遇sal.xls.exe
  7. sql server 2008学习5 sql基础
  8. MySQL replace into 用法
  9. pytorch自定义模型执行过程
  10. SVN或其他网盘类软件同步图标不显示的异常
  11. 论文解读丨Zero-Shot场景下的信息结构化提取
  12. r语言读取excel数据_R语言 | 更快的表格文件读取方法!
  13. mysql 版本太高_mysql创建新库以及解决版本过高8.0以上导致navicat无法连接的问题...
  14. 查看局域网内所有用户
  15. C语言易混淆关键词详解-const, static, extern, typedef, 声明
  16. 匿名函数lambda
  17. 让部署到服务器上的springboot项目持续运行(nohup)
  18. 【收藏】2018-2019届互联网大厂公司校招薪资汇总,基本年薪都在20万以上
  19. java思路_java编程的思路
  20. 清空RMON统计的数据

热门文章

  1. uniapp返回上一页
  2. solr6使用solrJ做XML数据导入
  3. Python Challenge 第0关
  4. HTML+CSS+JS网页设计期末课程大作业——多用途的图文展示博客HTML模板(16页) 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码...
  5. python不同颜色数值大小_python matplotlib:plt.scatter() 大小和颜色参数详解
  6. 音乐计算机生日快乐歌曲,生日快乐
  7. Java并发之Semaphore源码解析
  8. 向最优秀的人学习:大自然如何激发人工智能研究
  9. win10更新补丁KB5006670后无法共享打印机
  10. 单播、广播和多播地址以及组播ip与组播mac间的换算