2:修改创建房间,本地进行判断改为服务端进行判断 3:修改歌手认证bug 4:修改和用户相关的出现为空的错误 5:修改挚友在用户主页的位置,不丝滑的滑动问题 6:修改搜索页面展示全部房间,用户展示性别
67 lines
2.2 KiB
Kotlin
67 lines
2.2 KiB
Kotlin
package com.xscm.moduleutil.widget
|
||
import android.content.Context
|
||
import android.util.AttributeSet
|
||
import android.view.MotionEvent
|
||
import androidx.viewpager.widget.ViewPager
|
||
/**
|
||
* 项目名称:羽声语音
|
||
* 时间:2025/12/3 9:30
|
||
* 用途:
|
||
*/
|
||
|
||
|
||
class CustomViewPager(context: Context, attrs: AttributeSet?) : ViewPager(context, attrs) {
|
||
|
||
private var initialX = 0f
|
||
private var initialY = 0f
|
||
|
||
private var isBeingDragged = false
|
||
|
||
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
|
||
when (ev.action) {
|
||
MotionEvent.ACTION_DOWN -> {
|
||
// 记录初始触摸点
|
||
initialX = ev.x
|
||
initialY = ev.y
|
||
parent.requestDisallowInterceptTouchEvent(true) // 请求父容器不要拦截事件
|
||
}
|
||
MotionEvent.ACTION_MOVE -> {
|
||
val deltaX = Math.abs(ev.x - initialX)
|
||
val deltaY = Math.abs(ev.y - initialY)
|
||
|
||
// 如果水平滑动距离大于垂直滑动距离,才认为是水平滑动,ViewPager才拦截事件
|
||
if (deltaX > deltaY && deltaX > 30) { // 30是阈值,可以根据需要调整
|
||
return super.onInterceptTouchEvent(ev)
|
||
}
|
||
|
||
// 如果是向上滑动,确保父容器不拦截
|
||
if (deltaY > deltaX && ev.y < initialY) {
|
||
parent.requestDisallowInterceptTouchEvent(true)
|
||
return false
|
||
}
|
||
// // 否则,不拦截,让子视图处理
|
||
// parent.requestDisallowInterceptTouchEvent(true)
|
||
// return false
|
||
}
|
||
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
|
||
isBeingDragged = false
|
||
}
|
||
}
|
||
return super.onInterceptTouchEvent(ev)
|
||
}
|
||
|
||
override fun onTouchEvent(ev: MotionEvent): Boolean {
|
||
when (ev.action) {
|
||
MotionEvent.ACTION_DOWN -> {
|
||
parent.requestDisallowInterceptTouchEvent(true)
|
||
}
|
||
MotionEvent.ACTION_MOVE -> {
|
||
if (isBeingDragged) {
|
||
parent.requestDisallowInterceptTouchEvent(true)
|
||
}
|
||
}
|
||
}
|
||
return super.onTouchEvent(ev)
|
||
}
|
||
}
|