ユーザーが画面を押したポイント (ACTION_DOWN) と離したポイント (ACTION_UP) の間の距離を取得したいと考えています。これにより、ビットマップ イメージがカーソル位置に戻る (または画面上に戻る) ことなく、(画面外に押し出されても) 同じ量だけビットマップ イメージを移動できるようになります。ただし、私のコードでは、画像が間違った方向に移動したり、画面のプレスを離しても画像が動き続けたりすることがあります。ここで説明する必要があるデバウンスの問題はありますか?
私のonTouchメソッド(ACTION_DOWNポイントとACTION_UPポイントを取得し、一方を他方から減算します)
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == event.ACTION_DOWN) {
preFingerPosX = event.getX();
preFingerPosY = event.getY();
}
else if(action == event.ACTION_UP) {
fingerPosX = event.getX();
fingerPosY = event.getY();
}
dx = fingerPosX - preFingerPosX;
dy = fingerPosY - preFingerPosY;
bmpX += dx;
bmpY += dy;
//invalidate();
return true;
}
そして私の run() メソッド
public void run() {
// TODO Auto-generated method stub
while(isRunning) {
if(!surfaceHolder.getSurface().isValid()) {
continue;
}
canvas = surfaceHolder.lockCanvas();
canvas.drawRGB(0, 0, 0);
canvas.drawBitmap(bmp, bmpX-(bmp.getWidth()/2),
bmpY-(bmp.getHeight()/2), null);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
ありがとう