Android事件分发机制

278 阅读1分钟
ACTION_DOWN
分发?:分发?:分发->处理?:处理?:处理
分发过程中是否拦截:onInterceptTouchEvent
分发:dispatchTouchEvent
处理:onTouchEvent

举例(仅供参考)

class CustomScrollViewPager : ViewPager {
    //是否可以左右滑动?true 可以,像Android原生ViewPager一样。
    // false 禁止ViewPager左右滑动。
    private var scrollable = false

    constructor(context: Context) : super(context) {}

    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {}

    fun setScrollable(scrollable: Boolean) {
        this.scrollable = scrollable
    }

    override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
        return scrollable
    }

    @SuppressLint("ClickableViewAccessibility")
    override fun onTouchEvent(ev: MotionEvent): Boolean {
        when(ev.action){
            MotionEvent.ACTION_DOWN->Toast.makeText(context,"hello",Toast.LENGTH_SHORT).show()
        }
        return true
    }

}