我正在构建一个应用程序,允许用户使用水平滑动浏览不同的屏幕,但是这些屏幕还包含垂直滚动视图。如果垂直滚动不是100%垂直,那么看起来android会将垂直滚动视为水平滑动(希望这是有意义的)。
是否有禁用垂直扫动或降低水平检测的灵敏度?
onFling类中的代码目前非常基本。
public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX,
float velocityY) {
//Right Swipe
if (finish.getRawX() < start.getRawX()) {
Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show();
}
if (start.getRawX() < finish.getRawX()) {
Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show();
}
}
- 更新 -
好吧,我最终计算了滑动的起点和终点之间的垂直差异,这给了我一些东西来确定滑动的垂直度。它很基本,但似乎工作正常。
现在更新的代码看起来像。
public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX,
float velocityY) {
//Right Swipe
//Caluclate the vertical difference
float verticalChange = start.getRawY() - finish.getRawY();
if ((finish.getRawX() < start.getRawX()) && (verticalChange > -40 && verticalChange < 40)) {
Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show();
}
if (start.getRawX() < finish.getRawX()) && (verticalChange > -40 && verticalChange < 40)) {
Toast.makeText(getApplicationContext(), "Showing Listings For : "+date.getDate(),Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:0)
您可以扩展自己的垂直滚动视图,该视图不会触发水平滑动的事件。当然,那么你必须在不是滚动视图的部分上滑动。
- 额外评论---您是否在各种手机/设备上进行了测试?你可能会发现自己有不同的结果。