Android 手势识别控件 GestureOverlayView

来源:互联网 发布:php精粹 编辑:程序博客网 时间:2024/06/05 06:44

手势识别控件GestureOverlayView的试用方法 

首先在布局文件里添加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 手势是一笔构成或多笔 -->        android:gestureStrokeType="multiple" >    </android.gesture.GestureOverlayView>


这里需要注意控件名称不可以为GestureOverlayView,而是android.gesture.GestureOverlayView


然后添加手势

这里需要3个对象  分别是:

GestureOverlayView overlay = null;GestureLibrary library = null;Gesture gesture = null;
overlay是你的手势控件

library用于存储手势

gesture是你画的手势


监听手势控件实现OnGestureListener接口重写:

@Overridepublic void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {// TODO Auto-generated method stub}@Overridepublic void onGesture(GestureOverlayView overlay, MotionEvent event) {// TODO Auto-generated method stub}@Overridepublic void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {// TODO Auto-generated method stub//得到手势gesture = overlay.getGesture();}@Overridepublic void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {// TODO Auto-generated method stub}
保存手势 存到本地文件:

library = GestureLibraries.fromFile(libraryFile);
//给手势取名library.addGesture(gestureName, gesture);library.save();

查看你添加的手势:


GestureLibrary library = GestureLibraries.fromFile(gestureFiles);if (library.load()) {for (String name : library.getGestureEntries()) {for (Gesture gesture : library.getGestures(name)) {final Bitmap bitmap = gesture.toBitmap(borderLength, borderLength,mThumbnailInset, mPathColor);}}}

使用手势

在另一个界面在添加一个手势控件并添加手势触发事件

overlay.addOnGesturePerformedListener(new OnGesturePerformedListener() {@Overridepublic void onGesturePerformed(GestureOverlayView overlay,Gesture gesture) {// TODO Auto-generated method stubList<Prediction> predictions = new ArrayList<Prediction>();File gestureFile = new File(AppData.GESTURE_PATH);File[] gestureFiles = gestureFile.listFiles();for (int i = 0; i < gestureFiles.length; i++) {library = GestureLibraries.fromFile(gestureFiles[i]);if (library.load()) {List<Prediction> list = library.recognize(gesture);for (Prediction prediction : list) {predictions.add(prediction);}}}double maxScore = predictions.get(0).score;String maxName = predictions.get(0).name;for (Prediction prediction : predictions) {if (maxScore < prediction.score) {maxScore = prediction.score;maxName = prediction.name;}}if (maxScore > 2) {execute(maxName);} else {// Toast.makeText(context, "未找到相应的手势",// Toast.LENGTH_LONG).show();}}});
第一次发博客 以前做的很多东西都忘了每次用的时候都要上网找  所以在此记录  以后养成一种习惯



0 0
原创粉丝点击