我使用setOnTouchListener
来抓取MotionEvent.ACTION_DOWN
和MotionEvent.ACTION_MOVE
,以便在点击时移动视图。
Bt在三星S3(4.1.1)上工作正常,但在另一个Android 2.3.3上无效(无法捕获MotionEvent.ACTION_MOVE
)。
任何评论都有帮助,谢谢。
=> => =>
在Log.d()之后,捕获了MotionEvent.ACTION_DOWN
和“MotionEvent.ACTION_MOVE”,但是在Android 4.1.1上可以在“MotionEvent.ACTION_MOVE”时移动视图,但在2.3.3上,视图不会移动。不知道为什么。似乎findViewById(R.id.layoutMapMemoPhoto).invalidate()在2.3.3上不起作用。
public boolean onTouch(View v, MotionEvent event) {
FrameLayout.LayoutParams lParams = null;
final int X = (int) event.getRawX();
final int Y = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
lParams = (FrameLayout.LayoutParams) v.getLayoutParams();
yDeltaImageView = Y - lParams.topMargin;
Log.d("DOWN");
break;
case MotionEvent.ACTION_MOVE:
lParams = (FrameLayout.LayoutParams) v.getLayoutParams();
lParams.topMargin = Y - yDeltaImageView;
v.setLayoutParams(lParams);
Log.d("MOVE");
break;
}
findViewById(R.id.id_of_parent_view).invalidate();
return true;
}