为了账号安全,请及时绑定邮箱和手机立即绑定

尝试设置一个抽象的监听器

尝试设置一个抽象的监听器

繁花不似锦 2023-09-06 16:46:00
我现在正在开发一个小应用程序来测试运动和触摸事件。我面临的问题是我的 Listener 类必须被抽象,但我无法从该侦听器创建一个对象,我需要将其放在 imageView 的“setOnTouchListener”方法上。监听类:abstract class GestureListener(directionDisplayer: TextView) : View.OnTouchListener,` GestureDetector.OnGestureListener {    private var directionDisplayer: TextView = directionDisplayer    override fun onTouch(v: View?, event: MotionEvent?): Boolean {        val gestureDetector = GestureDetector(this)        gestureDetector.onTouchEvent(event)        return true    }    override fun onFling(        downEvent: MotionEvent?,        moveEvent: MotionEvent?,        velocityX: Float,        velocityY: Float    ): Boolean {        var result = false        if (downEvent != null && moveEvent != null) {            var diffY: Float = moveEvent.y - downEvent.y            var diffX: Float = moveEvent.x - downEvent.x            val SWIPE_MIN = 100            val SWIPE_Velocity = 100 //TODO WIDTH            if (Math.abs(diffX) > Math.abs(diffY)) {                //RIGHT OR LEFT                if (Math.abs(diffX) > SWIPE_MIN && Math.abs(velocityX) > SWIPE_Velocity) {                    if (diffX > 0) {                        swipeRight()                    } else {                        swipeLeft()                    }                    result = true                }            } else {                //UP OR DOWN                if(Math.abs(diffY) > SWIPE_MIN && Math.abs(velocityY) > SWIPE_Velocity) {                    if(diffY > 0) {                        swipeUp()                    } else {                        swipeDown()                    }                    result = true                }            }        }        return result    }    private fun swipeDown() {        directionDisplayer.text = "Direction: DOWN"    }    private fun swipeUp() {        directionDisplayer.text = "Direction: UP"    }有人知道如何解决这个问题吗?
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

GestureListener是一个抽象类。因此,您必须在抽象类本身或代码中实现尚未实现的成员,如下iew.OnTouchListener所示-GestureDetector.OnGestureListener


    canvasImage.setOnTouchListener(object : GestureListener(textView) {

        override fun onShowPress(e: MotionEvent?) {

            TODO("not implemented")

        }


        override fun onSingleTapUp(e: MotionEvent?): Boolean {

            TODO("not implemented")

        }


        override fun onDown(e: MotionEvent?): Boolean {

            TODO("not implemented")

        }


        override fun onScroll(

            e1: MotionEvent?,

            e2: MotionEvent?,

            distanceX: Float,

            distanceY: Float

        ): Boolean {

            TODO("not implemented")

        }


        override fun onLongPress(e: MotionEvent?) {

            TODO("not implemented")

        }

    })


查看完整回答
反对 回复 2023-09-06
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信