专栏首页恩蓝脚本Android实现双击TitleBar回顶部的功能示例代码

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毫秒

就是这么简单,一个好的封装,可以省多少事呀!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn的支持。

参考

https://github.com/TakWolf/CNode-Material-Design

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅谈Android设计模式学习之观察者模式

    观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统、订阅——发布系统等。因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做...

    砸漏
  • Android中Retrofit的简要介绍

    Retrofit是一个可用于Android和Java的网络库,使用它可以简化我们的网络操作,提高效率和正确率。它将请求过程和底层代码封装起来只暴露我们业务中的请...

    砸漏
  • Android自定义Banner轮播效果

    本文实例为大家分享了Android自定义Banner轮播效果展示的具体代码,供大家参考,具体内容如下

    砸漏
  • 这可能是我第一次这么认值的写 README

    本项目是一个在线的 IM 系统,打开网页即用,非常方便,项目采用 Flask 搭建。

    周萝卜
  • 也谈状态模式

    看到上面的这个状态转换图,一般来说我们还想不到用状态机模式去解决,因为太简单了,简单得可能几行代码就处理了。

    小君君
  • 大数据安全利器ranger 编译安装

    ranger大数据领域的一个集中式安全管理框架,它可以对诸如hdfs、hive、kafka、storm等组件进行细粒度的权限控制。本文将介绍部署过程

    July
  • Android 5秒学会使用手势解锁功能

    本文讲述的是一个手势解锁的库,可以定制显示隐藏宫格点、路径、并且带有小九宫格显示图,和震动!让你学会使用这个简单,高效的库!

    砸漏
  • Android极速开发之设备管理器(DevicePolicyManager)

    Android 2.2 SDK提供了一个可管理和操作设备的API叫DevicePolicyManager(这是设备管理的主类),使用这个API你可以接管手机的应...

    Javen
  • 行业 | 解决二手车交易签约难题,电子合同成行业刚需

    随着人们消费观念的改变和生活水平的提高,人们对日常出行、长途交通及自驾游的需求日益旺盛。二手车交易不仅能够满足部分资金紧缺购车人群的需求,还可为换车人群提供一个...

    法大大电子合同
  • android实现App第一次进入时的引导学习界面

    因为我们所熟知的Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成。所以说,当我们想显示一个界面的时候,我...

    战神伽罗

扫码关注云+社区

领取腾讯云代金券