Для использования класса VelocityTracker первым делом должен быть получен его экземпляр вызовом статического метода VelocityTracker.obtain. Затем к этому экземпляру можно добавлять объекты MotionEvent с помощью метода addMovement(MotionEvent ev). Данный метод будет вызываться в обработчике, который получает объекты MotionEvent от метода обработчика, такого как onTouch, или от метода onTouchEvent представления. Экземпляр VelocityTracker использует объекты MotionEvent для выяснения того, что происходит с последовательностью касания. После того, как VelocityTracker получит, по крайней мере, два объекта MotionEvent, можно применять другие методы для определения того, что случилось.
Два метода VelocityTracker — getXVelocity и getYVelocity — возвращают скорость перемещения пальца по направлениям X и Y соответственно. Возвращаемое значение представляет количество пикселей за промежуток времени. Оно может выглядеть как число пикселей в миллисекунду, секунду или любой другой промежуток. Чтобы сообщить VelocityTracker, какой промежуток времени использовать, перед обращением к методам getXVelocity и getYVelocity понадобится вызвать метод computeCurrentVelocity(int units) класса VelocityTracker.Значение units представляет количество миллисекунд в промежутке времени для измерения скорости. Если нужны пиксели в миллисекунду, укажите в units значение, а для пикселей в секунду — значение. Значение скорости, возвращаемое методами getXVelocity и getYVelocity, будет положительным, если движение совершается вправо (для X) или вниз (для Y), и отрицательным — если влево (для X) или вверх (для Y).
По завершении работы с объектом VelocityTracker, полученным с помощью метода obtain, вызовите метод recycle этого объекта. . пример кода обработчика onTouchEvent для активности. Оказывается, что активность имеет обратный вызов onTouchEvent, который инициируется, когда событие касания не было обработано ни одним из представлений. Поскольку применяется стандартная, пустая компоновка, представлений, потребляющих события касания, нет.
С классом VelocityTracker связано еще несколько ключевых моменто. Очевидно, что когда к VelocityTracker добавлен только один объект MotionEvent (событие ACTION_DOWN), вычисление скоростей может дать в результате только. Этот объект служит стартовой точкой, и для последующих событий ACTION_MOVE скорости могут быть вычислены. Кроме того, оказывается, что после добавления к VelocityTracker события ACTION_UP скорости также вычисляются как нулевые. Следовательно, после добавления ACTION_UP скорости перемещения по X и Y получить нельзя. Это нужно делать после добавления последнего события ACTION_MOVE. http://luxsmart.ru/index.php?route=product/manufacturer/product&manufacturer_id=5 Так как с классом VelocityTracker связаны высокие накладные расходы в плане производительности, применяйте его не очень интенсивно. Кроме того, удостоверьтесь, что удалили свой экземпляр VelocityTracker после того, как поработали с ним, на тот случай, если он понадобится какому-то другому приложению. В Android можно иметь более одного экземпляра VelocityTracker, однако каждый из них занимает много памяти, поэтому по завершении использования экземпляр следует как можно быстрее удалить. . также видно, что когда начинается новая последовательность касания (т.е. поступает событие ACTION_DOWN, а объект VelocityTracker уже существует), вместо удаления существующего и последующего получения нового экземпляра VelocityTracker применяется метод clear.
Опубликовал katy
February 17 2015 18:36:04 ·
0 Комментариев ·
3374 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.