如何将视图或自定义参数传递给GestureDetector?

时间:2019-12-25 09:15:53

标签: android kotlin gesturedetector

这可能是一个菜鸟问题,但我对Kotlin还是陌生的。我正在为几个视图创建一个手势检测器,并希望将视图传递给侦听器,甚至更好地将其传递给自定义参数。

我的代码:

val gestureDetector = GestureDetector(this@EditProfileActivity, object : GestureDetector.SimpleOnGestureListener() {
    override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
        Log.d("myApp", "single tap confirmed  press")
    }
})
profilePic1.setOnTouchListener { view, event -> gestureDetector.onTouchEvent(event) }
profilePic2.setOnTouchListener { view, event -> gestureDetector.onTouchEvent(event) }

我要将相同的侦听器附加到不同的视图,并希望有一种方法来区分覆盖函数中的视图。如何在这些函数中获取视图,此外还可以传递自定义参数,例如Int

此外,我尝试创建自定义的gestureDetector,但是由于我添加了自定义位置自变量,尽管我正在创建自定义检测器,但我收到一个错误:“以下任何一个函数都不能使用提供的自变量调用”所以我不明白为什么它不起作用:

class detector (context: Context?, listener: GestureDetector, handler: Handler, unused: Boolean, val position: Int )
    : GestureDetector(this@EditProfileActivity, GestureDetector.SimpleOnGestureListener(), null, false, position ) {

1 个答案:

答案 0 :(得分:0)

所以我确实找到了解决方案,也许可以使其他人受益。我不确定创建多个手势检测器是否理想,尽管它们都直接指向同一类:

    val gesture1 = GestureDetector(this@EditProfileActivity, GestureListener(1))
    profilePic1.setOnTouchListener { view, event -> gesture1.onTouchEvent(event) }

    val gesture2 = GestureDetector(this@EditProfileActivity, GestureListener(2))
    profilePic2.setOnTouchListener { view, event -> gesture2.onTouchEvent(event) }

class GestureListener (val position: Int) : GestureDetector.SimpleOnGestureListener() {
    override fun onDoubleTap(e: MotionEvent?): Boolean {
        Log.d("HAVERI", position.toString())
        return super.onDoubleTap(e)
    }
}
相关问题