Android自定义手势识别
2015-11-18 17:17
465 查看
自定义手势
要想实现自定义手势的识别,前提当然是我们要自定义手势了。在模拟器中我们可以找到这么一个程序GesturesBuilder。如图:如果模拟器中没有,我们也可以这样找到:
这样就导入了一个Android的实例工程,在模拟器上安装即可。
用这个APP保存自己自定义的手势。(用法很简单,读者自行研究)
手势资源
这是我自定义的手势:然后找到模拟器上存放这三个手势的文件。这是我模拟器上存放的目录
将gestures文件放入资源文件夹下的raw文件夹下。
手势识别
直接上代码,不懂的看注释布局:
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.gesture.GestureOverlayView android:id="@+id/view" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/iv" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/ic_launcher" /> </android.gesture.GestureOverlayView> </LinearLayout>
// view为GestureOverlayView 是加载手势的图层 view = (GestureOverlayView) findViewById(R.id.view); // 加载手势库 library = GestureLibraries.fromRawResource(this, R.raw.gestures); // 加载手势库,应该判断返回值,判断加载是否成功 library.load(); // 加载监听 view.addOnGesturePerformedListener(new OnGesturePerformedListener() { @Override public void onGesturePerformed(GestureOverlayView overlayView, Gesture gesture) { // gesture为用户在GestureOverlayView图层上的手势 // 将gesture与手势库中的手势比较 返回一个list对象存放的是一组Prediction对象 // Prediction有2个字段 name(对应自定义手势的名字)score(相似度) // ArrayList<Prediction>是按照相似度从高到低排列的,所以我们不用遍历这个数组,只取第一个就OK ArrayList<Prediction> predections = library.recognize(gesture); Prediction predection = predections.get(0); // 判断最相似的Prediction相似度是否达到标准 // 最好不要太高,以防识别不到 if (predection.score >= 5.0) { String msg = ""; // 这个手势被识别了,然后我们判断一下这是手势库中的那个手势 if (predection.name.equals("next")) { msg = "下一首"; } else if (predection.name.equals("previous")) { msg = "上一首"; } else if (predection.name.equals("refresh")) { msg = "刷新"; } if (!msg.isEmpty()) { Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } } } });
这里ArrayList是一个相似度从高到低的数组,只要加载的手势库不为空,predictions.get(0)就不会为空,不过在加载手势库的时候应该判断一下是否加载成功。
上一篇,简单手势识别
相关文章推荐
- android使用gesturedetector手势识别示例分享
- 在Swift程序中实现手势识别的方法
- IOS初级教程2:UITapGestureRecognizer手势识别的简单使用
- Android手势库
- Android Gesture Detector
- 实战1.2-利用手势识别器,实现视图的手势控制
- 导航控制器 手势识别不了
- IOS 开发手势识别
- 转自原文地址:IOS UIScrollview UIImageView点击事件处理
- ios自用学习笔记-触摸事件与手势识别
- 安卓(Android)surfaceview无法使用gesturedetector的解决办法
- OC笔记 - 事件处理(2015.4.3)
- Android自定义View(一)
- Android自定义绘制:Shader - 模仿iOS滑动解锁
- 一个比较有前景的电脑应用程序构想
- ListView与手势识别不能正确响应的解决办法
- Gesture Recognizers与触摸事件分发
- ios学习笔记之手势识别
- Android GestureDetector手势识别类的几种情况
- UIGestureRecognizer iOS手势识别器