2012-01-25 6 views
2

Все, я расширил ImageView, чтобы реализовать масштабирование масштабирования и масштабирования на изображении. Это делается путем изменения матрицы и ее применения к изображению. Теперь я также перезаписываю onDraw() для рисования примитивов (т. Е. Прямоугольников и кругов). Я применил матрицу к холсту и, похоже, правильно обработал масштабирование, но единственная проблема заключается в том, что эта позиция отключена на рисованных элементах. Как мне перевести позиции нарисованных предметов, чтобы отразить новую шкалу?Android: масштабирование ImageView и его элементов onDraw()

ответ

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(); 
} 
+0

спасибо, что это действительно сработало. Однако, как только перевод и/или масштабирование будут выполнены, мой код касания, чтобы поймать касания примитивов, больше не работает. Есть ли способ перевести значения onTouch (MotionEvent) в соответствие с текущим на холсте? – serveace6

+0

вам нужно рассчитать положение ваших объектов после перевода. – ovonel

+0

Я смог перевести позицию, вычитая позицию события касания по смещению, но любые идеи по факторизации шкалы? – serveace6