实现监听屏幕上下左右滑动事件

前段时间为了实现这个功能在网上找了很多教程,发现很多教程都是很大的篇幅,对于像我这种一点都不了解的人GestureListener的人来说可能很难理解,动不动就是几百行代码,也不方便我们浏览到自己想要的信息。我那时就在想:其实我就只是想简单的实现监听屏幕的滑动事件,哪用得着这么麻烦。

之后经过大量的查找,才发现实现这个功能的简单方法,通过继承GestureDetector的SimpleOnGestureListener这个类然后重写onFling方法在里面实现相应的逻辑就完成了这个功能,下面是代码:

public class MainActivity extends AppCompatActivity {

//定义滑动的最小距离

private static final int MIN_DISTANCE=100;

private GestureDetector gestureDetector;

private MyGestureDetector myGestureDetector;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//实例化MyGestureDetector

myGestureDetector=new MyGestureDetector();

//实例化GestureDetector并将MyGestureDetector实例传入

gestureDetector=new GestureDetector(this,myGestureDetector);

}

/**

* 重写onTouchEvent返回一个gestureDetector的屏幕触摸事件

*/

@Override

public boolean onTouchEvent(MotionEvent event) {

return gestureDetector.onTouchEvent(event);

}

/**

* 自定义MyGestureDetector类继承SimpleOnGestureListener

*/

class MyGestureDetector extends GestureDetector.SimpleOnGestureListener{

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

if(e1.getX()-e2.getX()>MIN_DISTANCE){

Toast.makeText(MainActivity.this,"左滑",Toast.LENGTH_SHORT).show();

}else if(e2.getX()-e1.getX()>MIN_DISTANCE){

Toast.makeText(MainActivity.this,"右滑",Toast.LENGTH_SHORT).show();

}else if(e1.getY()-e2.getY()>MIN_DISTANCE){

Toast.makeText(MainActivity.this,"上滑",Toast.LENGTH_SHORT).show();

}else if(e2.getY()-e1.getY()>MIN_DISTANCE){

Toast.makeText(MainActivity.this,"下滑",Toast.LENGTH_SHORT).show();

}

return true;

}

}

}

这个方法相比起实现GestureDetector.OnGestureListener要方便得多,GestureDetector.OnGestureListener必须要重写下面的所有方法:

按下(onDown):刚刚手指接触到触摸屏的那一刹那,就是触的那一下。

抛掷(onFling):手指在触摸屏上迅速移动,并松开的动作。

长按(onLongPress):手指按在持续一段时间,并且没有松开。

滚动(onScroll):手指在触摸屏上滑动。

按住(onShowPress):手指按在触摸屏上,它的时间范围在按下起效,在长按之前。

抬起(onSingleTapUp)手指离开触摸屏的那一刹那。

而GestureDetector.SimpleOnGestureListener只需要选择对我们需要重写的方法重写,显得更加的简单,想重写什么方法就重写什么方法。

android 触摸监听重写_Android监听屏幕的滑动事件相关推荐

  1. Android监听屏幕的滑动事件

    实现监听屏幕上下左右滑动事件 前段时间为了实现这个功能在网上找了很多教程,发现很多教程都是很大的篇幅,对于像我这种一点都不了解的人GestureListener的人来说可能很难理解,动不动就是几百行代 ...

  2. Android 7.1 增加屏幕边缘滑动事件(手势滑动)两种方式(Back,Home,Menu功能键) 免开启无障碍功能

    目前公司在做新项目开发,项目目前是不让有Back,Home,Menu实体按键,这就导致了一个问题,点开其它应用无法返回到桌面, 当然些问题对于做开发的我们肯定是难不到的,如果我们开发碰到这问题肯定是a ...

  3. android 安装卸载应用提醒_Android监听程序的安装和卸载

    在android系统中,安装和卸载都会发送广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播.可以通过intent.getDataString() ...

  4. adb inputswipe shell_[Android]通过adb shell input上报命令模拟屏幕点击事件【转】

    常用的 input上报命令: input text 1234 实际向界面注入1234文字,有输入框,能明显看到效果 input keyevent 4 键盘事件,4 为返回 input tap 100 ...

  5. [Android]通过adb shell input上报命令模拟屏幕点击事件

    常用的 input上报命令: input text 1234 实际向界面注入1234文字,有输入框,能明显看到效果 input keyevent 4 键盘事件,4 为返回 input tap 100 ...

  6. android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)

    ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...

  7. Android实现来电和去电的监听

    写个实例实现Android中来电和去电的监听,来电可以使用PhoneStateListener对电话状态的改变进行监听,去电需要动态或者静态去注册广播接收器,对去电进行监听: 来电: 来电所对应的三种 ...

  8. android listview分区域监听,listview的监听事件

    package JAVASwing;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionE ...

  9. Android广播接实现电话的监听(电话的状态,拦截)

    Android广播接实现电话的监听 1:需要在AndroidManifest.xml清单中添加权限 <uses-permission android:name="android.per ...

最新文章

  1. BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览
  2. 蓝牙驱动卸载后自动安装_智能产品 | 安装水循环系统后,全自动洗车机洗车会更节水吗?...
  3. python如何下载库_python中如何下载库
  4. 攻防世界 php2,CTF-攻防世界-PHP2
  5. 趣学 C 语言(九)—— 复杂指针解析
  6. java-合并两个有序链表
  7. 使用Subline Text对比查找两个文档的不同
  8. 超级简单的 RocketMQ 流量削峰实战
  9. 一文带你走进网络编程
  10. C++游戏天堂——经典型(2)
  11. 分享一组超喜欢的粉色樱花高清壁纸~
  12. 【企查查】高级查询下突破导出5000条/10次限制思路tips,完整全量导出
  13. java与英语词汇_Java英语词汇表
  14. STM8S自学笔记之利用库函数点亮一个LED
  15. 银行业务学习之道:信用卡的具体功能
  16. “数据”到底是资产还是负债?
  17. 实训六:Web方式管理交换机
  18. java的抽象方法_java抽象方法是什么
  19. 基于HttpClient接口开发实例(一)
  20. 尚硅谷Manen2022----①基础概念,基础使用

热门文章

  1. PHP中 base64_decode与base64_encode加密解密函数
  2. PHP的postman请求的五种数据样式
  3. PHPExcel设置自动列宽
  4. uglifyjs报错 webpack_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置
  5. c语言 rand_C语言随机数
  6. Linux基础知识(1)
  7. engnix php 插件 管理_nginx配置支持php-fpm
  8. 虚拟磁盘类型_一起来了解一下Window10系统中虚拟硬盘的相关操作
  9. c在linux中怎样执行文件,如何在Linux中编译和运行C/C+程序,简单示例教懂你
  10. java 解析二进制_java实现解析二进制文件(字符串、图片)