我有一个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触发时获取实际的起始物理像素?还是有一种更简单的方法来获取正在发生的滑动的增量?