Android快餐栏滑动手势的初始位置

时间:2019-03-01 17:22:54

标签: android kotlin swipe gesture snackbar

我有一个Snackbar布局,我正在尝试添加手势以在其上滑动,但是我发现有些怪异,我只是想知道我是在看错东西还是正在发生其他事情?不太了解。

此处的代码:

layout.setOnTouchListener(View.OnTouchListener { view, motionEvent ->
        return@OnTouchListener when (motionEvent.action) {
            MotionEvent.ACTION_DOWN -> {
                xStart = motionEvent.x
                yStart = motionEvent.y
                Log.d("starting Values", "x: $xStart, y: $yStart")
                true
            }
            MotionEvent.ACTION_UP -> {
                xEnd = motionEvent.x
                yEnd = motionEvent.y

                val deltaX = xEnd - xStart
                val deltaY = yEnd - yStart

                Log.d("deltaY", "y start is $yStart")
                Log.d("deltaY", "y end is $yEnd")
                Log.d("deltaY", "deltaY is $deltaY")
                if (Math.abs(deltaX) > 150) {
                    if (deltaX > 0) {
                        logArea.text = "positive deltaX : $deltaX"
                    }
                    else {
                        logArea.text = "negative deltaX : $deltaX"
                    }
                }
                else
                if (deltaY > 100) {
                    if (deltaY > 0) {
                        logArea.text = "positive deltaY : $deltaY"
                        snackbar.dismiss()
                    }
                    else {
                        logArea.text = "negative deltaY : $deltaY"
                    }
                }

                true
            }
            else -> true
        }
    })

有点混乱,但是问题是ACTION_DOWN触发时,开始的X和Y坐标始终为0,但是ACTION_UP的结束位置是设备上的实际位置(我以像素为单位),这很难获得增量,因为无论我从哪里开始,起点始终为0,终点取决于我的ACTION_UP触发时设备上的物理位置。

是否有一种方法可以在ACTION_DOWN触发时获取实际的起始物理像素?还是有一种更简单的方法来获取正在发生的滑动的增量?

0 个答案:

没有答案