У меня есть пользовательский вид на Android, который содержит onDraw вместе с методом onTouchEvent, и я бы хотел записать все коснувшиеся координаты X за последние 2 секунды. То, что я имел в виду, это простой массив с плавающей точкой, который заполняется motionEvent.getX(), но я не знаю, как впоследствии удалить «старые» координаты или даже инициализировать такой динамический массив.Как записывать/отслеживать координаты onTouch прошлых X секунд?
ответ
Первое, что вам нужно сделать, это создать пользовательский объект-обертку, который будет содержать касание координат X/Y, а также отметку времени, в которой находятся координаты. Примером может теоретически выглядеть следующим образом:
public class TouchRecord {
float x;
float y;
long expiry = -1L;
/**
* Default constructor taht will not set an expiration time.
* @param x
* @param y
*/
public TouchRecord(float x, float y) {
this.x = x;
this.y = y;
}
/**
* Overloaded constructor that will handle setting up the touch record expiration time.
*
* @param x
* @param y
* @param millisToExpiry
*/
public TouchRecord(float x, float y, long recieved, long millisToExpiry) {
this.x = x;
this.y = y;
// Store the time this touch record should be expired based on the current uptime and the
// milliseconds in the touch record is valid.
this.expiry = SystemClock.uptimeMillis() + millisToExpiry;
}
public float getY() {
return y;
}
public float getX() {
return x;
}
public boolean hasExpired() {
// If the expiry value hasn't been set always return false.
return (expiry != -1 ? (SystemClock.uptimeMillis() >= expiry): false);
}
}
Тогда внутри вашего пользовательского вида в onTouchEvent (MotionEvent) вы прислушайтесь к действию MotionEvent.ACTION_DOWN и создать новый TouchRecord OBJ и передать в Х , Y и значения истечения в конструктор и добавьте obj в ArrayList, так как он может динамически изменять размер по команде (это необходимо, потому что система может быть затоплена дюжиной сенсорных событий очень быстро, и вам трудно точно знать, сколько вас получат через 2 секунды). Подготовьте обработчик, который будет бесконечно выполнять runnable каждые 2 секунды (или даже меньше, если вы хотите, чтобы ваши сенсорные записи оставались максимально точными и актуальными), которые будут перебирать все TouchRecords и удалять все истекшие индексы.
- 1. Как отслеживать координаты x и y в событии onTouch?
- 2. Повернутый вид onTouch неправильные координаты
- 3. onTouch событие координаты и ImageView Жеребьевка координаты несовпадение
- 4. Android - Pinch zoom ontouch координаты события
- 5. Получите реальную позицию X/Y события onTouch
- 6. получить представление начало координат x-y ontouch конкретный вид
- 7. Обновление маркеров через x секунд
- 8. GridView onTouch
- 9. Координаты Java X Y
- 10. Координаты Cocos2d-x
- 11. Тост каждые X секунд
- 12. Android: получение x, y координаты представления
- 13. ggplot продолжается x секунд
- 14. ontouch в андроида: получение X и координаты Y и рисование окружности на этой точке
- 15. Android webview onTouch issue
- 16. как реализовать onTouch прослушиватель?
- 17. Отправить координаты на сервер за 10 секунд
- 18. OnClick и onTouch
- 19. Как получить onTouch x и y значение в setOnLongClickListener?
- 20. Изменение x/y-координаты эллипса
- 21. onTouch и onClick
- 22. координаты x, y пользовательского UIVIew
- 23. приложение, не отображающее координаты x и y
- 24. Переадресация через X секунд AngularJS
- 25. Печать слова каждые X секунд
- 26. Canvas FireFox X Y Координаты
- 27. Найти координаты x-y клавиатуры
- 28. Excel: пересчет каждые x секунд
- 29. Запуск void через x секунд
- 30. Показать координаты X и Y?