欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-03-06 13:24:55
本文实例分析了android实现gesture手势识别用法。分享给大家供大家参考。具体如下: 很高兴能在android1.6的sdk看到手势识别这一功能,之前一直在想,如...

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

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

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

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

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

第二步:在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出来:

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

完整代码如下:

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程序设计有所帮助。