我们先来看看效果

继承RecyclerView.OnScrollListener重写onScrolled方法,同时定义两个抽象方法供我们处理隐藏和显示事件

public abstract class HidingScrollListener extends RecyclerView.OnScrollListener {

private static final int HIDE_THRESHOLD = 20;

private int scrolledDistance = 0;

private boolean controlsVisible = true;

@Override

public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

super.onScrolled(recyclerView, dx, dy);

if (scrolledDistance > HIDE_THRESHOLD && controlsVisible) {

onHide();

controlsVisible = false;

scrolledDistance = 0;

}

else if (scrolledDistance < -HIDE_THRESHOLD && !controlsVisible) {

onShow();

controlsVisible = true;

scrolledDistance = 0;

}

if ((controlsVisible && dy > 0) || (!controlsVisible && dy < 0)) {

scrolledDistance += dy;

}

}

public abstract void onHide();

public abstract void onShow();

}

事件的处理

recyclerView.addOnScrollListener(new HidingScrollListener() {

@Override

public void onHide() {

Resources resources = MainActivity.this.getResources();

DisplayMetrics dm = resources.getDisplayMetrics();

float density = dm.density;

int width = dm.widthPixels;

int height = dm.heightPixels;

fab.animate()

.translationY(height - fab.getHeight())

.setInterpolator(new AccelerateInterpolator(2))

.start();

buttom.animate()

.translationY(height - buttom.getHeight())

.setInterpolator(new AccelerateInterpolator(2))

.setDuration(800)

.start();

top.animate()

.translationY(-height)

.setDuration(800)

.setInterpolator(new AccelerateInterpolator(2))

.start();

}

@Override

public void onShow() {

fab.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start();

buttom.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).setDuration(800).start();

top.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).setDuration(800).start();

}

});

布局文件

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

android:id="@+id/recyclerview"

android:layout_width="match_parent"

android:clipToPadding="false"

android:paddingTop="?attr/actionBarSize"

android:layout_height="match_parent"/>

android:id="@+id/top"

android:layout_width="match_parent"

android:layout_height="52dp"

android:background="#f00"

android:orientation="vertical">

android:id="@+id/buttom"

android:layout_width="match_parent"

android:layout_height="52dp"

android:layout_gravity="bottom"

android:background="#f00"

android:orientation="vertical">

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom|right"

android:layout_marginBottom="40dp"

app:borderWidth="0dp"

/>

android 上拉隐藏布局,Recycleview上拉隐藏与下拉显示相关推荐

  1. HTML5期末考核大作业:美食主题网站设计——沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript

    HTML5期末大作业:美食主题网站设计--沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制 ...

  2. HTML5期末考核大作业:美食主题网站设计——沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript (1)

    HTML5期末大作业:美食主题网站设计--沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制 ...

  3. android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...

    Android开发中利用ListView实现一个渐变式的下拉刷新动画 发布时间:2020-11-23 16:50:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关Androi ...

  4. 安卓吸顶+下拉放大_Android自定义scrollView实现顶部图片下拉放大

    本文实例为大家分享了scrollView实现顶部图片下拉放大的具体代码,供大家参考,具体内容如下 之前的scrollView顶部图片下拉放大在之后的项目用到了几次,但没次都写在Activity中很麻烦 ...

  5. 下拉推广系统立择火星推荐_下拉词优化不仅仅优化百度,其实还可以优化抖音、京东和阿里巴巴...

    金大侠说有人的地方就有江湖,我说有搜索的地方就会有下拉优化.这个搜索不单指大众搜索引擎,包括一切有搜索应用的地方.例如,我们在天猫平台搜索自己需要的商品,我们在微信搜索公众号文章,我们在抖音搜索短视频 ...

  6. 下拉推广系统立择火星推荐_下拉词删除都择火星下拉

    会员注册发帖 做推广的人都离不开搜索引擎,就像鱼离不开水,很多时候我们做SEO的朋友都在研究各大搜索引擎的机制,收录,排名规则或者是黑帽技术,不管如何,只是希望把自己的企业,产品,服务在搜索上得到更多 ...

  7. jqgrid表格下拉搜索多选框优化—使用select下拉多选插件

    jqgrid表格插件应该是表格插件中最强大吧,最近项目需要使用jqgrid但又要根据项目需求进行一些私人订制,还好jqgrid的源码写清晰易懂. jqgrid有个下拉搜索的功能,我们先看下官网的展示, ...

  8. 开发一个出生年份的下拉选择框供用户选择_关于下拉式菜单,这一篇足够了

    下拉菜单主要有两种类型: 1.用于导航的下拉菜单: 2.用于表单的下拉菜单. 在本文中,我们将对以下内容进行介绍: 01 结构剖析 下拉菜单的解剖结构与文本输入字段的解剖结构非常相似. 02 下拉菜单 ...

  9. 下拉推广系统立择火星推荐_下拉词推广权威易速达

    做推广的人都离不开搜索引擎,就像鱼离不开水,很多时候我们做SEO的朋友都在研究各大搜索引擎的机制,收录,排名规则或者是黑帽技术,不管如何,只是希望把自己的企业,产品,服务在搜索上得到更多的展现机会,今 ...

最新文章

  1. 【震惊】漱口水居然增加糖尿病,高血压发病率
  2. activiti自己定义流程之整合(五):启动流程时获取自己定义表单
  3. 常用数学符号读法大全
  4. 八进制、十进制、十六进制及字符相互对应表
  5. mysql5.6兼容包_freebsd9.1源码安装apache、mysql、php环境(亲侧通过)
  6. 解决express video 手机无法播放的问题
  7. 手把手教你搭建数据库服务器平台 | DBA VS 自动化运维,究竟谁与争锋?
  8. Oracle:数据类型速记
  9. Allegro导入Altium Designer的pcb文件
  10. win7安装iis及web配置教程
  11. 360 电脑重装系统服务器,电脑如何重装系统?360快速重装电脑系统教程
  12. 实现isodd() 参数为整数,如果整数为基数,返回True 否则返回False
  13. PV 和 UV 的区别
  14. 启动jupyter notebook链接不上内核 + 终端报错:Replacing stale connection
  15. 什么是倒排索引?(转)
  16. 新浪微博营销的方式与技巧都有哪些呢?
  17. Mac 10.12安装Go2Shell在资源管理器快速打开Shell并跳转到指定位置
  18. Groovy~Groovy的Map操作
  19. PyCharm下利用pyqt对话框打开图片,显示
  20. lib库反编译C语言,C语言静态链接库(lib)与动态链接库(dll)

热门文章

  1. Flask 重复启动
  2. python肘部法则 最优分类
  3. python元素平方和,模长
  4. opencv中traincascade训练分类器
  5. MATLAB中floor、round、ceil、fix区别
  6. Java从基础进阶到高手
  7. matlab axes标题,Matlab 坐标轴(axes),数据提示(data cursor),标题(title)等的默认字体问题...
  8. JAVA计算应缴住房基金,事业单位的住房基金如何核算?
  9. ajax只能用get吗,基本的Ajax,但无法使用GET或POST方法
  10. C语言利用Cairo图形库绘制太极图