今天做的项目中,需要使用滑屏来调出一个界面,经过自己的尝试,结合网上的方法,成功实现了。

代码如下

  1. package com.example.text;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.GestureDetector;
  6. import android.view.GestureDetector.OnGestureListener;
  7. import android.view.Menu;
  8. import android.view.MenuItem;
  9. import android.view.MotionEvent;
  10. import android.widget.TextView;
  11.  
  12. public class MainActivity extends Activity implements OnGestureListener {
  13. private GestureDetector mGestureDetector;
  14. private TextView tv;
  15.  
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. tv=(TextView) findViewById(R.id.tv);
  21. //这个如果直接写一个this,会提示过时。另外,如果两个参数都写成this,会报错。原因不知
    mGestureDetector = new GestureDetector(MainActivity.this, this);
  22.  
  23. }
  24.  
  25. @Override
  26. public boolean onCreateOptionsMenu(Menu menu) {
  27. // Inflate the menu; this adds items to the action bar if it is present.
  28. getMenuInflater().inflate(R.menu.main, menu);
  29. return true;
  30. }
  31.  
  32. @Override
  33. public boolean onOptionsItemSelected(MenuItem item) {
  34. // Handle action bar item clicks here. The action bar will
  35. // automatically handle clicks on the Home/Up button, so long
  36. // as you specify a parent activity in AndroidManifest.xml.
  37. int id = item.getItemId();
  38. if (id == R.id.action_settings) {
  39. return true;
  40. }
  41. return super.onOptionsItemSelected(item);
  42. }
  43. @Override
  44. public boolean onTouchEvent(MotionEvent event) {
  45. // TODO Auto-generated method stub
  46.  
  47. //通过event自动判断手势,回调相应的方法
  48. return mGestureDetector.onTouchEvent(event);
  49.  
  50. }
    //按下屏幕触发,打印的是坐标
     @Override
  51. public boolean onDown(MotionEvent arg0) {
  52. // TODO Auto-generated method stub
  53. tv.setText(arg0.getX()+" "+arg0.getY());
  54. return false;
  55. }
    //滑动屏幕的时候触发,打印的分别是起点跟终点的坐标
     @Override
  56. public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2,
  57. float arg3) {
  58. // TODO Auto-generated method stub
  59. tv.setText("arg1.getX()="+arg1.getX()+" arg0.getX()="+arg1.getY()+" arg2="+arg2+" arg3="+arg3);
  60. return true;
  61. }
  62.  
  63. @Override
  64. public void onLongPress(MotionEvent arg0) {
  65. // TODO Auto-generated method stub
  66.  
  67. }
  68.  
  69. @Override
  70. public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
  71. float arg3) {
  72. // TODO Auto-generated method stub
  73. return false;
  74. }
  75.  
  76. @Override
  77. public void onShowPress(MotionEvent arg0) {
  78. // TODO Auto-generated method stub
  79.  
  80. }
  81.  
  82. @Override
  83. public boolean onSingleTapUp(MotionEvent arg0) {
  84. // TODO Auto-generated method stub
  85. return false;
  86. }
  87. }

这个类的使用步骤如下

1.定义手势类:private GestureDetector mGestureDetector;

2.初始化类:这个是跟其他控件设置监听一样的,有多种方法

  1)匿名内部类:

  1. mGestureDetector = new GestureDetector(MainActivity.this, new OnGestureListener() {
  2.  
  3. @Override
  4. public boolean onSingleTapUp(MotionEvent arg0) {
  5. // TODO Auto-generated method stub
  6. return false;
  7. }
  8.  
  9. @Override
  10. public void onShowPress(MotionEvent arg0) {
  11. // TODO Auto-generated method stub
  12.  
  13. }
  14.  
  15. @Override
  16. public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
  17. float arg3) {
  18. // TODO Auto-generated method stub
  19. return false;
  20. }
  21.  
  22. @Override
  23. public void onLongPress(MotionEvent arg0) {
  24. // TODO Auto-generated method stub
  25.  
  26. }
  27.  
  28. @Override
  29. public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2,
  30. float arg3) {
  31. // TODO Auto-generated method stub
  32. return false;
  33. }
  34.  
  35. @Override
  36. public boolean onDown(MotionEvent arg0) {
  37. // TODO Auto-generated method stub
  38. return false;
  39. }
  40. });

  2).直接让主类继承:

  1. public class MainActivity extends Activity implements OnGestureListener{
  2.  
  3. }

  3).内部类

  1. class MyOnGestureListener implements OnGestureListener{
  2.  
  3. }

