当前位置: 移动技术网 > IT编程>移动开发>Android > Android实现Gesture手势识别用法分析

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

本文实例分析了android实现gesture手势识别用法。分享给大家供大家参考。具体如下:

很高兴能在android1.6的sdk看到手势识别这一功能,之前一直在想,如何在android中实现nds游戏那样用手势(准确点应该是笔势)来控制游戏角色?现在总算看到一点曙光了,不过手势要做到笔势那样随心所欲地控制游戏人物,还有很多细节问题需要处理。

在android1.6的模拟器里面预装了一个叫gestures builder的程序,这个程序就是让你创建自己的手势的(gestures builder的源代码在sdk问samples里面有,有兴趣可以看看)。创建的手势将被保存到/sdcard/gestures里面,把这个文件复制到你的工程/res/raw下,你就可以在你的工程里面使用这些手势了。复制到/res/raw下的手势是只读的,也就是说你不能修改或增加手势了,如果想实现增改的话,可以直接加载sd卡里面的gestures文件。

在例子中,我创建了这样的手势:

第二步:在layout里面创建gestureoverlayview,这个透明的view就是让你在上面画手势用的,可以叠在其他view上面:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
<textview
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello"
  />
<android.gesture.gestureoverlayview
  android:id="@+id/gestures"
  android:layout_width="fill_parent"
  android:layout_height="0dip"
  android:layout_weight="1.0"
  />
</linearlayout>

第三步:载入gesture:

mlibrary = gesturelibraries.fromrawresource(this, r.raw.gestures);
if (!mlibrary.load()) {
  finish();
}

第四步:增加响应函数ongestureperformedlistener:

gestureoverlayview gestures = (gestureoverlayview) findviewbyid(r.id.gestures);
gestures.addongestureperformedlistener(this);

以上四步就可以实现简单的gesture识别原型了:

程序运行结果如下,书写一个a字,程序识别出,然后toast一个a出来:

完整代码如下:

package com.ray.test;
import java.util.arraylist;
import android.app.activity;
import android.gesture.gesture;
import android.gesture.gesturelibraries;
import android.gesture.gesturelibrary;
import android.gesture.gestureoverlayview;
import android.gesture.prediction;
import android.gesture.gestureoverlayview.ongestureperformedlistener;
import android.os.bundle;
import android.widget.toast;
public class testgesture extends activity implements ongestureperformedlistener{
  gesturelibrary mlibrary;
  @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main);
    gestureoverlayview gestures = (gestureoverlayview) findviewbyid(r.id.gestures);
    gestures.addongestureperformedlistener(this);
    mlibrary = gesturelibraries.fromrawresource(this, r.raw.gestures);
    if (!mlibrary.load()) {
      finish();
    }
  }
  @override
  public void ongestureperformed(gestureoverlayview overlay, gesture gesture) {
    arraylist predictions = mlibrary.recognize(gesture);
    // we want at least one prediction
    if (predictions.size() > 0) {
      prediction prediction = (prediction) predictions.get(0);
      // we want at least some confidence in the result
      if (prediction.score > 1.0) {
        // show the spell
        toast.maketext(this, prediction.name, toast.length_short).show();
      }
    }
  }
}

更多关于android相关内容感兴趣的读者可查看本站专题:《android编程之activity操作技巧总结》、《android视图view技巧总结》、《android操作sqlite数据库技巧总结》、《android操作json格式数据技巧总结》、《android数据库操作技巧总结》、《android文件操作技巧汇总》、《android编程开发之sd卡操作方法汇总》、《android开发入门与进阶教程》、《android资源操作技巧汇总》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网