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

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

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

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

然后配置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() ;

}

}

}

}) ;

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

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

我输入一个6

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

android gesture,Android Gesture 手势创建以及使用示例相关推荐

  1. android自定义手势,Android编程实现自定义手势的方法详解

    本文实例讲述了Android编程实现自定义手势的方法.分享给大家供大家参考,具体如下: 之前介绍过如何在Android程序中使用手势,主要是系统默认提供的几个手势,这次介绍一下如何自定义手势,以及如何 ...

  2. android手势创建及识别

    使用一些浏览器或者输入法应用时会有一些手势操作,还可以自定义手势.这些神奇的操作是怎么做的呢?这一篇重点记录手势的识别和创建.这篇的内容使用到的是android.gesture包,具体的例子参考的是S ...

  3. android 按钮手势,如何在Android 10中使用手势导航或如何关闭它

    谷歌移动操作系统的最新版本Android 10带有许多出色的新功能.在Android 9.0 Pie中向Android中引入了手势导航 - 它使用滑动和其他操作来控制手机,而不是点击按钮.在Andro ...

  4. Android图案密码,手势锁源码解析

    Android图案密码解锁源码解析 Android Lock Pattern 源码解析  1. 介绍   1.1 关于 Android 的图案密码解锁,通过手势连接 3 * 3 的点矩阵绘制图案表示解 ...

  5. Android OpenGL射线拾取手势旋转(二)

    上回分解-_-!,Android OpenGL射线拾取&手势旋转(一). 3)Renderer:RayPickRenderer.java OpenGL渲染器,比较多的东西都在这里面了. pub ...

  6. 树莓派Android Things物联网开发:创建一个Things项目

    [转载请注明出处:http://blog.csdn.net/leytton/article/details/77854144] <树莓派Android Things物联网开发>系列文章专栏 ...

  7. Android实例开发中如何创建第一个项目(android studio)

    当我们配置好android环境后,如何创建第一个项目,每一项代表了什么意思,这里以Android studio 为例,其他软件如eclipse等是类似的操作 当我们安装好AS后 这里我们选择第一项 其 ...

  8. 【Android 文件管理】分区存储 ( 创建与查询图片文件 )

    文章目录 一.分区存储模式下使用 MediaStore 插入图片 二.分区存储模式下使用 MediaStore 查询图片 三.相关文档资料 Android 分区存储系列博客 : [Android 文件 ...

  9. android自动创建桌面,Android应用启动后自动创建桌面快捷方式的实现方法

    Android的开发其实是比较灵活的,其实在安装了Android应用程序之后,会在桌面上自动创建快捷方式,接下来爱站技术频道小编将会介绍Android应用启动后自动创建桌面快捷方式的实现方法给大家,有 ...

  10. 【Android Developers Training】 93. 创建一个空验证器

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

最新文章

  1. 同学Linux,同成长
  2. AngularJS2.0 hello world例子——引入这么多额外的依赖库真是很忧伤啊
  3. Array Elimination 运算,gcd,思维
  4. Golang协程案例:并行计算指定数的阶乘(未使用管道)
  5. 1266: [AHOI2006]上学路线route
  6. 如何设置python的编码格式为utf-8
  7. 疲劳容器的定义_材料疲劳
  8. swagger注释API详细说明
  9. 飞机游戏跟踪导弹的算法[C#源码]
  10. jmeter请求grpc接口
  11. 基于和风天气API开发的天气查询小工具(含源码)
  12. 日系插画学习笔记(十一):日系插画标准上色流程
  13. mysql期中考试题及答案_MySQL数据库考试试题及答案 -
  14. 编程环境搭建(云上编程和本地编程)
  15. 【阅读笔记】联邦学习实战——联邦学习智能用工案例
  16. android游戏开发实例-可局域网对战的飞行棋(一)
  17. 阿里云支持备案云产品列表(不只是云服务器)
  18. JSON 与 XML 对比
  19. js一天、两天倒计时定时器实现方案
  20. 装linux系统和安装工具

热门文章

  1. 【疾病分类】基于matlab LBP果实病害检测分类【含Matlab源码 1714期】
  2. 【图像压缩】基于matlab GUI DCT图像无损压缩【含Matlab源码 726期】
  3. 【图像处理】基于matlab GUI图像处理(编辑+分析+调整+平滑+锐化+小波变换)【含Matlab源码 207期】
  4. gin mysql_golang+gin+mysql构建RESTful API
  5. matlab利用窗改变幅值_Matlab在车辆中的应用 信号处理分析
  6. numpy.loadtxt() 用法
  7. java集合拿到每个元素_java – 如何有效地小写每个元素的集合?
  8. mysql event查询_Mysql中Event的一些测试
  9. 什么?你的私钥泄漏了?
  10. 如何让textarea不可拖拽变化大小