GestureDetector手势滑动识别
来源:互联网 发布:淘宝信誉等级在哪里看 编辑:程序博客网 时间:2024/05/18 12:29
手势识别是我们日常使用电子物品中非常常见的一个功能,这个功能大大提升了用户体验的感受
手势识别主要有两种方法,一种是GestureDetector,另一种是GestureOverlayView
现在来研究下GestureDetector方法
1.手指触屏的一瞬间,触发MotionEvent事件
2.被OnTouchListener监听,在onTouch()中获得MotionEvent对象
3.GestureDetector转发MotionEvent对象至OnGestureListener
4.OngestureListener获得该对象,根据该对象封装的信息做出合适的反馈
MotionEvent:
用于封装手势、触摸笔、轨迹球等动作事件
内部封装用于记录横轴和纵轴坐标的属性X和Y
手势的滑动相当于屏幕上的XY轴的坐标的变化
GestureDetector:识别各种手势
当手指:按下、移动、抬起等可通过重载onTouch或者设置setOnTouchListener来监听
原理:当接收到用户触摸消息时,将消息交给GestureDetector加工,通过设置监听器获得GestureDetector处理后的手势
OnGestureListener:手势交互的监听接口,其提供多个抽象方法、根据GestureDetector的手势识别结果调用相对应的方法 ,监听单击事件
OnDoubleTapListener:监听双击事件
OnGestureListener接口的方法太多,没有办法写完,所以只需写一个类,实现所需要的方法即可
单击:onDown、抬起:onSingleTapUp、短按:onShowPress、长按:onLongPress、滚动:onScroll、滑动:onFling
Android提供了一个类SimpleOnGestureListener:我们只需继承这个类,然后重载感兴趣的手势就行
例子代码如下:
package com.gdut.gesturedetector;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends Activity {
private ImageView img;
private GestureDetector myGestureDetector;
//OnGestureListener接口的方法太多,没有办法写完,所以只需写一个类,实现所需要的方法即可
//android提供了一个类simpleOnGestureListener
class myGestureListener extends SimpleOnGestureListener{
//实现滑动的onFling方法
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
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);
}
}
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.img);
//实例化myGestureDetector,并监听
myGestureDetector = new GestureDetector(new myGestureListener());
//向对这张图片进行监听
img.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//获得的event要通过GestureDetector转发出去给OnGestureListener,OnGestureListener获得该对象,根据该对象封装的信息作出合适的反馈
myGestureDetector.onTouchEvent(event);
return true;
}
});
}
}
但是GestureDetector,有局限,就是只能进行比较少而简单的手势操作。
而比较复杂或者自定义的手势,就由GestureOverlayView实现
本文出自 “11828641” 博客,请务必保留此出处http://11838641.blog.51cto.com/11828641/1839703
- GestureDetector 手势滑动识别
- GestureDetector识别手势滑动
- GestureDetector手势滑动识别
- 屏幕滑动手势GestureDetector
- Android-GestureDetector手势滑动
- Android GestureDetector手势识别
- 手势识别类 GestureDetector
- 多点手势识别GestureDetector
- GestureDetector手势识别
- GestureDetector android 手势识别
- GestureDetector(手势识别)
- Android 手势识别--GestureDetector
- Android-----手势识别GestureDetector
- GestureDetector 手势识别
- GestureDetector 手势识别器
- GestureDetector手势识别--笔记
- GestureDetector手势识别浅析
- 手势识别--GestureDetector
- 四大组件之Service
- 跨进程绑定Service
- android service中stub的作用
- 2.3.4 Belief Distributions
- 使用系统服务对手机进行操作
- GestureDetector手势滑动识别
- 使用GestureOverlayView进行手势识别
- Handler的使用上
- Handler使用下
- Handler原理
- android中更新UI的几种方式
- 解决Handler发送消息时:this message is already in use
- 实现一个activity中传输信息到另一个activity
- 解决使用Handler时Can't create handler inside thread that has not called Looper.prepare()