Android перестает перетаскивать экран из центральной точки обзора
Изображение показывает намеченный результат
Есть ли способ остановить перемещение центральной точки вида с экрана с помощью событий перемещения onTouch?
Я могу определить точку, но мне нужна логика, чтобы остановить перемещение вида, а затем снова присоединиться к перетаскиванию, когда пользователь проводит назад. Установка логического значения приведет к отключению событий перемещения, которые не годятся, а установка представления назад к известной хорошей точке является нервной.
Ответов на этот вопрос нет нигде, поэтому мне интересно, возможно ли это вообще...
1 ответ
Решение
Вы можете использовать это, чтобы сделать ваш вид ограниченным границами экрана.
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