我正在为我的应用程序实现imageview拖动功能。 我试过下面的代码,但它的行为很奇怪。当我尝试拖动图像 它会改变位置,在移动过程中它会像缩放图像一样显示。 我想用手指平滑地移动图像。
请帮我解决这个问题
@Override
public boolean onTouch(View v, MotionEvent event) {
final int X = (int) event.getRawX();
final int Y = (int) event.getRawY();
MarginLayoutParams marginParams = new MarginLayoutParams(mImagePreView.getLayoutParams());
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
_xDelta = X - marginParams.leftMargin;
_yDelta = Y - marginParams.topMargin;
break;
case MotionEvent.ACTION_MOVE:
marginParams.leftMargin = X-_xDelta;
marginParams.topMargin = Y - _yDelta;
marginParams.rightMargin = -250;
marginParams.bottomMargin = -250;
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(marginParams);
mImagePreView.setLayoutParams(layoutParams);
break;
default:
break;
}
return true;
}
答案 0 :(得分:0)
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mImagePreView.getLayoutParams();
layoutParams.leftMargin += offsetX;
layoutParams.topMargin += offsetY;
有错误:
_xDelta = X - marginParams.leftMargin;
_yDelta = Y - marginParams.topMargin;
X - 绝对坐标中的事件marginParams.leftMargin - 坐标相对于父布局