对于Android设备来说最主要的操作方式为触控,作为一个Android开发者来说深入了解 GestureDetector 手势识别是很有必要的,Android123今天主要介绍下该类相关的方法,以及简单的手势识别。 通常我们构造GestureDetector类时设置一个GestureDetector.OnGestureListener对象来实时监控用户的操作,OnGestureListener对象提供一些常见手势的重写方法。 @Override public boolean onDown(MotionEvent e) { //按下事件 return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //快速滚动 return true; } @Override public void onLongPress(MotionEvent e) { //长按 } @Override public […]
手势识别
Android游戏开发之旅11 View中手势识别 Android开发技术
有关Android平台的游戏开发中我们需要涉及到控制,在开始的Android游戏开发之旅中我们提到了按键和轨迹球的控制方式,从今天开始Android123开始给出大家游戏中其他的一些控制方式,比如今天的手势操作和未来重力感应。 很多网友发现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 […]
手势识别兼容Android 1.x和2.x的代码 Android开发技术
由于Android 2.x开始很多API变动比较大新增了一些比如多点触控的支持,对于屏幕触控手势识别中我们需要考虑更多的实现方法,下面是一段兼容Android 1.x和2.x的代码,可以让我们的程序兼容几乎99%的Android手机。 一、首先新建一个抽象类判断SDK版本问题 public abstract class VersionedGestureDetector { private static final String TAG = "VersionedGestureDetector"; OnGestureListener mListener; public static VersionedGestureDetector newInstance(Context context, OnGestureListener listener) { //设计实例化构造方法,这里Android123提示大家目前有3种API的实现方法,我们需要逐一考虑最优的解决方法,以满足高平台更多的功能实现。 final int sdkVersion = Integer.parseInt(Build.VERSION.SDK); //使用android.os.Build判断API Level,但需要将字符串转换为整形 VersionedGestureDetector detector = null; if (sdkVersion < Build.VERSION_CODES.ECLAIR) { //如果版本小于2.0则使用1.5版本的API,可以兼容1.5和1.6 detector = new CupcakeDetector(); } else […]

