В этом примере мы просто обращаемся к файлу, который был записан приложением Gestures Builder. В методе onCreate для этого используется метод GestureLibraries. fromFile. Кроме того, в комментариях, как получать доступ к файлу жестов, который является частью приложения. Метод fromRawResource требует передачи в аргументе обычного идентификатора ресурса и помещения файла ресурсов в каталог /res/raw.
Результирующее приложение делает не особенно много, однако позволяет лучше понять то, как Android обрабатывает жесты. В начале приложение загружает файл жестов и фиксирует в журнале, что он найден. Кроме того, приложение записывает в журнал результат сопоставления примера жеста, нарисованного на экране. Запустите приложение Gesture Revealer (предполагается, что с помощью приложения Gestures Builder уже было создано несколько жестов в файле gestures). Для каждого жеста в журнале фиксируется идентификатор, количество и длина штрихо.
Воспроизведите на экране несколько жестов, которые, как вы знаете, существуют в библиотеке жесто. Затем изобразите жесты, которых в библиотеке нет. Просмотрите записи в LogCat, чтобы понять, что случилось. Вы можете заметить, что иногда нарисованное не распознается, когда, казалось бы, должно, а иногда и наоборот — Android распознает нарисованное не так, как было задумано. Тем не менее, в большинстве случаев распознавание проходит корректно. Также можно заметить, что когда Android распознает введенный жест, выводятся уровни совпадения со всеми жестами в библиотеке, но если жест не распознан, то не выводится ничего.
Кроме того, обратите внимание на то, что происходит, если при вводе жеста с множеством штрихов, такого как буква E, допустить длительную задержку между отдельными штрихами. Приложение возьмет все, что было введено до этого момента, и начнет сравнивать его с содержимым библиотеки жестов, давая в результате либо неверное совпадение, либо вообще не находя совпадений. Время задержки задается в FadeOffset. Здесь все становится сложнее. Необходимо, чтобы инфраструктура Android начала сравнение, как только ввод жеста завершен, однако нет никакого способа узнать, что пользователь завершил, кроме как ожидать в течение определенного периода времени возможный ввод нового штриха для жеста. http://www.trade-modus.ru/page/article/kozha-s-tisneniem
Таким образом, FadeOffset управляет двумя аспектами: временем ожидания нового штриха как части текущего жеста и периодом ожидания перед началом поиска жеста в библиотеке жесто. Слишком большое значение FadeOffset приводит к длительному ожиданию начала поиска совпадения. Слишком малое значение FadeOffset затруднит ввод жестов с множеством штрихов, т.к. Android будет считать, что жест завершен еще до ввода следующего его штриха. Является ли значение миллисекунд подходящим, зависит от вас. Можете предоставить пользователям приложения возможность персональной настройки этого значения.
Обратите внимание, что элемент GestureOverlayView поддерживает настройку, управляющую тем, следует ли ожидать жесты с множеством штрихов. Это XML- атрибут android:gestureStrokeType, который может принимать значения single (по умолчанию) и multiple. Чтобы разрешить рисование жестов с множеством штрихов, этот атрибут должен быть установлен в multiple. Его также можно установить и программно через setGestureStrokeType (int type), используя в качестве аргумента GestureOverlayView.GESTURE_STROKE_TYPE_SINGLE или GestureOverlayView. GESTURE_STROKE_TYPE_MULTIPLE. Элемент GestureOverlayView также поддерживает атрибуты и методы XML для настройки цветов и толщины линий.
Опубликовал katy
February 17 2015 18:56:41 ·
0 Комментариев ·
2861 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.