Я заметил, что в Android API Level 11 (ICS) MotionEvent
имеет метод transform
, который принимает Matrix
.Это на самом деле сделало бы кое-что, что я делаю несколько чище, но я кодирую для уровня 8.
Есть ли удобная альтернатива MotionEvent.transform()
, которая работает на более ранних версиях Android?Мне бы хотелось, чтобы все исторические и мультисенсорные координаты были преобразованы, и мне бы хотелось, чтобы он правильно обрабатывал различие между относительными и абсолютными координатами, где все становится немного сложнее.
Что я на самом делеЯ хочу знать, могу ли я создать MotionEvent
, который является преобразованной копией другого MotionEvent
.На самом деле мне не нужны произвольные преобразования, но я должен уметь переводить и масштабировать.Я считаю, что могу перевести с offsetLocation
, но я не вижу способа масштабировать MotionEvent
(до уровня 11).В частности, как я могу преобразовать координаты события мультитач?Методы obtain
просто принимают одну (x, y) пару, а не массив.
Причина, по которой я хочу это сделать, заключается в том, что у меня есть один объект, который отправляет события в набор "дочерних" объектов,Прямо сейчас каждый из этих детей преобразует координаты в особом порядке.Однако родитель (диспетчер) знает, какое преобразование необходимо выполнить, поэтому было бы намного понятнее просто преобразовать MotionEvent
(или копию) перед отправкой его дочерним элементам.В качестве альтернативы я мог бы создать свой собственный класс, который либо обернет MotionEvent
, либо скопирует и преобразует данные из MotionEvent
, но было бы намного проще, если бы я мог использовать MotionEvent
.