android - 在向左、向右、向上、向下滑动时
问题描述
我在编写一个启动函数的滑动监听器时遇到了麻烦。但我不想使用片段。
这是代码:
class Dock : AppCompatActivity(), GestureDetector.OnGestureListener
{
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.dock)
hide_bars()
}
private val swipeThreshold = 100
private val swipeVelocityThreshold = 100
override fun onFling(downEvent: MotionEvent, moveEvent: MotionEvent, velocityX: Float, velocityY: Float): Boolean
{
var result = false
val diffY = moveEvent.y - downEvent.y
val diffX = moveEvent.x - downEvent.x
if (Math.abs(diffX) > Math.abs(diffY))
{
// right or left swipe
if (Math.abs(diffX) > swipeThreshold && Math.abs(velocityX) > swipeVelocityThreshold)
{
if (diffX > 0)
{
swipeRight()
} else
{
swipeLeft()
}
result = true
}
} else
{
// up or down swipe
if (Math.abs(diffY) > swipeThreshold && Math.abs(velocityY) > swipeVelocityThreshold)
{
if (diffY > 0)
{
swipeDown()
} else
{
swipeUp()
}
result = true
}
}
return result
}
private fun swipeUp()
{
Toast.makeText(this, "Swipe Top", Toast.LENGTH_LONG).show()
}
private fun swipeDown()
{
Toast.makeText(this, "Swipe Bottom", Toast.LENGTH_LONG).show()
}
private fun swipeLeft()
{
Toast.makeText(this, "Swipe Left", Toast.LENGTH_LONG).show()
}
private fun swipeRight()
{
Toast.makeText(this, "Swipe Right", Toast.LENGTH_LONG).show()
}
我可以毫无问题地启动应用程序,但是,当我滑动时,没有任何变化。没有敬酒,没有任何活动开始会改变布局。这就是我在这里的原因。请帮我。
“刷卡后”功能不包含在代码中,因为它们不是问题(经过测试)并且无法创建此帖子。
解决方案
活动不接收触摸输入。意见可以。您需要在应用程序中设置某些视图的 onTouchListener 以实现此行为。此外,由于您的应用程序可能会有子视图,因此您不能仅将其放在根视图上-您还必须实现 onInterceptTouchEvent 以在适当的时候从子视图中窃取触摸事件(请注意,这样做可能会破坏子视图的一些行为)。
推荐阅读
- c# - Core 2.1 APIVersioning 动作歧义
- perl - 如何通过匹配字符 {say X} 的任何字母/数字来检查哈希中是否存在哈希键
- sql - DB2 多表连接产生重复行
- vb.net - 如何将datagridview中的第二个选定行传递给文本框?
- vue.js - 客户端组件中使用的 Vuejs 道具
- elasticsearch - Searchkick:我希望结果先显示完全匹配,然后再通过排序列出其他结果?
- antlr - 格式错误的插值被视为正常字符串的字符串插值语法
- php - 如何在不刷新的情况下显示金额?
- node.js - 无法使用 mongoose 更新 Mlab 文档的值,它被保存为“__v”:0
- prolog - Prolog:如何检查列表的每个成员是否具有属性?