android gesture,Android Gesture 手势创建以及使用示例

在Android1.6的模拟器里面预装了一个叫Gestures Builder的程序,这个程序就是让你创建自己的手势的(Gestures Builder的源代码在sdk问samples里面有,有兴趣可以看看)

40412325fb0c5085980a05f6e83b7585.png

将上面这四个文件复制到你的工程目录下面,如图所示

9f908e6b5b968f421a68c5e1344bfa68.png

在模拟器上面运行这个工程文件,在模拟器上面创建一些手势文件,例如:

2a9224fa3bdc1ba7124ec8d785439439.png

创建的手势将被保存到/mnt/sdcard/gestures里面,然后新建一个测试的手势项目文件,将gestures文件复制到res目录中的raw文件下面,

b0a46001dc118c3adfccb0fb9f9796da.png

然后配置xml文件,xml配置如下:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.xunfang.gesture.MainActivity" >

android:id="@+id/gv"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#000000"

android:gestureStrokeWidth="10"

android:gestureColor="#ff0000"

/>

GestureOverlayView:一种用于手势输入的透明覆盖层,可覆盖在其他控件的上方,也可包含其他控件。

Android:gestureStrokeType 定义笔画(定义为手势)的类型

Android:gestureStrokeWidth 画手势时,笔划的宽度

activity文件内容如下

package com.xunfang.gesture;

import java.util.ArrayList;

import android.app.Activity;

import android.content.Intent;

import android.gesture.Gesture;

import android.gesture.GestureLibraries;

import android.gesture.GestureLibrary;

import android.gesture.GestureOverlayView;

import android.gesture.Prediction;

import android.net.Uri;

import android.os.Bundle;

import android.view.MotionEvent;

import android.widget.Toast;

public class MainActivity extends Activity {

private GestureOverlayView gv ;

private boolean loadStatus ;

private GestureLibrary gestureLibrary ;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//拿到控件

gv = (GestureOverlayView) findViewById(R.id.gv) ;

//创建加载手势库的工具

gestureLibrary =  GestureLibraries.fromRawResource(this, R.raw.gestures) ;

//加载手势库

loadStatus = gestureLibrary.load() ;

//给gv控件加一个监听器

//OnGesturePerformedListener监听器监听一种手势(一笔画完)

gv.addOnGesturePerformedListener(new GestureOverlayView.OnGesturePerformedListener(){

@Override

public void onGesturePerformed(GestureOverlayView overlay,

Gesture gesture) {

//如果手势库加载成功

if(loadStatus){

//识别手势  Prediction是一个相似度对象,集合中的相似度是从高到低进行排列

ArrayList pres = gestureLibrary.recognize(gesture) ;

if(!pres.isEmpty()){

//拿到相似度最高的对象

Prediction pre = pres.get(0) ;

//用整型的数表示百分比  >60%

if(pre.score > 6){

//拿到手势的名字判断进行下一步逻辑

if("94".equals(pre.name)){

//说明想关掉当前的activity

finish() ;

}else if("yes".equals(pre.name)){

//说明想打电话了

Intent intent = new Intent() ;

intent.setAction(Intent.ACTION_CALL) ;

intent.setData(Uri.parse("tel://110")) ;

startActivity(intent) ;

}else if("666".equals(pre.name)){

//说明你想弹一个土司

Toast.makeText(MainActivity.this, "哈哈,我弹出来了", 0).show() ;

}

}else{

Toast.makeText(MainActivity.this, "手势不匹配", 0).show() ;

}

}else{

Toast.makeText(MainActivity.this, "手势库加载失败", 0).show() ;

}

}

}

}) ;

这里用到了拨打电话的界面,一定要添加权限,如下图所示

172f9605833ea0442796ee849eae821d.png

这里之后代码就玩了,可以进行测试。

我输入一个6

9ff786f29df61edd827b970f3a5626fe.png

然后就弹出来了。表示验证成功。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值