package com.yidianling.consultant.ui.view import android.content.Context import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import android.util.AttributeSet import android.view.MotionEvent // 判断 X 轴的 Y 轴的 移动的距离差 来判断是否 需要拦截事件 class ExpertSearchSwipeRefreshLayout(context: Context, attrs: AttributeSet) : SwipeRefreshLayout(context, attrs) { // 上一次触摸时的X坐标 private var mPreDownX: Float = 0.toFloat() private var mPreDownY: Float = 0.toFloat() override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { when (ev.action) { MotionEvent.ACTION_DOWN -> { mPreDownX = ev.x mPreDownY = ev.y } MotionEvent.ACTION_MOVE -> { val eventX = ev.x val eventY = ev.y val xAbs = Math.abs(eventX - mPreDownX) val yAbs = Math.abs(eventY - mPreDownY) // 如果 X 轴移动的 距离大于 Y 轴移动的距离 // 那么 不拦截 触摸事件 交给 下面的处理 if (xAbs > yAbs) { return false } } } return super.onInterceptTouchEvent(ev) } }