Android开发:降低水平滑动灵敏度或关闭垂直滑动

时间:2013-02-26 12:38:05

标签: java android swipe

我正在构建一个应用程序,允许用户使用水平滑动浏览不同的屏幕,但是这些屏幕还包含垂直滚动视图。如果垂直滚动不是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();
      }
    }

1 个答案:

答案 0 :(得分:0)

您可以扩展自己的垂直滚动视图,该视图不会触发水平滑动的事件。当然,那么你必须在不是滚动视图的部分上滑动。

- 额外评论---您是否在各种手机/设备上进行了测试?你可能会发现自己有不同的结果。