前言


我们在使用QQ聊天的时候,或者说看网易新闻的时候,经常到会进到入聊天详情界面,以及新闻详情界面之后想要返回出来,这个时候我们一般习惯的就是点击左上角的返回按钮,但是这个按钮对于屏幕稍微大一些的手机来说就会变得相当的吃力,所以说就有了app 常用的一个功能-右滑返回。

正文


针对于右滑返回我们需要考虑的就两点一个就是右滑的水平距离,以及右滑的水平速度获取到这两个值以后,对于我们的临界值如果超过了我们就直接结束当前的activity并且再加载一个activity退出的动画就可以了。获取水平的位移会比较简单,关键是要如何获取到水平滑动的速度。这里的话就需要用到一个类—-VelocityTracker

VelocityTracker

VelocityTracker主要应用于touch even。, VelocityTracker通过跟踪一连串事件实时计算出当前的速度

android.view.VelocityTracker主要用跟踪触摸屏事件(flinging事件和其他gestures手势事件)的速率。用addMovement(MotionEvent)函数将Motion event加入到VelocityTracker类实例中.你可以使用getXVelocity() 或getXVelocity()获得横向和竖向的速率到速率时,但是使用它们之前请先调用computeCurrentVelocity(int)来初始化速率的单位 。
以上的几句话就概括了VelocityTracker的基本用法了。
下来我们看看具体的代码实现吧:

