android提供了用来识别和保存手势操作的仓库与绘图区,GestureLibrary与GestureOverlayView,利用它们可以很简单的实现保存手势与识别手势。
加载文件中手势:
gestureLib = GestureLibraries.fromFile(path);//实例手势仓库 gestureLib.load()//加载手势集合
识别手势:
gestureOverlayView.addOnGesturePerformedListener(new GestureListener());//添加监听 private final class GestureListener implements GestureOverlayView.OnGesturePerformedListener{ @Override public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { if(state){ List<Prediction> predictions = mLibrary.recognize(gesture);//从手势库中查询匹配的内容,匹配的结果可能包括多个相似的结果,匹配度高的结果放在最前面 if(!predictions.isEmpty()){ Prediction prediction = predictions.get(0); //prediction的score属性代表了与手势的相似程度 //prediction的name代表手势对应的字母 if(prediction.score > 1){ addressText.setText(prediction.name); } } } } }
保存手势:
gestureLib.addGesture(name, gesture);//第一个参数为手势名字String类型 gestureLib.save()
将手势转换成图片:
Bitmap bitmap = gesture.toBitmap(width, height, inset, color); //参数为别为宽,高,内间距,笔触颜色
最后转载一些GestureOverlayView的常用属性:
GestureOverlayView:一种用于手势输入的透明覆盖层,可覆盖在其他控件的上方,也可包含其他控件。
Android:eventsInterceptionEnabled 定义当手势已经被识别出来时,是否拦截手势动作
Android:fadeDuration 当用户画完手势时,手势淡出效果的持续时间,单位为毫秒(milliseconds)
Android:fadeEnabled 定义识别完手势后,手势是否自动淡出
Android:fadeOffset 淡出延迟,单位为毫秒,即用户画完手势之后到手势淡出之间的时间间隔
Android:gestureColor 描绘手势的颜色
Android:gestureStrokeAngleThreshold 识别是否为手势前,一笔必须包含的最小曲线度
Android:gestureStrokeLengthThreshold 识别是否为手势前,一笔的最小长度
Android:gestureStrokeSquarenessThreshold 识别是否为手势前,一笔的偏斜度阀值
Android:gestureStrokeType 定义笔画(定义为手势)的类型
Android:gestureStrokeWidth 画手势时,笔划的宽度
Android:orientation 指出是水平(当Orientation为vertical),还是垂直(当orientation为horizontal)笔画自动定义为手势
Android:uncertainGestureColor 未确定为手势之前,描绘用户笔画的颜色