猿问

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

我现在正在开发一个小应用程序来测试运动和触摸事件。我面临的问题是我的 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"

    }

有人知道如何解决这个问题吗?


繁花不似锦
浏览 84回答 1
1回答

斯蒂芬大帝

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")        }    })
随时随地看视频慕课网APP

相关分类

Java
我要回答