热点文章
初中毕业学什么技术工资最高?低学
初中生学什么技术好?有适合初中生
可以选择的android培训项目有哪
Android图形子系统详解
就业较难的专业主要有哪些?
现在做什么工作比较好?做什么工作
网络远程继续教育怎么样?
初中毕业能当兵吗?
.net应该怎么学习?.net学习有没有
在电脑上怎么学设计呢?一般人能学
乘车路线
乘坐6,966,k906等公交车到文化路双铺路站下车即可
咨询电话
招生咨询电话:0371-63383521 0371-63383522
学校地址:郑州市文化路90号河南财经政法大学文南1号楼
安卓手机开发专业 您当前所在的位置是:首页 > 专业介绍 > 安卓手机开发专业
Android游戏开发之View中如何进行手势识别
发布时间:2019-07-09 10:14:38   作者:河南翔天信鸽学校  来源:新乡计算机学院

    很多网友发现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);   
    }   
}  

Copyright @2023 新乡计算机学校-河南翔天信鸽培训学校-河南北大青鸟 All Rights Reserved 版权所有
学校招生咨询电话:15225191462