【发布时间】:2012-01-22 01:32:43
【问题描述】:
我必须在屏幕上拖动一些视图。我通过从触摸侦听器的 ACTION_MOVE 上的运动事件更改布局参数的左侧和顶部来修改它们的位置。有没有办法更顺畅地“拖动”物品?因为这种“拖拽”一点都不顺畅……这是代码
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
dx = (int) motionEvent.getX();
dy = (int) motionEvent.getY();
break;
case MotionEvent.ACTION_MOVE:
int x = (int) motionEvent.getX();
int y = (int) motionEvent.getY();
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) view.getLayoutParams();
int left = lp.leftMargin + (x - dx);
int top = lp.topMargin + (y - dy);
lp.leftMargin = left;
lp.topMargin = top;
view.setLayoutParams(lp);
break;
}
return true;
}
【问题讨论】:
-
在这里尝试使用我的代码:stackoverflow.com/a/18806475/878126 我认为这很顺利。
-
我刚刚在 Youtube 上上传了一个视频教程,介绍了如何通过一个简单的助手类使任何视图可拖动。看看:youtu.be/licui_5_iLk