Есть ли способ получить координаты сенсорного события на прокручиваемой карте?
Это означает, что когда я касаюсь одной точки экрана, getX()
и getY()
возвращают соответствующие значения, а затем, когда я прокручиваю карту, возвращаемые координаты должны относиться к карте, а не к экрану.
например. У меня есть фоновая карта 750 x 750, а размер экрана моего устройства — 480 x 800.
при первом касании возвращаются координаты (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);
}
scrollTo()
/scrollBy()
? вы можете просто добавить значенияgetScroll*()
к вашим координатам относительно экрана. - person bigstones   schedule 05.04.2011