你好!谢谢您的阅读。
基于 this 的答案,我像这样集成了View拖动:
float dX, dY;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = view.getX() - event.getRawX();
dY = view.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
setX(event.getRawX() + dX);
setY(event.getRawY() + dY);
break;
default:
return false;
} return true;
}
但是,视图相对于我手指的位置会与父级布局的比例成比例地偏移。换句话说,当我开始放大布局时,视图拖动会中断。
我已经调试了很多时间,看来即使知道父级布局比例(例如 dScale ),我也无法以固定的方式使用该值完全抵消。
我什至无法达到手指和视图之间的距离恒定的位置。
请注意,只有当父母的比例尺不等于1时,该问题才可见。
。
非常感谢您的帮助!
答案 0 :(得分:0)
为进一步参考,可以通过在两次出现时将父级的缩放比例应用于getRawX()方法来解决这种情况。我以某种方式没有尝试过...
float dX, dY;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = view.getX() - event.getRawX() / dScale;
dY = view.getY() - event.getRawY() / dScale;
break;
case MotionEvent.ACTION_MOVE:
setX(event.getRawX() / dScale + dX);
setY(event.getRawY() / dScale + dY);
break;
default:
return false;
} return true;
}
我还建议先将MOVE盒放在开关中。
我想可以通过“视图定位方法知道如何处理缩放,触摸回调方法不知道”来模糊地解释该解决方案的原因。
希望这会有所帮助!