android中的手势探测
来源:互联网 发布:汪正扬看的编程书 编辑:程序博客网 时间:2024/03/29 09:46
我们常说的手势包括:单击、长按、双击、滑动、缩放, android提供了几个手势探测类:GestureDetector(点击类探测),ScaleGestureDetector(缩放探测),
如何用这几种探测类来捕捉用户的手势呢?
- 首先构建一个GestureDetector对象,创建GestureDetector对象时会传入一个回调对象(实现GestureDetector.OnGestureListener)
- view有一个虚拟函数onTouchEvent(MotionEvent), 只要重载这个函数,并将MotionEvent对象丢给GestureDetector对象就可以了
- GestureDetector类中会自己判断MotionEvent的事件类型,并回调
- 问题来了,怎么回调业务的接口?
- 回到1中,传入的回调对象其实是我们需要实现的,并继承GestureDetector中的接口来实现手势的回调
- 如果是缩放,将GestureDetector换成ScaleGestureDetector对象即可
MotionEvent
that triggered it.MotionEvent
and the matching up MotionEvent
.MotionEvent
that trigged it.MotionEvent
and the current move MotionEvent
.MotionEvent
and not performed a move or up yet.MotionEvent
that triggered it.示例代码:
import android.content.Context;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
public class MyView extends View {
GestureDetector mGesture = null;
public MyView(Context context)
{
super(context);
mGesture = new GestureDetector(this.getContext(), new MyGestureDetector());
Log.d("MyGestureDetector", "MyView()");
}
protected void onDraw(Canvas canvas)
{
android.util.Log.d("MyGestureDetector", "onDraw");
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d("MyGestureDetector", "onTouch");
// TODO Auto-generated method stub
return mGesture.onTouchEvent(event);
}
class MyGestureDetector implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener
{
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
}
/*或者直接这种继承也为常见
class MyGestureDetector extends GestureDetector.SimpleOnGestureListener
{
@Override
public void onLongPress(MotionEvent e)
{
Log.d("MyGestureDetector", "onLongPress");
super.onLongPress(e);
}
}
*/
}
- android中的手势探测
- Android中的手势交互
- android中的手势
- android中的手势
- Android中的手势操作
- Android中的手势识别
- Android中的手势识别
- Android中的手势
- Android中的手势交互
- Android中的手势识别
- Android中的手势
- Android触摸屏中的手势识别
- Android触摸屏中的手势识别
- 全面掌握Android中的手势Gesture
- android中的手势识别工具类
- Android中的手势识别器GestureDetector
- android手势
- android 手势
- iOS 消息推送
- C语言字符char和整型int的关系
- 【CXY】JAVA基础 之 异常追踪栈
- 获取图片做桌面壁纸
- 00007-----连接mini2440开发板FTP
- android中的手势探测
- xml文件中的xmlns处理
- 如何拥有属于自己的公司
- 排序算法
- Android Service和Activity基于串口蓝牙模块的双向通信
- 重叠I/O模型的概念
- 编程之美-二分查找练习题
- 三叶草
- 内网ip端口映射外网ip+端口