在touchevent中计算滑动区域

时间:2014-02-26 04:48:02

标签: android swipe

我正在计算android标签中的滑动区域。要求是当用户在选项卡的屏幕的前10%上滑动时,应该会出现一个弹出窗口。

如何通过使用onFling();

的触摸事件来实现它

现在我正在执行下面的操作,(arg0和arg1是Motion事件)

int height = this.webview.getHeight();
float x = arg0.getRawX();
float y = arg0.getRawY();
float x2 = arg1.getRawX();
float y2 = arg1.getRawY();

if (x < 2000.00 && x2 < 2000.00 && y < 200.00 && y2 < 80.00) {
showPopUp();
}

但是,我不想使用像2000.00或80.00这样的硬编码值。除此之外,应根据设备高度计算滑动。虽然这很好。

知道该怎么做吗?

2 个答案:

答案 0 :(得分:0)

您可以通过WindowManager

获取屏幕高度
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    Point size = new Point();

    display.getSize(size);

    // This is the height of the screen
    size.y;

然后,您可以轻松地使用它来确定滑动是否位于前10%。

根据您需要计算高度的位置,您可以将此值缓存在成员中(在Activity的onResume()中),以便在配置更改(设备轮换等)时更新它

答案 1 :(得分:-1)

int height = this.webview.getHeight();
int width = this.webview.getWidth();

float maxHeight = height*.10f; //10% of 1000 is 100
float maxWidth = width*.10f; //10% of 500 is 50

float x = arg0.getRawX();
float y = arg0.getRawY();
float x2 = arg1.getRawX();
float y2 = arg1.getRawY();

if (x > 0 && x2 < maxWidth && y > 0 && y2 < maxHeight) {
  showPopUp();
}