Android手势操作
xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<android.gesture.GestureOverlayView
android:id="@+id/gestureOverlayView1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gestureStrokeType="multiple" >
</android.gesture.GestureOverlayView>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/Button"
android:layout_weight="0"
android:text="识别"/>
</LinearLayout> 注意:
android_weight=0 表示是首先计算该控件的的高度或宽度,然后计算android_weight="1"控件的 高度,一般他是和 android:layout_height="0dp"结合使用的,否则是不会出来效果 public class MainActivity extends Activity {
private GestureLibrary library;
private Gesture gestures;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GestureOverlayView gesture=(GestureOverlayView) this.findViewById(R.id.gestureOverlayView1);
library=GestureLibraries.fromRawResource(this, R.raw.gestures);//得到手势文件的类文件
library.load();//加载手势库 /**
* 为手势添加事件监听
*/
gesture.addOnGestureListener(new OnGestureListener(){
public void onGesture(GestureOverlayView overlay, MotionEvent event)
{
// TODO Auto-generated method stub
}
@Override
public void onGestureCancelled(GestureOverlayView overlay,MotionEvent event)
{
// TODO Auto-generated method stub
}
@Override
public void onGestureEnded(GestureOverlayView overlay,MotionEvent event)
{
gestures=overlay.getGesture();//得到一个手势
}
@Override
public void onGestureStarted(GestureOverlayView overlay,MotionEvent event)
{
// TODO Auto-generated method stub
}
}); this.findViewById(R.id.Button).setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
find(gestures);
}
});
} public void find(Gesture gesture)
{
ArrayList<Prediction> predictions=library.recognize(gesture);//得到手势库中的一个集合
if(predictions!=null)
{
Prediction prediction= predictions.get(0);//得到一个最匹配的一项,手势匹配默认会把最匹配的一项放在最前面
/**
* 判断匹配的度数是否大于60%,prediction.score的值在大于0小于10的,如果是4的话就是匹配值是40%的意思
*/
if(prediction.score>5)
{
if("close".equals(prediction.name))
{
finish();//此方法只能那个关闭Activity,并不能杀死进程,所以要在OnDestory()方法中杀死进程
}
else if("call".equals(prediction.name))
{
Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:15824935047"));
startActivity(intent);
}
}
else
{
Toast.makeText(this, "匹配值太低", Toast.LENGTH_LONG).show();
}
}else
{
Toast.makeText(this, "匹配不成功", Toast.LENGTH_LONG).show();
}
} @Override
protected void onDestroy() {
Process.killProcess(Process.myPid());//杀死当前进程
super.onDestroy();
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
Android手势操作的更多相关文章
- Android学习指南之三十八:Android手势操作编程[转]
手势操作在我们使用智能设备的过程中奉献了不一样的体验.Android开发中必然会进行手势操作方面的编程.那么它的原理是怎样的呢?我们如何进行手势操作编程呢? 手势操作原理 首先,在Android系统中 ...
- Android 手势操作识别
(转自:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1020/448.html) 首先,在Android系统中,每一次手势交互都会依照 ...
- android事件系列-onTouch事件与手势操作
提示记忆:应用流程:在Activity中对控件执行 view.setOnTouchListener( OnTouchListener i);实现里面的OnTouchListener 接口中的方法,重点 ...
- Android 触摸及手势操作GestureDetector
现在的智能手机不敢说百分百的都是触摸屏,也应该是百分之九九以上为触摸屏了,触摸屏为我们操作无键盘.无鼠标的手机系统带来了很多的便利.当用户触摸屏幕时会产生很多的触摸事件,down.up.move等等. ...
- android手势创建及识别
使用一些浏览器或者输入法应用时会有一些手势操作,还可以自定义手势.这些神奇的操作是怎么做的呢?这一篇重点记录手势的识别和创建.这篇的内容使用到的是android.gesture包,具体的例子参考的是S ...
- android手势感应预研
1. 产品介绍 该产品可以通过传感器来侦测用户的手势变化进而执行一些操作.比如说信息预览(如短信息预览.日历预览等等),此外,还可以通过指向某一个时间点来预览视频内容.预览音乐播放器(下一首歌 ...
- Android 手势检测实战 打造支持缩放平移的图片预览效果(下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...
- Python+Appium自动化测试(10)-TouchAction类与MultiAction类(控件元素的滑动、拖动,九宫格解锁,手势操作等)
滑动屏幕方法swipe一般用于对页面进行上下左右滑动操作,但自动化过程中还会遇到其他情况,如对控件元素进行滑动.拖拽操作,九宫格解锁,手势操作,地图的放大与缩小等.这些需要针对控件元素的滑动操作,或者 ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
随机推荐
- Android(java)学习笔记253:ContentProvider使用之内容观察者02
下面通过3个应用程序之间的交互说明一下内容观察者: 一. 如下3个应用程序为相互交互的: 二.交互逻辑图: 三.具体代码: 1. 16_数据库工程: (1)数据库帮助类BankDBOpenHelp ...
- select 响应时间 js
HTML form select表单标签案例代码如下: 跳转菜单的需要放在head头部标签内的JS脚本代码:<script type="text/javascript"> ...
- Android Studio 简介
Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发 ...
- 无法连接vCenter Server清单https://IP:10443
VMware vCenter Server服务器安装系统的时候使用一个IP,安装完VMware vCenter后来更换了另外一个IP,当使用vSphere Web Client登陆VMware vCe ...
- 关于List、Set集合以及Map的使用
package tingjizifu; import java.util.*; public class TongJi { /* * 使用Scanner从控制台读取一个字符串,统计字符串中每个字符出现 ...
- oracle双机热备概念
1. 双机热备概述 双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式. 基于存储共享的双机热备是双机热备的最标准方案. ...
- :after伪类+content内容生成经典应用举例
一.简单说说content内容生成 content内容生成就是通过content属性生成内容,content属性早在CSS2.1的时候就被引入了,可以使用:before以及:after伪元素生成内容. ...
- linux下定时任务
一.linux定时任务软件种类 .at : 适合执行一次的任务.突发性的任务.需要启动 atd 服务才能执行任务. .crontab: 周期性的执行任务工作:启动crond 服务后可以执行任务.最常用 ...
- switch case加条件语句(非等值) php
<?php $s_level=rand(1,6); echo $s_level.'<br/>'; switch(true){ case $s_level<3 : echo 'l ...
- PHP几个防SQL注入攻击自带函数区别
SQL注入攻击是黑客攻击网站最常用的手段.如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击.SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录 ...