View中如何进行手势识别onFling动作实现介绍

比你爹还范

比你爹还范

2016-02-19 09:37

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的View中如何进行手势识别onFling动作实现介绍,过去的都会过去,迎接崭新的开始,释放更美好的自己。
很多网友发现Android中手势识别提供了两个类,由于Android 1.6以下的版本比如cupcake中无法使用android.view.GestureDetector,而 android.gesture.Gesture是Android 1.6开始支持的,考虑到仍然有使用Android 1.5固件的网友,就来看下兼容性更强的android.view.GestureDetector。在 android.view.GestureDetector类中有很多种重载版本,下面我们仅提到能够自定义在View中的两种方法,分别为 GestureDetector(Context context, GestureDetector.OnGestureListener listener) 和GestureDetector(Context context, GestureDetector.OnGestureListener listener, Handler handler) 。我们可以看到第一个参数为Context,所以我们想附着到某View时,最简单的方法就是直接从超类派生传递Context,实现 GestureDetector里中提供一些接口。

下面我们就以实现手势识别的onFling动作,在CwjView中我们从View类继承,当然大家可以从TextView等更高层的界面中实现触控。
代码如下:

class CwjView extends View {
private GestureDetector mGD;
public CwjView(Context context, AttributeSet attrs) {
super(context, attrs);
mGD = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
int dx = (int) (e2.getX() - e1.getX()); //计算滑动的距离
if (Math.abs(dx) MAJOR_MOVE && Math.abs(velocityX) Math.abs(velocityY)) { //降噪处理,必须有较大的动作才识别
if (velocityX 0) {
//向右边

} else {
//向左边
}
return true;
} else {
return false; //当然可以处理velocityY处理向上和向下的动作
}
}
});
}
/*提示大家上面仅仅探测了Fling动作仅仅实现了onFling方法,这里相关的还有以下几种方法来实现具体的可以参考我们以前的文章有详细的解释:
boolean onDoubleTap(MotionEvent e)
boolean onDoubleTapEvent(MotionEvent e)
boolean onDown(MotionEvent e)
void onLongPress(MotionEvent e)
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
void onShowPress(MotionEvent e)
boolean onSingleTapConfirmed(MotionEvent e)
boolean onSingleTapUp(MotionEvent e)
*/
//接下来是重点,让我们的View接受触控,需要使用下面两个方法让GestureDetector类去处理onTouchEvent和onInterceptTouchEvent方法。
@Override
public boolean onTouchEvent(MotionEvent event) {
mGD.onTouchEvent(event);
return true;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return mGD.onTouchEvent(event);
}
}

本节关于View中手势识别的内容就讲这些。大家知道,很多Android设备都提供了重力感应器和加速度感应器,而稍好些的设备还具备陀螺仪感应器,提供测试角速度功能。下一节将为大家讲解重力感应知识。
展开更多 50%)
分享

猜你喜欢

View中如何进行手势识别onFling动作实现介绍

编程语言 网络编程
View中如何进行手势识别onFling动作实现介绍

Excel中如何进行筛选

excel
Excel中如何进行筛选

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

word2024中如何进行批量替换

word
word2024中如何进行批量替换

面试时如何进行自我介绍

电脑网络
面试时如何进行自我介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Word2024中如何进行页码设置

word
Word2024中如何进行页码设置

如何进行孕期

孕期乳房护理
如何进行孕期

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Ajax实现静态刷新页面过程带加载旋转图片

Ajax实现静态刷新页面过程带加载旋转图片

Java3D实例之创建空间几何模型的实现方法

Java3D实例之创建空间几何模型的实现方法
下拉加载更多内容 ↓