Android基础开发之手势识别

由于精确度等原因,手势识别在android中用的并不多,不过这并不妨碍我们来玩玩这个神奇的玩意。

在android中要使用手势,先得建立手势库,建立手势库非常简单,新建一个android sample project,建一个android示例工程,然后选择创建的android版本,完了之后看到这个界面:

选择gesturebuilder,创建成功之后把它安装到真机上,然后可以在里边添加手势,并给手势命名。

创建完gesture之后,在eclipse的file explore窗口中查看系统文件,在sdcard文件夹中会多出一个gesture文件,先把这个文件导出到桌面。然后新建一个名叫gesture的工程,在res文件夹下新建一个raw文件夹,再把刚才的gesture文件拷贝进来,这样我们这着工程就有了一个手势库了,下面看看怎么用这个手势库。

先看看布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.example.gesture.MainActivity" >

 <android.gesture.GestureOverlayView
 android:id="@+id/mygesture"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:gestureStrokeType="multiple"
  />

</RelativeLayout>

布局文件中就一个关于gestureOverlayView的控件,android:gestureStrokeType属性有两个值,一个是multiple,另一个是single,multiple表示支持多笔画,single表示支持单笔画。

Java代码:

public class MainActivity extends Activity {

 private GestureOverlayView myges;
 private GestureLibrary library;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 myges = (GestureOverlayView) this.findViewById(R.id.mygesture);
 library = GestureLibraries.fromRawResource(this,
  R.raw.gestures);
 // 读取库中数据
 library.load();

 //监听绘制手势事件
 myges.addOnGesturePerformedListener(new OnGesturePerformedListener() {

  @Override
  public void onGesturePerformed(GestureOverlayView overlay,
   Gesture gesture) {
  //Prediction中存储的是比对的结果
  List<Prediction> list = library.recognize(gesture);
  //遍历结果,score是比对后的分数,分数越大,越相近
  for(Prediction p : list){
   Log.i("lenve", p.name+"------------"+p.score);
  }
  if(list.get(0).score>4){
   Toast.makeText(MainActivity.this,list.get(0).name, Toast.LENGTH_LONG).show();
  }else{
   Toast.makeText(MainActivity.this,"手势无法识别", Toast.LENGTH_LONG).show();
  }
  }
 });
 }
}

关键代码已注释。就这么简单,由于识别率等问题,手势识别目前用的并不多。

原文链接:http://blog.csdn.net/u012702547/article/details/45727729

源码下载:Android开发之手势识别

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android View进行手势识别详解

    我们在进行Android游戏开发时会用到很多种控制,包括前面讲到的按键和轨迹球控制方式,除此之外还有手势操作.重力感应等多种控制方式需要了解掌握.本节主要为大家讲解在View中如何进行手势识别. 很多网友发现Android中手势识别提供了两个类,由于Android 1.6以下的版本比如cupcake中无法使用android.view.GestureDetector,而android.gesture.Gesture是Android 1.6开始支持的,考虑到仍然有使用Android 1.5固件的网友

  • Android实现Gesture手势识别用法分析

    本文实例分析了Android实现Gesture手势识别用法.分享给大家供大家参考.具体如下: 很高兴能在Android1.6的sdk看到手势识别这一功能,之前一直在想,如何在android中实现nds游戏那样用手势(准确点应该是笔势)来控制游戏角色?现在总算看到一点曙光了,不过手势要做到笔势那样随心所欲地控制游戏人物,还有很多细节问题需要处理. 在Android1.6的模拟器里面预装了一个叫Gestures Builder的程序,这个程序就是让你创建自己的手势的(Gestures Builder

  • 理解Android的手势识别提高APP的用户体验

    对于触摸屏,其原生的消息无非按下.抬起.移动这几种,我们只需要简单重载onTouch或者设置触摸侦听器setOnTouchListener即可进行处理.不过,为了提高我们的APP的用户体验,有时候我们需要识别用户的手势,Android给我们提供的手势识别工具GestureDetector就可以帮上大忙了. 基础 GestureDetector的工作原理是,当我们接收到用户触摸消息时,将这个消息交给GestureDetector去加工,我们通过设置侦听器获得GestureDetector处理后的手

  • android创建手势识别示例代码

    这篇的内容使用到的是android.gesture包,具体的例子参考的是Sample中GestureBuilder程序. 1.手势创建手势创建主要用到GestureOverlayView和GestureLibrary.GestureOverlayView的父类为android.widget.FrameLayout,是手势绘图区.GestureLibrary类主要对手势进行保存.删除等操作的,存放手势的仓库.下面给出创建手势的例子,如下图,可以定义如图手势打开csdn.net 1.1.创建绘图区

  • Android手势操作识别详解

    首先,在Android系统中,每一次手势交互都会依照以下顺序执行. 1. 接触接触屏一刹那,触发一个MotionEvent事件. 2. 该事件被OnTouchListener监听,在其onTouch()方法里获得该MotionEvent对象. 3. 通过GestureDetector(手势识别器)转发次MotionEvent对象至OnGestureListener. 4. OnGestureListener获得该对象,听根据该对象封装的的信息,做出合适的反馈. 这个顺序可以说就是手势交互的原理,

  • android使用gesturedetector手势识别示例分享

    复制代码 代码如下: public class MyGestureLintener extends SimpleOnGestureListener {private Context context;public MyGestureLintener(Context context) {    super();    this.context = context;} // 单击,触摸屏按下时立刻触发/*@Overridepublic boolean onDown(MotionEvent e) {  

  • Android应用开发中触摸屏手势识别的实现方法解析

    很多时候,利用触摸屏的Fling.Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在 浏览器中滚屏,用Fling在阅读器中翻页等.在Android系统中,手势的识别是通过 GestureDetector.OnGestureListener接口来实现的,不过William翻遍了Android的官方文档也没有找到一个相 关的例子,API Demo中的TouchPaint也仅仅是提到了onTouch事件的处理,没有涉及到手势. 我们先来明确一些概念

  • 札记:android手势识别功能实现(利用MotionEvent)

    摘要 本文是手势识别输入事件处理的完整学习记录.内容包括输入事件InputEvent响应方式,触摸事件MotionEvent的概念和使用,触摸事件的动作分类.多点触摸.根据案例和API分析了触摸手势Touch Gesture的识别处理的一般过程.介绍了相关的GestureDetector,Scroller和VelocityTracker.最后分析drag和scale等一些手势的识别. 输入源分类 虽然android本身是一个完整的系统,它主要运行在移动设备的特性决定了我们在它上面开的app绝大数

  • 深入理解Android手势识别

    对于触摸屏,其原生的消息无非按下.抬起.移动这几种,我们只需要简单重载onTouch或者设置触摸侦听器setOnTouchListener即可进行处理.不过,为了提高我们的APP的用户体验,有时候我们需要识别用户的手势,Android给我们提供的手势识别工具GestureDetector就可以帮上大忙了. 基础 GestureDetector的工作原理是,当我们接收到用户触摸消息时,将这个消息交给GestureDetector去加工,我们通过设置侦听器获得GestureDetector处理后的手

  • android开发之为activity增加左右手势识别示例

    android开发中为activity增加左右手势识别,如右滑关闭当前页面. 复制代码 代码如下: /* *  for左右手势 *  1.复制下面的内容到目标Activity *  2.目标Activity的onCreate()调用initGesture() *  3.目标Activity需implements OnTouchListener, OnGestureListener */   private GestureDetector mGestureDetector;   private i

随机推荐