У меня действительно странная проблема, когда я следую учебнику по жестам здесь: http://developer.android.com/resources/articles/gestures.html.
В Gesture Builder создано 4 уникальных жеста: + - × /
сложение и умножение - это многоходовые. Вычитание и деление - один ход.
Упражнение загружает предварительно созданную GestureLibrary (R.raw.gestures), добавляет OnGesturePerformedListener в GestureOverlayView и заканчивается onGesturePerformed (), когда жест обнаружен и выполнен.
Схема действий в XML
<android.gesture.GestureOverlayView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gestures"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gestureStrokeType="multiple"
android:eventsInterceptionEnabled="true"
android:orientation="vertical"
/>
Расположен в onCreate ()
mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!mLibrary.load()) {
finish();
}
GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
gestures.addOnGesturePerformedListener(this);
Находится в onGesturePerformed ()
ArrayList<Prediction> predictions = mLibrary.recognize(gesture);
// We want at least one prediction
if (predictions.size() > 0) {
Prediction prediction = predictions.get(0);
// We want at least some confidence in the result
if (prediction.score > 1.0) {
// Show the spell
Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
}
}
Основная проблема заключается в том, что встроенные жесты не распознаются правильно. Например, onGesturePerformed () никогда не выполняется, если за горизонтальным жестом следует вертикальный (дополнение). Метод вызывается , если вертикальный жест сопровождается горизонтальным. Вот так ведет себя и GesturesListDemo ( GesturesDemos.zip @ code.google.com ).
Кроме того, предсказанный жест в итоге оказывается неверным. Добавить признается как вычитание; умножить на деление; Вычтите как добавьте. Это полностью противоречиво.
Наконец, сложение и вычитание жестов, как правило, имеют сходные Prediction.score, что странно, поскольку они отличаются на весь ход.
Извините за длинный пост - хотел быть тщательным. Любой совет будет принята с благодарностью, спасибо всем.