import
android.os.Bundle
import
android.util.Log
import
android.view.GestureDetector
import
android.view.MotionEvent
import
android.widget.Toast
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.GestureDetectorCompat
import
kotlinx.android.synthetic.main.activity_main.*
private
const
val TAG =
"Gestures"
class
MainActivity : AppCompatActivity(), GestureDetector.OnGestureListener,
GestureDetector.OnDoubleTapListener {
private
lateinit var detectorCompat: GestureDetectorCompat
public
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
detectorCompat = GestureDetectorCompat(
this
,
this
)
}
override fun onTouchEvent(event: MotionEvent): Boolean {
return
if
(detectorCompat.onTouchEvent(event)) {
true
}
else
{
super
.onTouchEvent(event)
}
}
override fun onDown(event: MotionEvent): Boolean {
Log.d(TAG,
"onDown: $event"
)
return
true
}
override fun onFling(
event1: MotionEvent,
event2: MotionEvent,
velocityX: Float,
velocityY: Float
): Boolean {
Log.d(TAG,
"onFling: $event1 $event2"
)
return
true
}
override fun onLongPress(event: MotionEvent) {
Log.d(TAG,
"onLongPress: $event"
)
gesture.text =
"Long Press"
}
override fun onScroll(
event1: MotionEvent,
event2: MotionEvent,
distanceX: Float,
distanceY: Float
): Boolean {
Log.d(TAG,
"onScroll: $event1 $event2"
)
return
true
}
override fun onShowPress(event: MotionEvent) {
Log.d(TAG,
"onShowPress: $event"
)
gesture.text =
"Press"
}
override fun onSingleTapUp(event: MotionEvent): Boolean {
Log.d(TAG,
"onSingleTapUp: $event"
)
gesture.text =
"Single Tap"
return
true
}
override fun onDoubleTap(event: MotionEvent): Boolean {
Log.d(TAG,
"onDoubleTap: $event"
)
gesture.text =
"DoubleTap"
return
true
}
override fun onDoubleTapEvent(event: MotionEvent): Boolean {
Log.d(TAG,
"onDoubleTapEvent: $event"
)
Toast.makeText(
this
,
"Double Tap"
, Toast.LENGTH_SHORT).show()
return
true
}
override fun onSingleTapConfirmed(event: MotionEvent): Boolean {
Log.d(TAG,
"onSingleTapConfirmed: $event"
)
gesture.text =
"Single Tap Confirmed"
return
true
}
}