この記事は公開から1年以上経過しています。
Androidアプリ開発(Kotlin + Layout Xml)でタップ、ダブルタップ、上下左右へのスワイプジェスチャーを実装するサンプル。
あくまで最低限なので、必要に応じて手を加えてください。
サンプルソースコード(Kotlin)
class MainActivity : AppCompatActivity() {
private lateinit var gesture: GestureDetectorCompat
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
gesture = GestureDetectorCompat(this, object : GestureDetector.SimpleOnGestureListener() {
private val SWIPE_THRESHOLD = 100
private val SWIPE_VELOCITY_THRESHOLD = 100
override fun onDoubleTap(e: MotionEvent): Boolean {
Log.d("TAG", "Double tap")
return true
}
override fun onSingleTapConfirmed(e: MotionEvent): Boolean {
Log.d("TAG", "Single tap")
return true
}
override fun onFling(
e1: MotionEvent,
e2: MotionEvent,
velocityX: Float,
velocityY: Float
): Boolean {
var result = false
val diffY = e2.y - e1.y
val diffX = e2.x - e1.x
if (abs(diffX) > abs(diffY)) {
if (abs(diffX) > SWIPE_THRESHOLD && abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
onSwipeRight()
} else {
onSwipeLeft()
}
result = true
}
} else {
if (abs(diffY) > SWIPE_THRESHOLD && abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (diffY > 0) {
onSwipeDown()
} else {
onSwipeUp()
}
result = true
}
}
return result
}
fun onSwipeRight() {
Log.d("TAG", "Swipe right")
}
fun onSwipeLeft() {
Log.d("TAG", "Swipe left")
}
fun onSwipeUp() {
Log.d("TAG", "Swipe up")
}
fun onSwipeDown() {
Log.d("TAG", "Swipe down")
}
})
}
override fun onTouchEvent(event: MotionEvent?): Boolean {
if (event != null) {
gesture.onTouchEvent(event)
}
return super.onTouchEvent(event)
}
}
以上です。