有沒有辦法獲取可滾動地圖上觸摸事件的座標?獲取觸摸事件相對於可滾動地圖的座標
含義當我觸摸屏幕上的一個點時,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);
}
它是一個自定義視圖嗎?你是否用'scrollTo()'/'scrollBy()'實現了滾動?您可以將'getScroll *()'值添加到屏幕相對座標。 – bigstones 2011-04-05 12:37:39