Все, я расширил ImageView, чтобы реализовать масштабирование масштабирования и масштабирования на изображении. Это делается путем изменения матрицы и ее применения к изображению. Теперь я также перезаписываю onDraw() для рисования примитивов (т. Е. Прямоугольников и кругов). Я применил матрицу к холсту и, похоже, правильно обработал масштабирование, но единственная проблема заключается в том, что эта позиция отключена на рисованных элементах. Как мне перевести позиции нарисованных предметов, чтобы отразить новую шкалу?Android: масштабирование ImageView и его элементов onDraw()
2
A
ответ
1
Существует aproach без матрицы, вы можете реализовать щепотку и масштабирование непосредственно в методе onDraw. Проверьте это сообщение в блоге: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.translate(mPosX, mPosY);
mIcon.draw(canvas);
canvas.restore();
}
спасибо, что это действительно сработало. Однако, как только перевод и/или масштабирование будут выполнены, мой код касания, чтобы поймать касания примитивов, больше не работает. Есть ли способ перевести значения onTouch (MotionEvent) в соответствие с текущим на холсте? – serveace6
вам нужно рассчитать положение ваших объектов после перевода. – ovonel
Я смог перевести позицию, вычитая позицию события касания по смещению, но любые идеи по факторизации шкалы? – serveace6