Android View进行手势识别详解

 更新时间:2016年08月21日 16:19:51   投稿:lqh  
本文主要介绍 Android View进行手势识别,这里整理了相关资料和简单示例,有兴趣的小伙伴可以参考下

       我们在进行Android游戏开发时会用到很多种控制,包括前面讲到的按键和轨迹球控制方式,除此之外还有手势操作、重力感应等多种控制方式需要了解掌握。本节主要为大家讲解在View中如何进行手势识别。

       很多网友发现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等更高层的界面中实现触控。

Java代码

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设备都提供了重力感应器和加速度感应器,而稍好些的设备还具备陀螺仪感应器,提供测试角速度功能。下一节将为大家讲解重力感应知识。

       以上就是对Android View进行的手势识别的资料整理,谢谢大家对本站的支持,后续继续补充相关资料。

相关文章

  • Android自定义View实现QQ运动积分转盘抽奖功能

    Android自定义View实现QQ运动积分转盘抽奖功能

    这篇文章主要为大家详细介绍了Android自定义View实现QQ运动积分转盘抽奖功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 详解android环境下的即时通讯

    详解android环境下的即时通讯

    这篇文章主要介绍了详解android环境下的即时通讯,具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • Android实现PDF预览打印功能

    Android实现PDF预览打印功能

    这篇文章主要为大家详细介绍了Android实现PDF预览打印功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Android仿字节颜色自定义进度条

    Android仿字节颜色自定义进度条

    这篇文章主要为大家详细介绍了Android仿字节颜色自定义进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Android中图片占用内存的深入分析

    Android中图片占用内存的深入分析

    我们在日常开发中应该经常思考这些问题,图片占用内存跟哪些东西有关?跟手机有关系么?这篇文章主要给大家介绍了关于Android中图片占用内存的相关资料,需要的朋友可以参考下
    2022-01-01
  • android实现滑动解锁

    android实现滑动解锁

    这篇文章主要为大家详细介绍了android实现滑动解锁,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • Android水波纹载入控件CircleWaterWaveView使用详解

    Android水波纹载入控件CircleWaterWaveView使用详解

    这篇文章主要为大家详细介绍了Android水波纹载入控件CircleWaterWaveView使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Android 7.0应用之间如何共享文件

    Android 7.0应用之间如何共享文件

    这篇文章主要介绍了Android 7.0应用之间如何共享文件,帮助大家更好的理解和使用Android进行开发,感兴趣的朋友可以了解下
    2020-12-12
  • 浅谈关于android软键盘弹出问题

    浅谈关于android软键盘弹出问题

    本篇文章主要介绍了浅谈关于android软键盘弹出问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Android如何修改默认gradle路径的方法

    Android如何修改默认gradle路径的方法

    Android Studio每次新建项目,都会默认在C盘生成并下载gradle相关文件,那么Android如何修改默认gradle路径的方法,本文就来介绍一下
    2023-08-08

最新评论