3.在onTouchEvent()事件中使用这个类

  1. @Override
  2. public boolean onTouchEvent(MotionEvent event) {
  3. // TODO Auto-generated method stub
  4.  
  5. //通过event自动判断手势,回调相应的方法
  6. return mGestureDetector.onTouchEvent(event);
  7.  
  8. }

不过,现在还有一点不是很明白,就是方法中的return false跟return true有什么区别

GestureDetector- 滑屏手势方式实现的更多相关文章

  1. H5案例分享:移动端touch事件判断滑屏手势的方向

    移动端touch事件判断滑屏手势的方向 方法一 当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和纵坐标startY: 当触发touchmove事件时,在获取此时手指的横坐标 ...

  2. android 添加左右滑屏手势

    今天要在自己的项目中添加左右滑动,实现日期的加减(原来已经做了加减按键).滑动在一个中间的layout中进行 思路:添加左右划屏幕判断,得到判断后模拟加减按键按下. 模拟按键按下用 mbotton.p ...

  3. (转)【移动开发】Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)

    转自: http://smallwoniu.blog.51cto.com/3911954/1308959 现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习 ...

  4. Android中三种超实用的滑屏方式汇总(转载)

    Android中三种超实用的滑屏方式汇总   现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于 ...

  5. H5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...

  6. Android之滑屏动画和自定义控件

    滑屏动画 在Android系统中,通过手势识别切换界面时,通常会在界面切换时加入动画,以提高用户的体验效果,这种动画一般都采用平移动画,下一个界面进入时,上一个界面移除屏幕. 图中标识的均为左上角坐标 ...

  7. H5案例分享:移动端滑屏 touch事件

    移动端滑屏 touch事件 移动端触屏滑动的效果的效果在电子设备上已经被应用的越来越广泛,类似于PC端的图片轮播,但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件.处理touch ...

  8. 利用轮播原理结合hammer.js实现简洁的滑屏功能

    最近有个任务,做一个非常小的h5的应用,只有2屏,需要做横向的全屏滑动切换和一些简单的动画效果,之前做这种东西用的是fullpage.js和jquery,性能不是很好,于是就想自己动手弄一个简单的东西 ...

  9. 滑屏 H5 开发实践九问

    滑屏的交互形式自从在 H5 中流行起来,便广泛应用在产品宣传.广告.招聘和活动运营等场景中,作为微信朋友圈广告惯用的形式,其影响力更是得到了强化与放大.如今滑屏H5可谓玲琅满目,数不尽数. 作为一个 ...

随机推荐

  1. Python学习笔记(3)--数据结构之列表list

    Python的数据结构有三种:列表.元组和字典 列表(list) 定义:list是处理一组有序项目的数据结构,是可变的数据结构. 初始化:[], [1, 3, 7], ['a', 'c'], [1, ...

  2. Python学习笔记(1)--Windows基本环境搭建

    1.安装Python 官网下载地址:https://www.python.org/downloads/ 下载完成后安装选择自定义安装,并勾选自动填写环境变量,如果是默认安装,还需要自己手动配置环境变量 ...

  3. Select For update语句浅析

    Select -forupdate语句是我们经常使用手工加锁语句.通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作.同时,在多版本一致读机制的支持下,select语句也不 ...

  4. C++模板中重要的术语

  5. 【python下使用OpenCV实现计算机视觉读书笔记2】图像与字节的变换

    import cv2 import numpy import os # Make an array of 120,000 random bytes. randomByteArray = bytearr ...

  6. 23. Angular 中用 a 标签 href 路由时在浏览器中显示异常 "%2F" 路由失败问题1

    这个是angular1.6默认给hash路由上添加了!(感叹号),导致出错,修改方法如下(添加配置,去掉默认前缀感叹号):   angular.module('routingDemoApp',['ng ...

  7. 生成不重复的随机数对(C/C++)

    1 #include <stdio.h> #include <algorithm> #include <stdlib.h> #include <time.h& ...

  8. codefroces 650A. Watchmen

    A. Watchmen time limit per test 3 seconds memory limit per test 256 megabytes input standard input o ...

  9. 学习《Python数据科学手册》高清中文PDF+高清英文PDF+代码

    如果有一定的数据分析与机器学习理论与实践基础,<Python数据科学手册>这本书是绝佳选择. 是对以数据深度需求为中心的科学.研究以及针对计算和统计方法的参考书.很友好实用,结构很清晰.但 ...

  10. Swift学习笔记(4)--字符串及基本使用

    String是例如“hello, world”,“海贼王” 这样的有序的Character(字符)类型的值的集合,通过String类型来表示. Swift 的String类型与 Foundation  ...