????????場(chǎng)景:當(dāng)頁面滾動(dòng)超過一定距離后,顯示回到頂部的按鈕色乾,點(diǎn)擊按鈕平滑滾動(dòng)回頂部。
????????實(shí)現(xiàn):監(jiān)聽頁面滾動(dòng)距離领突,與一特定值比較暖璧,控制按鈕顯示隱藏,點(diǎn)擊按鈕點(diǎn)用頁面平滑滾動(dòng)Api或者通過自定動(dòng)畫實(shí)現(xiàn)滾動(dòng)君旦。
? ? ? ? 存在問題:慣性滾動(dòng)在頁面返回頂部后并未結(jié)束澎办,導(dǎo)致繼續(xù)滾行下滑,使得頁面無法停留在置頂狀態(tài)金砍。
? ? ? ? 解決方法:未找到有效的自帶Api實(shí)現(xiàn)停止慣性滾動(dòng)局蚀,所以考慮使用模擬點(diǎn)擊的方式停止頁面滾動(dòng)。
????????1恕稠、使用MotionEventobtain(long downTime, long eventTime, int action,float x, float y, int metaState)方法創(chuàng)建一個(gè)頁面內(nèi)的MotionEvent.ACTION_DOWN事件琅绅,調(diào)用頁面視圖的dispatchTouchEvent(MotionEvent ev)傳遞事件
????????2、使用MotionEventobtain(long downTime, long eventTime, int action,float x, float y, int metaState)方法創(chuàng)建一個(gè)頁面內(nèi)的MotionEvent.ACTION_CANCEL事件鹅巍,調(diào)用頁面視圖的dispatchTouchEvent(MotionEvent ev)傳遞事件
下圖為kotlin實(shí)現(xiàn)代碼: