RecyclerView拖動動畫

最近有個需求,當橫向RecyclerView滑動到底部,不能滑動後,此時在拖動RecyclerView,需要顯示底部一個動畫效果,如圖是做好的效果圖:

 

然後很自然的去自定義RecyclerView。

最後發現在拖動RecyclerView時,需要拖動一段距離後才能顯示我的自定義佈局,感覺半天拖動不出來底部佈局,很卡的樣子。而這個起始的拖動距離差一直是25,隨後我打印了系統最小滾動距離ViewConfiguration.get(context).scaledTouchSlop

是23,感覺冥冥之中有聯繫。

經過猜想發現,應該需要在onInterceptTouchEvent時,對ACTION_MOVE事件的滑動距離進行攔截,將這個距離設置很小就可以了,但是不能太小,否則會影響子View的點擊事件。

override fun onInterceptTouchEvent(e: MotionEvent): Boolean {
        when (e.action) {
            MotionEvent.ACTION_DOWN -> {
                mLastMotionPos = e.rawX
            }
            MotionEvent.ACTION_MOVE -> {
                if (abs(e.rawX - mLastMotionPos) > MIN_TOUCH_SLOP) {
                    return true
                }
            }
        }
        return super.onInterceptTouchEvent(e)
    }

然後就很絲滑了。

本來是還有個波紋彈彈彈的效果的,產品不需要就沒做了,但是友商有這個效果。下面是我完成的效果圖:

需求效果

後期打算把這個波紋的效果加上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章