Android:自定义手势
2016-09-27 10:55
323 查看
Android:自定义手势
标签(空格分隔): android编号:000136 作者:陈小默 语言:kotlin 版本:1
Android自定义手势
一手势使用介绍
1 增加手势
11 GestureOverlayView
12 手势库
13 获取用户录入的手势
14 保存手势
2 识别手势
21 加载手势库
22 识别手势
一、手势使用介绍
在某些情况下,我们可能会需要用户自定义手势来完成某些操作,比如我曾经用过的手机里就有这个功能:用户在手机锁屏上绘制某些字母,就能够打开相应的应用。接下来我们将说明自定义手势的一般用法。1.1 增加手势
1.1.1 GestureOverlayView
很显然,如果我们需要保存一个手势,那么必定先要在View上绘制手势。Android提供了GestureOverlayView这个视图组件,该组件继承自FrameLayout。我们可以向使用普通View一样将其添加到布局文件中。<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.gesture.GestureOverlayView android:layout_width="match_parent" android:layout_height="match_parent" android:gestureColor="#666" android:gestureStrokeType="single" android:gestureStrokeWidth="3"> </android.gesture.GestureOverlayView> </RelativeLayout>
该View中用到了三个比较重要的属性
gestureColor:画笔的颜色
gestureStrokeType:该手势是一笔完成(single)还是多笔完成(multiple),通常情况下一笔即可
gestureStrokeWidth:画笔的粗细
1.1.2 手势库
Android中使用GestureLibrary代表手势库,其中提供了保存手势和识别手势的方法。GestureLibraries是Android提供的管理手势库的工具了,其中提供了下列几种方法来加载手势库:public static GestureLibrary fromFile(String path) ; public static GestureLibrary fromFile(File path) ; public static GestureLibrary fromPrivateFile(Context context, String name) ; public static GestureLibrary fromRawResource(Context context, @RawRes int resourceId) ;
这些方法看名字就知道其会从哪些地方加载手势库文件,其加载完成后会返回GestureLibrary对象代表这个手势库文件。
1.1.3 获取用户录入的手势
为了保存用户录入的手势,我们需要给刚才添加的GestureOverlayView设置监听:(findViewById(gestureOverlayView) as GestureOverlayView).addOnGesturePerformedListener { gestureOverlayView, gesture -> ... }
1.1.4 保存手势
当我们获取到Gesture对象后,我们就可以使用刚刚创建的GestureLibrary来保存手势了,其中GestureLibrary提供了addGesture()将手势保存到当前手势库对象中,而save()方法会将当前对象中的手势数据存储到本地文件中,如果我们在添加手势后没有调用save()方法进行保存,则下次打开手势库将无法找到上次录入的手势:gestureLib.addGesture("Gesture_Name", gesture) gestureLib.save()
于是手势就被保存在了手势库中,并且被命名为”Gesture_Name”
1.2 识别手势
1.2.1 加载手势库
我们已经在1.1.2中介绍了如何加载手势库,但是这里需要补充说明:当我们使用1.1.2中的方法创建手势库对象之后,还需要使用load()方法去将本地数据加载进来:gestureLib.load()
1.2.2 识别手势
GestureLibrary提供了recognize方法从当前手势库中识别与Gesture匹配的手势,其返回值是ArrayList<Prediction>对象,Prediction中只存放了两个属性,一个代表手势名称的name,一个代表匹配分数的score,分数越高表明两个手势越相似。以下示例打印输出了与当前输入手势匹配值大于2的手势的名称:
gestureLib.recognize(gesture).forEach { prediction -> if(prediction.score > 2.0) Log.e("TAG","${prediction.name}") }
相关文章推荐
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】
- 17—让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- Android之自定义(上方标题随ViewPager手势慢慢滑动)
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】
- Android游戏开发17:自定义手势--输入法手势技术
- Android 中自定义手势
- android 自定义ImageView实现图片手势滑动、多点触摸缩放
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果 .
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!
- android 自定义手势
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- 【多级树形菜单-dialog自定义动画弹出方式-手势监听】android实现treeView
- android--解决方案--自定义tabhost(动态添加选项+带自动水平滑动选项卡+手势切换选项卡及内容功能)