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 ...
随机推荐
- Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员
Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员 1. 配置server连接权限 1 2. 配置数据库权限 1 3. 设置表格/视图安全性 2 1. ...
- POJ 2044 Weather Forecast
意甲冠军:有一2*2云,而一个4*4范围.在当天密布区必须有雨.有云4招式种类 .期间希望不要下雨,并且一个地方不能有连续7天没下雨. 思路:首先解决一个地方不能有连续7天没下雨的情况,要让地图上的全 ...
- OleDb 读取 excel
//定义变量 _Application ExcelApp; Workbooks wbsMyBooks; _Workbook wbMyBook; Worksheets wssMysheets; _Wor ...
- Qt Style Sheets帮助文档 Overview
Qt Style Sheets are a powerful mechanism that allows you to customize the appearance of widgets, in ...
- 使用CSS为内容设定特定的鼠标样式(cursor)介绍
相信大家都知道我们的鼠标在网页中不同的元素中有不同的显示(例如 a 元素就显示为“箭头指针”),但是其实我们还可以自定义这些有趣的东西哦!今天“畅想资源”就来教大家如何使用CSS为内容设定特定的鼠标样 ...
- 数据结构笔记01:编程面试过程中常见的10大算法(java)
以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: ...
- 【字符串匹配】UVALive 4670 模板题
给一个文本T,和n个模板字符串,都是由小写字母组成,问这些字符串那些在字符串中出现的次数最多,输出最多的次数以及相应的字符串. AC自动机的模板题,递归输出的时候改成累加次数统计数组cnt即可. 大白 ...
- 九度OJ 1552座位问题(dp)
刚开始写的一维数组,但是由于后面的数字较大,要对它取模,所以用一维数组进行减法运算,结果就不对了.所以还是得用二维数组,用dp[n][0]来表示第n位为男生总的方法个数,dp[n][1]表示第n位为女 ...
- CSS3 target 伪类不得不说那些事儿(纯CSS实现tab切换)
是不是觉得target有点眼熟?! 今天要讲的不是HTML的<a>标签里面有个target属性. target伪类是css3的新属性. 说到伪类,对css属性的人肯定都知道:hover.: ...
- mongodb一些特性
mongodb 地理位置 mongodb schema mongodb 定时任务 mysql 也有定时任务 mongodb 读写分离 http://blog.csdn.net/sd0902/artic ...