025_01GestureDetector类及其用法简介

  Android sdk给我们提供了GestureDetector类,通过这个类我们可以识别很多的手势,主要是通过他的onTouchEvent(event)方法完成了不同手势的识别。

GestureDetector这个类对外提供了两个接口和一个内部类
接口:OnGestureListener,OnDoubleTapListener
内部类:SimpleOnGestureListener

SimpleOnGestureListener的方法如下:

  boolean onSingleTapUp(MotionEvent e)

  void onLongPress(MotionEvent e)

  boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)

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

  void onShowPress(MotionEvent e)

  boolean onDown(MotionEvent e)

  boolean onDoubleTap(MotionEvent e)

  boolean onDoubleTapEvent(MotionEvent e)

  boolean onSingleTapConfirmed(MotionEvent e)

以下代码实现左滑和右滑的应用:

 1 package com.cskaoyan.mobilemanager;
 2
 3
 4 import android.app.Activity;
 5 import android.os.Bundle;
 6 import android.view.GestureDetector;
 7 import android.view.MotionEvent;
 8 import android.view.View;
 9 import android.view.GestureDetector.SimpleOnGestureListener;
10
11 public abstract class SetupBaseActivity extends Activity {
12     private GestureDetector gestureDetector;
13
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         // TODO Auto-generated method stub
17         super.onCreate(savedInstanceState);
18         gestureDetector = new GestureDetector(this, new MyGestureDetectorLinstener());
19
20     }
21
22     class MyGestureDetectorLinstener extends SimpleOnGestureListener{
23         @Override
24         public boolean onFling(
25                 MotionEvent e1,  //开始滑动的那个点
26                 MotionEvent e2,  //滑动停止的那个点
27                 float velocityX, //x方向上滑动的速度
28                 float velocityY) //y方向上滑动的速度
29                 {
30                 // TODO Auto-generated method stub
31                 float startx =e1.getX();
32                 float starty =e1.getY();
33                 float endx   =e2.getX();
34                 float endy   =e2.getY();
35
36                 if (endx -startx >150 ) {
37                     //滑动到上一页
38                     previous();
39                     System.out
40                     .println("Setup1Activity.MyGestureDetectorLinstener.onFling() show previous" );
41                 }
42                 else if (startx-endx>150) {
43                     System.out
44                     .println("Setup1Activity.MyGestureDetectorLinstener.onFling() show next" );
45                    //滑动到下一页
46                     next();
47                 }
48                 return super.onFling(e1, e2, velocityX, velocityY);
49                }
50
51
52     }
53
54     @Override
55     public boolean onTouchEvent(MotionEvent event) {
56         // TODO Auto-generated method stub
57
58         gestureDetector.onTouchEvent(event);
59         return super.onTouchEvent(event);
60     }
61
62     public abstract void next();
63     public abstract void previous();
64   }

然后抽象出两个方法next()和previous(),需要通过Fling跳转的Activity都可以继承SetupBaseActivity并实现这两个方法就OK了。

				
时间: 2024-10-16 03:49:46

025_01GestureDetector类及其用法简介的相关文章

InputStreamReader 和 OutputStreamWriter类用法简介及演示

最近正好在学java,对文件流比较感兴趣,因为C的文件操作算是比较简单的,没想到java弄得很复杂啊! 现在说说下面这两个类! InputStreamReader 和 OutputStreamWriter类用法简介. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是字节流通向字符流的桥梁.如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK. 构造方法: InputStreamReader isr = new InputStr

display:table-cell的用法简介

display:table-cell的用法简介:display属性的使用相当频繁,比如display:block或者display:inline等,但是对于display:table-cell可能比较陌生,因为此属性在特定的情况下会发挥很大的作用,下面就简单介绍它的作用,先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

压力测试工具tsung用法简介

tsung是用erlang开发的一款简单易用的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问.目前对tsung的理解也仅限于会简单的应用,其内部结构没有深入研究过. 1.安装 tsung是用erlang编写的,所以首先安装erlang的运行环境.然后就是按照tsung的官网下载编译tsung.需要注意的是,生成测试报告需要gnuplot和perl的支持,其中perl需要安装Template扩展.具体安装过程请看相关手册或者google之. 2.配置文件 默认情况下,tsung会加载配置

ArrayList类的用法

1.什么是ArrayList ArrayList就是传说中的动态数组,是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小 2.如何使用ArrayList 最简单的例子: ArrayList List = new ArrayList(); for( int i=0;i <10;i++ ) //给数组增加10个Int元素 List.Add(i); //..程序做一些处理 List.RemoveAt(5);//将第6

恶补Java(十三)之Java IO-----File类的用法

恶补Java---JavaI/O部分之File类的用法(笔记) 在java中,I/O(输入/输出)是比较乏味的事情,因为看不到明显的运行效果,但输入/输出是所有程序都必需的部分--使用输入机制,允许程序读取外部数据(包括来自磁盘.光盘等存储设备的数据).用户输入数据:使用输出机制,允许程序记录运行状态,将程序数据输出到磁盘.光盘等存储设备中. Java的I/O通过java.io包下的类和接口来支持,在java.io包下主要包括输入.输出两种IO流,每种输入.输出流又可分为字节流和字符流两大类.其

C++String类关键操作简介

1.string 类的头文件 #include<string> using std::string; 2.string 类的构造函数 string s1; //默认的构造函数,s1为空串 string s2(s1); //将s2初始化为s1的一个副本,对s2的操作不会影响s1 string s3("value"); //将s3初始化为一个字符串字面值的副本 string s4(n,'c'); //将s4初始化为字符c的n个副本 3.string 对象的读写 cin >

标准C++中的string类的用法总结

标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的.也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法.其实,可能很多人很可能会忽略掉标准C++中string类的使用.标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用

虚基类的用法

1 #include <iostream> 2 3 using namespace std; 4 5 class A 6 { 7 private: 8 int a; 9 public: 10 A(int x):a(x){} 11 void show() const 12 { 13 cout<<"a: "<<a<<endl; 14 } 15 ~A(){} 16 }; 17 class B:virtual public A //定义虚基类的用

标准C++中的string类的用法总结【转】

转自(略改动):http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 更全面新颖的说明见:http://www.cplusplus.com/reference/string/string/  说明: 1.size_t 是个unsigned integral type.  2.文中 c字符数组 是指末尾不带'\0'的,注意与 c字符串 的区别 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC