【发布时间】:2019-09-13 22:41:44
【问题描述】:
我在我的 android 应用程序中工作,然后我遇到了一个问题,我想在我的应用程序中添加向右或向左滑动以在用户滑动时处理某些事情,但我希望用户从屏幕末端滑动而不是像这个例子那样居中。 [1]:https://imge.to/i/v3OaQT“示例”
【问题讨论】:
我在我的 android 应用程序中工作,然后我遇到了一个问题,我想在我的应用程序中添加向右或向左滑动以在用户滑动时处理某些事情,但我希望用户从屏幕末端滑动而不是像这个例子那样居中。 [1]:https://imge.to/i/v3OaQT“示例”
【问题讨论】:
这是您需要添加到Activity 的代码。
var x1 = 0.0f
var x2 = 0.0f
val minSwipeDistance = 150f
val displayMetrics : DisplayMetrics? = null
windowManager.defaultDisplay.getMetrics( displayMetrics )
val margin = ( displayMetrics!!.widthPixels * 0.2f ).toInt()
bottom_app_bar.setOnTouchListener { v, event ->
when( event.action ) {
MotionEvent.ACTION_UP -> {
x1 = event.x
}
MotionEvent.ACTION_DOWN -> {
x2 = event.x
val delta = x2 - x1
val absDelta = Math.abs( delta )
if( absDelta > minSwipeDistance && delta > 0.0f && x1 < margin ) {
// Handle the further actions
}
}
}
v?.onTouchEvent(event) ?: true
}
从DisplayMetrics,我们得到屏幕的像素宽度。然后,我们通过减小宽度(将其乘以 0.2)从需要执行操作的位置获得margin。见下图。
因此,我们检查 event 的 x1 是否小于边距。此外,我们验证滑动距离delta 大于 0,表明它是向右滑动动作。最后,我们检查滑动距离是否大于minSwipeDistance。如果满足所有条件,我们可以执行进一步的操作。
注意:您可以根据需要调整minSwipeDistance和margin(常数0.2相乘)。
【讨论】: