開發(fā)中接到了一個(gè)類似于餓了么購(gòu)物車的效果
用戶滑動(dòng)屏幕購(gòu)物車懸浮的icon執(zhí)行左滑的動(dòng)畫;
首先邏輯思路:
1,攔擊用戶的滑動(dòng)手勢(shì)
2,判斷滑動(dòng)的y軸距離,設(shè)置隱藏動(dòng)畫;
3,手指離開屏幕后,執(zhí)行顯示動(dòng)畫,看了下餓了么顯示好像有個(gè)延時(shí)的操作,這里設(shè)置一個(gè)Task就可以了;
問題:
需要展示的頁面在Fragment中,而Fragment中沒有dispatchTouchEvent方法;
解決辦法:
這時(shí)只能從Fragment依賴的Activity入手;
在依賴的Activity中重寫dispatchTouchEvent()方法;
獲取手勢(shì)的監(jiān)聽,當(dāng)然具體的處理邏輯還是要放在Fragment中;
從依賴的Activity中可以獲取到其中的Fragment,利用FragmentManager獲取到對(duì)應(yīng)的Fragment,然后用獲取到的Fragment對(duì)象調(diào)用Fragment的方法;
需要監(jiān)聽的手勢(shì)ACTION_DOWN(按下)?ACTION_MOVE(移動(dòng))?ACTION_UP(抬起);
完整的dispatchTouchEvent 見下圖:

tabbar是項(xiàng)目中底部的空間 我是在選中首頁的時(shí)候去處理這些事件的;
移動(dòng)的距離根據(jù)圖片的寬度還有margin值計(jì)算就可以了;
動(dòng)畫效果自己寫寫吧 位移動(dòng)畫是必須要有的,漸變?cè)O(shè)置透明度什么根據(jù)產(chǎn)品需求寫就可以了;
有不明白的咨詢~