Android 停止从视图的中心点拖出屏幕
Android stop drag out of screen from center point of View
Image showing intended result
有没有办法阻止视图的中心点使用 onTouch 移动事件拖出屏幕?
我可以检测到该点,但我需要逻辑来停止视图移动,然后在用户向后滑动时重新加入拖动。设置一个布尔值将禁用移动事件,这是不好的,将视图设置回已知的好点是不稳定的。
这个问题没有任何答案,所以我想知道是否有可能...
您可以使用它来将您的视图限制在屏幕边界内。
int width=v.getLayoutParams().width;;
int height=v.getLayoutParams().height;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = v.getX() - event.getRawX();
dY = v.getY() - event.getRawY();
return true;
case MotionEvent.ACTION_MOVE:
if (width == windowWidth && height == windowHeight){}
else {
v.animate()
.x(event.getRawX() + dX)
.y(event.getRawY() + dY)
.setDuration(0)
.start();
if (event.getRawX() + dX + width > windowWidth) {
v.animate()
.x(windowWidth - width)
.setDuration(0)
.start();
}
if (event.getRawX() + dX < 0) {
v.animate()
.x(0)
.setDuration(0)
.start();
}
if (event.getRawY() + dY + height > windowHeight) {
v.animate()
.y(windowHeight - height)
.setDuration(0)
.start();
}
if (event.getRawY() + dY < 0) {
v.animate()
.y(0)
.setDuration(0)
.start();
}
return true;
}
其中 v 是 onTouchListener 中的视图
Image showing intended result
有没有办法阻止视图的中心点使用 onTouch 移动事件拖出屏幕?
我可以检测到该点,但我需要逻辑来停止视图移动,然后在用户向后滑动时重新加入拖动。设置一个布尔值将禁用移动事件,这是不好的,将视图设置回已知的好点是不稳定的。
这个问题没有任何答案,所以我想知道是否有可能...
您可以使用它来将您的视图限制在屏幕边界内。
int width=v.getLayoutParams().width;;
int height=v.getLayoutParams().height;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = v.getX() - event.getRawX();
dY = v.getY() - event.getRawY();
return true;
case MotionEvent.ACTION_MOVE:
if (width == windowWidth && height == windowHeight){}
else {
v.animate()
.x(event.getRawX() + dX)
.y(event.getRawY() + dY)
.setDuration(0)
.start();
if (event.getRawX() + dX + width > windowWidth) {
v.animate()
.x(windowWidth - width)
.setDuration(0)
.start();
}
if (event.getRawX() + dX < 0) {
v.animate()
.x(0)
.setDuration(0)
.start();
}
if (event.getRawY() + dY + height > windowHeight) {
v.animate()
.y(windowHeight - height)
.setDuration(0)
.start();
}
if (event.getRawY() + dY < 0) {
v.animate()
.y(0)
.setDuration(0)
.start();
}
return true;
}
其中 v 是 onTouchListener 中的视图