您的位置:首页 > 移动开发 > Android开发

Android 手势识别控件 GestureOverlayView

2014-05-09 15:55 453 查看

手势识别控件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;[/code]overlay是你的手势控件

library用于存储手势

gesture是你画的手势



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

@Override
public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
}
@Override
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
}
@Override
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
//得到手势
gesture = overlay.getGesture();
}
@Override
public 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() {
@Override
public void onGesturePerformed(GestureOverlayView overlay,
Gesture gesture) {
// TODO Auto-generated method stub

List<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();
}

}
});
第一次发博客 以前做的很多东西都忘了每次用的时候都要上网找 所以在此记录 以后养成一种习惯
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: