Прерывание жестов вверх-вниз жестами прокрутки влево и вправо
Я делаю приложение для Android, в котором я использую onScroll
жесты для увеличения или уменьшения яркости при прокрутке вверх и вниз и при прокрутке слева направо Я увеличиваю и уменьшаю длительность песни onTouch
на экране, когда я прокручиваю вверх и вниз по экрану, он работает нормально, но немного прерывается с прокруткой слева направо, что создает проблему. Когда я выполняю прокрутку слева направо, она работает нормально, но некоторые прерывания с жестами вверх-вниз, которые используются на сенсорном экране. Подскажите пожалуйста что мне делать????
Вот мой код
if (Math.abs(deltaX) < Math.abs(deltaY)) {
if (Math.abs(deltaY) > SWIPE_THRESHOLD) {
if (deltaY > leftSidelastX) {
leftSidelastX = deltaY;
upBrightness();
Log.i("", "Left side Slide up");
} else {
leftSidelastX = deltaY;
downBrightness();
Log.i("", "Left side Slide down");
}
}
} else {
if (Math.abs(deltaX) > SWIPE_THRESHOLD) {
if (deltaX > leftSidelastX) {
leftSidelastX = deltaX;
leftScroll();
Log.i("", "Left side Slide left");
} else {
leftSidelastX = deltaX;
rightScroll();
Log.i("", "Left side Slide right");
}
}
}
1 ответ
Ваша внешняя структура, если остальное - проблема. Когда вы проводите пальцем вверх и вниз и перемещаете его немного в сторону, вы автоматически останавливаете движение пальцем вверх / вниз и переходите к движению влево / вправо.
В зависимости от того, что вы хотите, вы можете либо удалить структуру If Else, когда это будет возможно сделать одновременно, либо вам нужно установить переменную, если вы в данный момент проводите пальцем вверх или вниз, установите эту переменную в начале пролистывания и всегда спрашивайте эту переменную. Чем вам нужно сбросить его при остановке смахивания.
Решение 1:
if (Math.abs(deltaY) > SWIPE_THRESHOLD) {
if (deltaY > leftSidelastX) {
leftSidelastX = deltaY;
upBrightness();
Log.i("", "Left side Slide up");
} else {
leftSidelastX = deltaY;
downBrightness();
Log.i("", "Left side Slide down");
}
}
if (Math.abs(deltaX) > SWIPE_THRESHOLD) {
if (deltaX > leftSidelastX) {
leftSidelastX = deltaX;
leftScroll();
Log.i("", "Left side Slide left");
} else {
leftSidelastX = deltaX;
rightScroll();
Log.i("", "Left side Slide right");
}
}
Решение 2:
Создайте переменную scroll как пустую строку в качестве переменной-члена.
if(scroll.equals("UP/DOWN"){
if (Math.abs(deltaY) > SWIPE_THRESHOLD) {
if (deltaY > leftSidelastX) {
leftSidelastX = deltaY;
upBrightness();
Log.i("", "Left side Slide up");
} else {
leftSidelastX = deltaY;
downBrightness();
Log.i("", "Left side Slide down");
}
}
} else if(scroll.equals("LEFT/RIGHT")){
if (Math.abs(deltaX) > SWIPE_THRESHOLD) {
if (deltaX > leftSidelastX) {
leftSidelastX = deltaX;
leftScroll();
Log.i("", "Left side Slide left");
} else {
leftSidelastX = deltaX;
rightScroll();
Log.i("", "Left side Slide right");
}
}
}else{
if (Math.abs(deltaX) < Math.abs(deltaY)) {
scroll = "LEFT/RIGHT";
}else{
scroll = "UP/DOWN";
}
}