Я работаю над своим первым «настоящим» Android-приложением, графическим редактором рабочего процесса. Рисование выполняется в пользовательском классе, который является подклассом View. На данный момент мои элементы представляют собой прямоугольники, которые рисуются на холсте. Чтобы обнаружить действия с элементами, я сравниваю координаты и проверяю наличие элементов в месте касания.
Чтобы реализовать жест масштабирования, я попробовал http: //android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
С помощью функции canvas.scale (...) с 4 аргументами центрированное масштабирование работает хорошо, но я теряю возможность чтобы вычислить координаты холста, используя смещение с помощью mPosX и mPosY, чтобы определить, происходит ли прикосновение после увеличения к элементу.
Я попытался изменить пример в сообщении выше, чтобы центрировать холст на жесте масштабирования с помощью:
canvas.save();
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor, mScalePivotX, mScalePivotY);
//drawing ....
canvas.restore();
Я не нашел каких-либо примеров о том, как это может быть сделано без потери ссылок смещения для вычисления координат. Есть ли простой способ обхода? Я попытался вычислить смещение с центром жеста и коэффициентом масштабирования, но не смог: /
Я видел, что другие примеры, в которых используется ImageView, часто используют матрицу для преобразования изображения. Можно ли это сделать с помощью настраиваемого вида и холста? Если да, как мне получить смещение x и y для проверки координат?
Кроме того, если мои идеи полностью неверны, я был бы очень рад увидеть несколько примеров того, как это делается правильно.
Thx! ;)