Android_GestureDetector
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.android_gesturedetector.MainActivity" >
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"/>
</RelativeLayout>
源代码:
package com.example.android_gesturedetector; import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.Toast;
/*
* 使用GestureDetector进行手势识别
* 手势交互过程(原理):
* 1.触屏一刹那,触发MotionEvent事件(移动事件)
* 2.被OnTouchListener监听,在onTouch()中获得MotionEvent对象
* 3.GestureDetector(手势识别器)转发MotionEvent对象至OnGestureListener
* 4.OnGestureListener获得该对象,根据该对象封装的信息做出合适的反馈
*
*
*
* MotionEvent:
* 1.用于封装手势,触摸笔,轨迹球等动作事件
* 2.内部封装用于记录横轴和纵轴坐标的属性x和y
*
* GestureDetector:(手势识别器)
* 识别各种手势
* 工作原理:
* 1.当接收到用户触摸消息时 ,将消息交给GestureDetector加工
* 2.通过设置监听器获得GestureDetector处理后的手势
* GestureDetector提供了两个接口
* OnGestureListener:(是被单击事件)
* 1.手势交互的监听接口,其提供多个抽象方法
* 2.根据GestureDetector的手势识别结果调用相对应的方法
* OnDoubleTapListener.
* SimpleOnGeistureListener实现了上面两种接口
* 1.继承SimpleOnGestureListener
* 2.可以只重载感兴趣的手势
*/
public class MainActivity extends Activity {
private ImageView image;
private GestureDetector myGestureDetector;
class MyGestureListener extends SimpleOnGestureListener{
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
if(e1.getX()-e2.getX()>50){
Toast.makeText(MainActivity.this, "从右往左滑", Toast.LENGTH_SHORT).show();
}else if(e2.getX()-e1.getX()>50){
Toast.makeText(MainActivity.this,"从左往右滑",Toast.LENGTH_SHORT).show();
}
return super.onFling(e1, e2, velocityX, velocityY);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
myGestureDetector = new GestureDetector(new MyGestureListener());//实例化GestureDetector
image.setOnTouchListener(new OnTouchListener() { @Override//可以捕获到触摸屏幕发生的event事件
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
myGestureDetector.onTouchEvent(event);//GestureDetector对象通过onTouchEvent方法将event事件转发给GestureListener接口的实现类
return true;
}
}); } }
Android_GestureDetector的更多相关文章
- 转:GestureDetector: GestureDetector 基本使用
Gesture在 ViewGroup中使用 GestureDetector类可以让我们快速的处理手势事件,如点击,滑动等. 使用GestureDetector分三步: 1. 定义GestureDete ...
- maven dependendency
登录|注册 zhengsj的专栏 目录视图 摘要视图 订阅 [公告]博客系统优化升级 [收藏]Html5 精品资源汇集 博乐招募开始啦 Maven De ...
随机推荐
- Oracle函数面试题
1.对字符串操作的函数? 答:ASCII() –函数返回字符表达式最左端字符的ASCII 码值 CHR() –函数用于将ASCII 码转换为字符 –如果没有输入0 ~ 255 之间的ASCII 码值C ...
- 【管理工具】Kerberos简单应用
Kerberos这一名词来源于希腊神话“三个头的狗——地狱之门守护者”系统设计上采用客户端/服务器结构与DES加密技术,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证.可以用于防止窃听 ...
- sublime3安装python插件 -- SublimeCodeIntel
先装Package Control,类似pip的一个索引安装工具. 1.http://sublime.wbond.net/Package%20Control.sublime-package 2.sub ...
- JVM的GC机制及JVM的调优方法
内存管理和垃圾回收是JVM非常关键的点,对Java性能的剖析而言,了解内存管理和垃圾回收的基本策略非常重要. 1.在程序运行过程当中,会创建大量的对象,这些对象,大部分是短周期的对象,小部分是长周期的 ...
- Inf2Cat, signability test failed.
驱动开发真不是那么好玩的,折腾了几天,排除了几个错误,又有新的错误了. 错误 1 error -2: "Inf2Cat, signability test failed.&quo ...
- 【转载】高性能I/O设计模式Reactor和Proactor
转载自:http://blog.csdn.net/roger_77/article/details/1555170 昨天购买了<程序员>杂志 2007.4期,第一时间去翻阅了一遍,其中有一 ...
- CDH ecosystem components
1,Mahout ASF(Apache Software Foundation)开源项目,提供可扩展的`机器学习`--(ML,Machine Learning多领域交叉学科,涉及概率,统计,逼近,凸分 ...
- EXCEL 建立工作薄与工作表
//1.引用单元 uses ComObj; //2.建立工作薄与工作表 procedure TForm1.Button1Click(Sender: TObject); Var ExcelApp,She ...
- [iOS基础控件 - 6.5] UITableView的数据刷新
A.需求 1.以LOL英雄列表为蓝本,给其加上实时修改英雄名称的功能 2.使用UIAlertView 3.全局刷新reloadData 4.局部刷新 B.实现 1.使用UIAlertView ...
- jquery完成带复选框的表格行高亮显示
jquery完成带复选框的表格行高亮显示 通过jquery技术来操作表格是件简单的事,通过jquery的语法,可以很轻松的完成表格的隔行换色,悬浮高亮,在实际的应用中可能会出现表格中带复选框的,删除时 ...