android 上拉隐藏布局,Recycleview上拉隐藏与下拉显示
我们先来看看效果
继承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上拉隐藏与下拉显示相关推荐
- HTML5期末考核大作业:美食主题网站设计——沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript
HTML5期末大作业:美食主题网站设计--沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制 ...
- HTML5期末考核大作业:美食主题网站设计——沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript (1)
HTML5期末大作业:美食主题网站设计--沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制 ...
- android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...
Android开发中利用ListView实现一个渐变式的下拉刷新动画 发布时间:2020-11-23 16:50:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关Androi ...
- 安卓吸顶+下拉放大_Android自定义scrollView实现顶部图片下拉放大
本文实例为大家分享了scrollView实现顶部图片下拉放大的具体代码,供大家参考,具体内容如下 之前的scrollView顶部图片下拉放大在之后的项目用到了几次,但没次都写在Activity中很麻烦 ...
- 下拉推广系统立择火星推荐_下拉词优化不仅仅优化百度,其实还可以优化抖音、京东和阿里巴巴...
金大侠说有人的地方就有江湖,我说有搜索的地方就会有下拉优化.这个搜索不单指大众搜索引擎,包括一切有搜索应用的地方.例如,我们在天猫平台搜索自己需要的商品,我们在微信搜索公众号文章,我们在抖音搜索短视频 ...
- 下拉推广系统立择火星推荐_下拉词删除都择火星下拉
会员注册发帖 做推广的人都离不开搜索引擎,就像鱼离不开水,很多时候我们做SEO的朋友都在研究各大搜索引擎的机制,收录,排名规则或者是黑帽技术,不管如何,只是希望把自己的企业,产品,服务在搜索上得到更多 ...
- jqgrid表格下拉搜索多选框优化—使用select下拉多选插件
jqgrid表格插件应该是表格插件中最强大吧,最近项目需要使用jqgrid但又要根据项目需求进行一些私人订制,还好jqgrid的源码写清晰易懂. jqgrid有个下拉搜索的功能,我们先看下官网的展示, ...
- 开发一个出生年份的下拉选择框供用户选择_关于下拉式菜单,这一篇足够了
下拉菜单主要有两种类型: 1.用于导航的下拉菜单: 2.用于表单的下拉菜单. 在本文中,我们将对以下内容进行介绍: 01 结构剖析 下拉菜单的解剖结构与文本输入字段的解剖结构非常相似. 02 下拉菜单 ...
- 下拉推广系统立择火星推荐_下拉词推广权威易速达
做推广的人都离不开搜索引擎,就像鱼离不开水,很多时候我们做SEO的朋友都在研究各大搜索引擎的机制,收录,排名规则或者是黑帽技术,不管如何,只是希望把自己的企业,产品,服务在搜索上得到更多的展现机会,今 ...
最新文章
- 【震惊】漱口水居然增加糖尿病,高血压发病率
- activiti自己定义流程之整合(五):启动流程时获取自己定义表单
- 常用数学符号读法大全
- 八进制、十进制、十六进制及字符相互对应表
- mysql5.6兼容包_freebsd9.1源码安装apache、mysql、php环境(亲侧通过)
- 解决express video 手机无法播放的问题
- 手把手教你搭建数据库服务器平台 | DBA VS 自动化运维,究竟谁与争锋?
- Oracle:数据类型速记
- Allegro导入Altium Designer的pcb文件
- win7安装iis及web配置教程
- 360 电脑重装系统服务器,电脑如何重装系统?360快速重装电脑系统教程
- 实现isodd() 参数为整数,如果整数为基数,返回True 否则返回False
- PV 和 UV 的区别
- 启动jupyter notebook链接不上内核 + 终端报错:Replacing stale connection
- 什么是倒排索引?(转)
- 新浪微博营销的方式与技巧都有哪些呢?
- Mac 10.12安装Go2Shell在资源管理器快速打开Shell并跳转到指定位置
- Groovy~Groovy的Map操作
- PyCharm下利用pyqt对话框打开图片,显示
- lib库反编译C语言,C语言静态链接库(lib)与动态链接库(dll)
热门文章
- Flask 重复启动
- python肘部法则 最优分类
- python元素平方和,模长
- opencv中traincascade训练分类器
- MATLAB中floor、round、ceil、fix区别
- Java从基础进阶到高手
- matlab axes标题,Matlab 坐标轴(axes),数据提示(data cursor),标题(title)等的默认字体问题...
- JAVA计算应缴住房基金,事业单位的住房基金如何核算?
- ajax只能用get吗,基本的Ajax,但无法使用GET或POST方法
- C语言利用Cairo图形库绘制太极图