android - Gesture学习 1
来源:互联网 发布:虎豹骑最帅捏脸数据女 编辑:程序博客网 时间:2024/05/20 23:03
手势已经不是什么新鲜事物了
关于手势在android上面的应用,我想大概有这么两种
1.用户画完一个手势,然后系统识别
2.用户的动作没有完成,边画边识别
比如:我想定义一个操作,画一个M,然后系统打开music应用,这就是情况1
在list页面中,用户不断拨动list,页面跟随滚动,这是情况2
这里先总结一下情况17
==增加+获取=====================================================
用户需要在页面上加入组件GestureOverlayView
我们需要给他设置监听事件
用户输入的手势对象如何得到呢
比如:
这里可以设置single和multiple
如果你只需要识别一笔,那么single就可以了,如果不确定,那么设置成multiple
"二",就需要两笔才能画出
gesture.getStrokesCount()能得到手势的笔数
(ps:ArrayList<GestureStroke> gestureStrokeList = gesture.getStrokes();也能得到每一笔的信息)
用户画好了手势,如何保存呢
很不幸,手势不是保存到数据库中的,也不能直接保存到数据库中,它是以文件的形式存在的
获得这个Library
==查询=======================================================
下面看看如何查询
如果要获得库中所有手势,貌似只能这样
但是大多数时候我们并不关心这些
我们更关心的是,如果用户做了个手势,我想知道在库中有没有和这个手势相似的,有多相似!
Prediction里面只有两个属性,name和score
score越大,那么就与recognize的手势越接近
==修改+删除=====================================================
如果要对手势修改(貌似也没什么可改的),比如改个名字吧,那么只能先删除,再添加了
关于手势在android上面的应用,我想大概有这么两种
1.用户画完一个手势,然后系统识别
2.用户的动作没有完成,边画边识别
比如:我想定义一个操作,画一个M,然后系统打开music应用,这就是情况1
在list页面中,用户不断拨动list,页面跟随滚动,这是情况2
这里先总结一下情况17
==增加+获取=====================================================
用户需要在页面上加入组件GestureOverlayView
- <android.gesture.GestureOverlayView
- android:id="@+id/gestures_overlay"
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:layout_weight="1.0"
- android:gestureStrokeType="multiple" />
<android.gesture.GestureOverlayView android:id="@+id/gestures_overlay" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1.0" android:gestureStrokeType="multiple" />这个组件是用来接收手势用的,有了它,你就可以在屏幕上面乱画了
我们需要给他设置监听事件
- GestureOverlayView gestureOverlayView = (GestureOverlayView) findViewById(R.id.gestures_overlay);
- gestureOverlayView.addOnGestureListener(new GestureOverlayView.OnGestureListener() {
- public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {}
- public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {}
- public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {}
- public void onGesture(GestureOverlayView overlay, MotionEvent event) {}
- });
GestureOverlayView gestureOverlayView = (GestureOverlayView) findViewById(R.id.gestures_overlay);gestureOverlayView.addOnGestureListener(new GestureOverlayView.OnGestureListener() { public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {} public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {} public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {} public void onGesture(GestureOverlayView overlay, MotionEvent event) {}});上面匿名类的四个函数作用显而易见
用户输入的手势对象如何得到呢
- mGesture = gestureOverlayView.getGesture();
mGesture = gestureOverlayView.getGesture();如果你觉得用户手势太短了,影响判断,那么可以在onGestureEnded时候做一些处理
比如:
- if (mGesture.getLength() < LENGTH_THRESHOLD) {
- gestureOverlayView.clear(false);//清除掉用户手势
- mGesture = null;
- //有些东西太短了是不行的...
- }else{
- //这样就可以了
- }
if (mGesture.getLength() < LENGTH_THRESHOLD) { gestureOverlayView.clear(false);//清除掉用户手势 mGesture = null; //有些东西太短了是不行的...}else{ //这样就可以了}xml里面写了一个属性android:gestureStrokeType="multiple"
这里可以设置single和multiple
如果你只需要识别一笔,那么single就可以了,如果不确定,那么设置成multiple
"二",就需要两笔才能画出
gesture.getStrokesCount()能得到手势的笔数
(ps:ArrayList<GestureStroke> gestureStrokeList = gesture.getStrokes();也能得到每一笔的信息)
用户画好了手势,如何保存呢
很不幸,手势不是保存到数据库中的,也不能直接保存到数据库中,它是以文件的形式存在的
- GestureLibrary gestureLibrary;
GestureLibrary gestureLibrary;Library,是的,文件是一个手势库,也就是说,一个文件对应多个手势
获得这个Library
- gestureLibrary = GestureLibraries.fromFile(path);
gestureLibrary = GestureLibraries.fromFile(path);然后保存到这个Library
- gestureLibrary.addGesture(mName, mGesture);
- gestureLibrary.save();
gestureLibrary.addGesture(mName, mGesture);gestureLibrary.save();增删改查的增加已经结束了
==查询=======================================================
下面看看如何查询
- mGestureLibrary.getGestures(entryName)
mGestureLibrary.getGestures(entryName)很不幸,它返回一个ArrayList<Gesture>,这也就意味着一个name对应多个Gesture
如果要获得库中所有手势,貌似只能这样
- final Set<String> entries = mGestureLibrary.getGestureEntries();
final Set<String> entries = mGestureLibrary.getGestureEntries();先获得所有名字,然后再获得每个名字对应的所有手势
但是大多数时候我们并不关心这些
我们更关心的是,如果用户做了个手势,我想知道在库中有没有和这个手势相似的,有多相似!
- ArrayList<Prediction> predictions = gestureLibrary.recognize(gesture);
ArrayList<Prediction> predictions = gestureLibrary.recognize(gesture);返回的是精确度的list
Prediction里面只有两个属性,name和score
score越大,那么就与recognize的手势越接近
==修改+删除=====================================================
如果要对手势修改(貌似也没什么可改的),比如改个名字吧,那么只能先删除,再添加了
- gestureLibrary.removeGesture(oldOne, oldGesture);
- gestureLibrary.addGesture(newOne, newGesture);
- gestureLibrary.save();
gestureLibrary.removeGesture(oldOne, oldGesture);gestureLibrary.addGesture(newOne, newGesture);gestureLibrary.save();
最后别忘记save
- android - Gesture学习 1
- android - Gesture学习 1
- android gesture的学习
- android - Gesture学习 -GestureOverlayView
- Android Gesture
- android Gesture
- Android Gesture
- Android学习笔记之手势(Gesture)检测
- Android学习之——手势(Gesture一)
- Android Gesture Detector
- Android Gesture Detector
- android手势Gesture识别
- Android的Gesture Detector
- Android Gesture 使用简介
- Android Gesture Detector
- Android之Gesture
- android Gesture Detector
- android Gesture imager
- tomcat配置https单向认证
- android很好的一篇文章,关于AndroidManifest.xml文件各个属性,补补基础
- C++中的异常处理机制
- 入驻CSDN
- 一、初识GDB(Linux下调试工具GDB教程)
- android - Gesture学习 1
- iPad、iPhone 界面设计标准
- 返回局部变量的问题
- android SQLite 简介
- void 及 void *数据类型
- STL map与Boost unordered_map
- 探索Lua5.2内部实现:TString
- 使用jQuery POST提交数据返回的JSON是字符串不能解析为JSON对象
- 通知栏自定义安装提示