gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:09:51 25 4
gpt4 key购买 nike

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

private fun swipeLeft() {
directionDisplayer.text = "Direction: LEFT"
}

private fun swipeRight() {
directionDisplayer.text = "Direction: RIGHT"
}

MainActivity (only the important):

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)

setContentView(R.layout.activity_main)
val canvasImage: ImageView = findViewById(R.id.canvas)

canvasImage.setOnTouchListener(GestureListener(findViewById(R.id.showDirection)))

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

最佳答案

GestureListener 是一个抽象类。因此,您必须实现尚未在抽象类本身或代码中实现的 iew.OnTouchListenerGestureDetector.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")
}
})

关于java - 尝试设置一个抽象的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58130116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com