@Override
public boolean dispatchTouchEvent(MotionEvent event) {createVelocityTracker(event);switch (event.getAction()) {case MotionEvent.ACTION_DOWN:xDown = event.getRawX();break;case MotionEvent.ACTION_MOVE:break;case MotionEvent.ACTION_UP:xMove = event.getRawX();//活动的距离int distanceX = (int) (xMove - xDown);//获取顺时速度int xSpeed = getScrollVelocity();//当滑动的距离大于我们设定的最小距离且滑动的瞬间速度大于我们设定的速度时,返回到上一个activityif(distanceX > XDISTANCE_MIN && xSpeed > XSPEED_MIN) {finish();overridePendingTransition(R.anim.in_from_left,R.anim.out_from_right);return true;}recycleVelocityTracker();break;default:break;}return  super.dispatchTouchEvent(event);
}/*** 创建VelocityTracker对象,并将触摸content界面的滑动事件加入到VelocityTracker当中。** @param event**/
private void createVelocityTracker(MotionEvent event) {if (mVelocityTracker == null) {mVelocityTracker = VelocityTracker.obtain();}mVelocityTracker.addMovement(event);
}/*** 回收VelocityTracker对象。*/
private void recycleVelocityTracker() {mVelocityTracker.recycle();mVelocityTracker = null;
}/*** 获取手指在content界面滑动的速度。** @return 滑动速度,以每秒钟移动了多少像素值为单位。*/
private int getScrollVelocity() {mVelocityTracker.computeCurrentVelocity(1000);int velocity = (int) mVelocityTracker.getXVelocity();return Math.abs(velocity);
}

TesterHome android app 编写历程(六)相关推荐

  1. android开发答题app,Android APP编写简单答题器

    本文为大家分享了Android APP编写的简单答题器,此答题器可以通过Next按钮选择下一题,新写题目的类Question,有两个成员变量. java代码: package com.android. ...

  2. android 选择答题功能,Android APP编写简单答题器

    本文为大家分享了Android APP编写的简单答题器,此答题器可以通过Next按钮选择下一题,新写题目的类Question,有两个成员变量. java代码: package com.android. ...

  3. Android(java)学习笔记63:Clock App 编写报错01

    1. 首先我们二话不说直接先看报错内容如下: 07-12 08:25:03.572: E/dalvikvm(3602): native fork pid:0 done. 07-12 08:25:03. ...

  4. Android Studio 编写无限查看QQ闪照APP

    Android Studio 编写无限查看QQ闪照APP 原理   QQ闪照在查看了之后就会立即删除,但是在查看之前,它会保存在你的手机里,它在你手机里的路径是:         "内部储存 ...

  5. 不反编译、无逆向基础也能轻松编写Android App Hook插件? Xposed的远房表弟,Hookworm来也!

    前言 Xposed的大名相信很多同学都不陌生,它提供了一种能力,可以在不修改原apk的情况下,以插件的方式改变目标App的某些行为. 但随着Android系统版本的迭代,原来的Xposed已经不适合在 ...

  6. android 开发工具历程_Android app应用软件开发的艰辛历程

    [摘要]对于从一个零基础学习android开发的技术人员来说,能够对android app源码有点了解已经是不错的了,在android app 市场里,大多android app都是新手技术开发者的初 ...

  7. android app 自动更新,AndroidUpdateDemo

    Android课程-App更新策略 @(Android) 第一节 课程介绍 概述 App更新是应用当中很常见的一个功能,基本上联网的app都应该具备这样的功能,对于更新迭代比较快速的产品,应用更新升级 ...

  8. Android App 瘦身总结 第三章 代码混淆及优化

    目录 一.代码混淆proguard 二.调整第三方库 三.环境差异依赖 四.代码习惯 五.插件化 六.总结 在前两章我们分别从图片资源和jni动态库这两个方面来分析apk瘦身的优化点 Android ...

  9. 小白记录第一个Android APP,VS2019,Xamarin,C#

    小白记录第一个Android APP,VS2019,Xamarin,C# 一.App功能需求及背景 二.参考 三.新建一个项目 四.设计App界面 五.编写代码 六.发布,生成Apk 七.安装测试 八 ...

  10. 写给Android App开发人员看的Android底层知识合集(1-8)

    写给Android App开发人员看的Android底层知识合集(1-8) 转自包老师:http://www.cnblogs.com/Jax/p/6864103.html 写给Android App开 ...

最新文章

  1. Unable to execute dex: Multiple dex files define Landroid/support/v4/app/ActivityCompatHoneycomb;
  2. MongoDB常用的操作命令(转)
  3. Oracle 存储过程,函数和包。
  4. 【C语言笔记初级篇】第一章:C语言快速入门及注意事项
  5. (草稿)如何判断一名UiPath开发人员是否合格?
  6. 中文版Visual Studio 2008 SP1 智能提示为英文的补丁发布
  7. c++语言自定义操作符,C++11新特性之自定义字面量
  8. 一文梳理序列化推荐算法模型进展
  9. 报错xmlbase 不兼容 expecting up to 23, got 24
  10. 计算机组成原理课程设计:复杂模型机
  11. 会计计算机论文,关于计算机论文格式模板,关于电算化会计相关论文范文资料...
  12. linux imx can 测试,在i.MX8QXP的MEK板上进行简单的CAN(FD)测试
  13. 分数阶微积分学薛定宇电子版_分数阶微积分及应用.pdf
  14. wds(无线分布式系统)
  15. The Derivation About CNN and Antoencoder
  16. uni-app:基于Vue的跨端框架(闪电演讲内容整理) | 掘金开发者大会
  17. Linux命令——系统管理
  18. 第十三章:项目相关方管理 - (13.1 识别相关方)
  19. Blender 显示键盘和鼠标操作
  20. win10如何快速创建一个记事本,可通过后缀改格式来达到自己的目的

热门文章

  1. Python 文件操作出现错误(result, consumed) = self._buffer_decode(data, self.errors, final)
  2. 年过八旬指的是多少岁
  3. Flink常用算子Transformation(转换)
  4. Elasticsearch系列—倒排索引原理
  5. linux-----基本操作指令(2)
  6. 单片机c语言程序编写步骤,Proteus运行Keil编写的51单片机C语言步骤
  7. 论文笔记:Auto-Encoding Scene Graphs for Image Captioning
  8. applet 打印的属性和配置
  9. 大学生学剪辑蒙太奇技巧怎么用?
  10. 深度学习读书笔记:DeepLearningBook - Chapter 9 - Conventional Networks