画面上でImageViewをドラッグするために、次の関数を記述しました。イメージをドラッグして狂ったように飛び回る間を除いて、問題なく動作しているようです。AndroidでRelativeLayoutを使用したonTouchListenerの奇妙なジャンプ値
ログを見ると、正しい値の間にXとYの値が正しくないようです。私はなぜそう思うかわからない。誰でもこの問題を解決する手助けができますか?ログ出力の
hereOnTouchListener imageListener = new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int eventAction = event.getAction();
int X = (int)event.getX();
int Y = (int)event.getY();
if (eventAction == MotionEvent.ACTION_DOWN){
dragging = true;
tempParams = new RelativeLayout.LayoutParams(v.getWidth(), v.getHeight());
Log.i("v width and height", v.getWidth() + " " + v.getHeight());
}
if (eventAction == MotionEvent.ACTION_UP){
Log.i("dragging up","dragging up" + X + " " + Y);
dragging = false;
} else if (eventAction == MotionEvent.ACTION_MOVE){
if (dragging){
Log.i("dragging","dragging " + X + " " + Y);
tempParams.leftMargin = X;
tempParams.topMargin = Y;
v.setLayoutParams(tempParams);
// v.setPadding(X, Y, 0, 0);
v.invalidate();
}
}
return true;
}
};
サンプル:
11-27 19:43:34.484: INFO/dragging(3530): dragging 131 131
11-27 19:43:34.504: INFO/dragging(3530): dragging 84 288
11-27 19:43:34.519: INFO/dragging(3530): dragging 132 134
11-27 19:43:34.539: INFO/dragging(3530): dragging 84 292
11-27 19:43:34.554: INFO/dragging(3530): dragging 132 139
11-27 19:43:34.574: INFO/dragging(3530): dragging 84 294
11-27 19:43:34.594: INFO/dragging(3530): dragging 132 142
11-27 19:43:34.609: INFO/dragging(3530): dragging 84 294
可能でしょうか。あなたの質問をより読みやすくするために再フォーマットしてください。 –