欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Media App播放器界面左右滑动切换上下曲

Media App播放器界面左右滑动切换上下曲

2024/10/25 19:20:21 来源:https://blog.csdn.net/qq_40694393/article/details/141156266  浏览:    关键词:Media App播放器界面左右滑动切换上下曲

1.布局

        <Viewandroid:id="@+id/v_moveUp"android:layout_width="@dimen/dp_0"android:layout_height="@dimen/dp_0"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_TopOf="parent"app:layout_constraintBottom_toBottomOf="parent" ></View>

2.监听事件

    private lateinit var gestureHandler: BaseGestureHandler //左右滑动切歌------------------------------------------------------------------------------------gestureHandler = object : BaseGestureHandler() {override fun onSwipeRight() {playNext()}override fun onSwipeLeft() {playPrevious()}}vMoveUp.isSoundEffectsEnabled = falsevMoveUp.setOnTouchListener { v, event ->event?.let {if (it.pointerCount >= 2) {return@setOnTouchListener false}gestureHandler.onTouchEvent(it) } ?: true}vMoveUp.setOnSingleClickListener {}

3.核心实现

abstract class BaseGestureHandler {val gestureDetector: GestureDetectorinit {gestureDetector = GestureDetector(object : GestureDetector.SimpleOnGestureListener() {private val swipeThreshold = 100private val swipeVelocityThreshold = 100override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {val pointCount = e1.pointerCountval pointCount2 = e2.pointerCountif (pointCount > 1 || pointCount2 > 1) {return false}val diffY = e2.y - e1.yval diffX = e2.x - e1.xif (Math.abs(diffX) > Math.abs(diffY)) {if (Math.abs(diffX) > swipeThreshold && Math.abs(velocityX) > swipeVelocityThreshold) {if (diffX > 0) {onSwipeRight()} else {onSwipeLeft()}return true}}return false}})}fun onTouchEvent(event: MotionEvent): Boolean {return gestureDetector.onTouchEvent(event)}abstract fun onSwipeRight()abstract fun onSwipeLeft()
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com