我正在创建一个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");
}
}
}
答案 0 :(得分:0)
您的外部If Else结构是问题所在。当您向上和向下滑动并稍微向侧面移动时,您会自动停止向上/向下滑动并向左/向右滑动。
根据您的需要,您可以删除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:
将变量滚动创建为空String作为成员变量。
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";
}
}