Есть ли способ получить координаты события касания на прокручиваемой карте?
Значение, когда я касаюсь одной точки на экране, getX()
и getY()
возвращают соответствующие значения, а затемкогда я прокручиваю карту, возвращаемые координаты должны относиться к карте, а не к экрану.
Например.У меня есть фоновая карта 750x750, и размер экрана моего устройства составляет 480x800.
при первом касании говорят, что возвращенные координаты (100, 200).теперь, когда я прокручиваю карту и касаюсь где-то еще, я получаю координаты 200, 200.
Я хочу получить координаты относительно карты, а не экрана.
Я давно пытался это выяснить и тщетно прочесывал сеть и другие сайты.
, пожалуйста, помогите.
заранее спасибо
\ m /
мне нужны координаты, потому что я разрабатываю игру, в которой у меня есть большая карта и объекты на ней,когда я прокручиваю карту, мне нужно, чтобы объекты двигались вместе в одной и той же позиции.вот мой код:
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
touchStart.set(ev.getX(), ev.getY());
x = ev.getX();
y = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
newX = ev.getX() - touchStart.x + prevPicStart.x;
newY = ev.getY() - touchStart.y + prevPicStart.y;
if ((newX <= 0 && newX > 0 - mBG.getWidth() + Craz.DISP_WIDTH)) {
picStart.x = newX;
}
if ((newY <= 0 && newY > 0 - mBG.getHeight() + Craz.DISP_HEIGHT)) {
picStart.y = newY;
}
invalidate();
break;
case MotionEvent.ACTION_UP:
prevPicStart.x = picStart.x;
prevPicStart.y = picStart.y;
break;
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawBitmap(mBG, picStart.x, picStart.y, paint);
canvas.translate(picStart.x, picStart.y);
mBDoor.draw(canvas);
}