Android实现双击TitleBar回顶部的功能示例代码
作者:Tomoya 发布时间:2022-10-21 10:50:15
标签:android,双击回到顶部,titlebar
前言
本文介绍的内容是偶然发现的这个功能,就给移过来了,整理了一下,也是一个类就实现的,使用很方便
特别感谢@TakWolf大大的开源项目,学了好多Android方面的东西
双击返回顶部代码
public class DoubleClickBackToContentTopListener implements View.OnClickListener {
private final long delayTime = 300;
private long lastClickTime = 0;
private final IBackToContentTopView backToContentTopView;
public interface IBackToContentTopView {
void backToContentTop();
}
@Override
public final void onClick(View v) {
long nowClickTime = System.currentTimeMillis();
if (nowClickTime - lastClickTime > delayTime) {
lastClickTime = nowClickTime;
} else {
onDoubleClick(v);
}
}
public DoubleClickBackToContentTopListener(@NonNull IBackToContentTopView backToContentTopView) {
this.backToContentTopView = backToContentTopView;
}
public void onDoubleClick(View v) {
backToContentTopView.backToContentTop();
}
}
使用方法
public class CNodeActivity extends Activity implements
DoubleClickBackToContentTopListener.IBackToContentTopView {
private Toolbar toolbar;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cnode);
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(R.string.cnode);
toolbar.setNavigationOnClickListener(v -> this.finish());
toolbar.setOnClickListener(new DoubleClickBackToContentTopListener(this));
listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(//TODO);
initData();
}
private void initData() {
//TODO
}
@Override
public void backToContentTop() {
listView.setSelection(0);
}
}
说明一下,DoubleClickBackToContentTopListener类里的delayTime属性是双击之间的时间差,这里默认设置的是300毫秒
就是这么简单,一个好的封装,可以省多少事呀!
总结
参考
https://github.com/TakWolf/CNode-Material-Design
来源:https://tomoya92.github.io/2017/03/31/android-doubleclick-backtotop/


猜你喜欢
- Android:4.4.4一、应用场景在Android设备上,现在我们外接了一个USB转串口的设备,设备节点是/dev/ttyUSB0:#
- Actor模型是一种常见的并发模型,与最常见的并发模型——共享内存(同步锁)不同,它将程序分为许多独
- 在VS2019创建了项目,但生成解决方案时报错: 错误 NETSDK1004找不到资产文件“H
- 因工作需要,经常跟时间戳打交道,但是因为它仅仅是一个数字,我们很难直接看出它有什么意义,或两个时间戳之间究竟差了多长的间隔。于是从MSDN
- //创建excelobject missing = System.Reflection.Missing.Value;Excel.Applic
- 前言我们在 WPF 中使用绑定时可以使用 ElementName=Foo 这样的写法,并且还能够真的在运行时找到这个名称对应的对象,是因为
- 一、项目简述功能: 一套完整的网上花店商场系统,系统支持前台会员的注册 登陆系统留言,花朵的品种选择,详情浏览,加入购物 车,购买花朵等;后
- IDEA打成jar包并在windows后台运行一、IDEA打成jar包1、File=>Project Structure=>Pr
- 一、日志1、配置日志级别日志记录器(Logger)的行为是分等级的。如下表所示:分为:OFF、FATAL、ERROR、WARN、INFO、D
- 一、首先我们先大致了解一下什么是多线程。(书上的解释)程序是一段静态的代码,它是应用软件的蓝本。进程是程序的一次动态执行过程,对
- 本文实例讲述了C++实现的O(n)复杂度内查找第K大数算法。分享给大家供大家参考,具体如下:题目:是在一组数组(数组元素为整数,可正可负可为
- 简介该文档主要介绍以Nacos为配置中心,实现Spring Cloud GateWay 实现动态路由的功能。Spring Cloud Gat
- 当需要重绘TabControl的背景颜色时,有两种方法。方法一网上有很多文章介绍,将tabControl的DrawMode属性设为Owner
- C#过滤DataTable中的空数据和重复数据string sql = "select name,age from user&qu
- 简介相信大家有配置过多数据源,或者即将配置多数据的朋友们,会发现网上大概有以下几种方案:1. 使用 AOP 切片进行动态数据源切换2. 使用
- 源代码版本 : spring-webmvc-5.1.4.RELEASE概述PathMatcher是Spring的一个概念模型接口,该接口抽象
- 一、读线圈状态/// <summary> /// 读线圈状态测试 &nbs
- 样例代码在讲 Flutter 的盒子模型前,先看看HTML 中的盒子模型。如下图所示,一个页面元素包括了与父级容器的外边距(margin),
- 创建一个简单的项目:<?xml version="1.0" encoding="UTF-8"?
- 介绍MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。比如执行前、执行后或者对SQL结果集处理、sql入参处理等,这样就可以在