LRecyclerView側(cè)滑iOS阻塞效果不完整的解決辦法
最近項(xiàng)目中用到下拉刷新與側(cè)滑刪除需要同時(shí)實(shí)現(xiàn)的情形, 所以對(duì)LRecyclerView進(jìn)行了一些了解, 在測(cè)試側(cè)滑功能時(shí), 發(fā)現(xiàn)iOS阻塞效果不完整, 即當(dāng)條目處于側(cè)滑狀態(tài)時(shí), 點(diǎn)擊該條目的非側(cè)滑位置時(shí)無(wú)法自動(dòng)關(guān)閉, 于是對(duì)LRecyclerView項(xiàng)目中的自定義 SwipeMenuView進(jìn)行了分析, 發(fā)現(xiàn)在dispatchTouchEvent的down事件中進(jìn)行了如下的條件判斷:
if (mViewCache != this) { mViewCache.smoothClose(); mViewCache = null; iosInterceptFlag = isIos;//add by 2016 09 11 ,IOS模式開(kāi)啟的話(huà),且當(dāng)前有側(cè)滑菜單的View,且不是自己的,就該攔截事件咯。 }
這樣的判斷導(dǎo)致阻塞效果無(wú)法在被側(cè)滑的條目上實(shí)現(xiàn), 所以我加上了如下的條件判斷:
//如果是自己, 當(dāng)按下的位置在內(nèi)容的范圍, 關(guān)閉側(cè)滑菜單, 否則不攔截 if (ev.getRawX() < mScreenW - mRightMenuWidths) { mViewCache.smoothClose(); mViewCache = null; iosInterceptFlag = isIos; }
最后, SwipeMenuView中完整的dispatchTouchEvent的down事件如下:
case MotionEvent.ACTION_DOWN: iosInterceptFlag = false;//add by 2016 09 11 ,每次DOWN時(shí),默認(rèn)是不攔截的 if (isTouching) {//如果有別的指頭摸過(guò)了,那么就return false。這樣后續(xù)的move..等事件也不會(huì)再來(lái)找這個(gè)View了。 return false; } else { isTouching = true;//第一個(gè)摸的指頭,趕緊改變標(biāo)志,宣誓主權(quán)。 } mLastP.set(ev.getRawX(), ev.getRawY()); //如果down,view和cacheview不一樣,則立馬讓它還原。且把它置為null if (mViewCache != null) { if (mViewCache != this) { mViewCache.smoothClose(); mViewCache = null; iosInterceptFlag = isIos;//add by 2016 09 11 ,IOS模式開(kāi)啟的話(huà),且當(dāng)前有側(cè)滑菜單的View,且不是自己的,就該攔截事件咯。 } else { //如果是自己, 當(dāng)按下的位置在內(nèi)容的范圍, 關(guān)閉側(cè)滑菜單, 否則不攔截 if (ev.getRawX() < mScreenW - mRightMenuWidths) { mViewCache.smoothClose(); mViewCache = null; iosInterceptFlag = isIos; } } //只要有一個(gè)側(cè)滑菜單處于打開(kāi)狀態(tài), 就不給外層布局上下滑動(dòng)了 getParent().requestDisallowInterceptTouchEvent(true); } //求第一個(gè)觸點(diǎn)的id, 此時(shí)可能有多個(gè)觸點(diǎn),但至少一個(gè),計(jì)算滑動(dòng)速率用 mPointerId = ev.getPointerId(0); break;
以上所述是小編給大家介紹的LRecyclerView側(cè)滑iOS阻塞效果不完整的解決辦法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- RecyclerView實(shí)現(xiàn)側(cè)滑拖拽功能
- android RecyclerView側(cè)滑菜單,滑動(dòng)刪除,長(zhǎng)按拖拽,下拉刷新上拉加載
- Android recyclerview實(shí)現(xiàn)拖拽排序和側(cè)滑刪除
- android的RecyclerView實(shí)現(xiàn)拖拽排序和側(cè)滑刪除示例
- RecyclerView進(jìn)階:使用ItemTouchHelper實(shí)現(xiàn)拖拽和側(cè)滑刪除效果
- Android實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳
- Android實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能
- 詳解Android使用OKHttp3實(shí)現(xiàn)下載(斷點(diǎn)續(xù)傳、顯示進(jìn)度)
- android實(shí)現(xiàn)多線程下載文件(支持暫停、取消、斷點(diǎn)續(xù)傳)
- RecyclerView實(shí)現(xiàn)側(cè)滑和網(wǎng)絡(luò)斷點(diǎn)續(xù)傳
相關(guān)文章
iOS應(yīng)用開(kāi)發(fā)中對(duì)UIImage進(jìn)行截取和縮放的方法詳解
這篇文章主要介紹了iOS應(yīng)用開(kāi)發(fā)中對(duì)UIImage進(jìn)行截取和縮放的方法,分別講解了如何截取指定區(qū)域大小的UIImage以及縮放到指定大小和等比縮放的具體操作過(guò)程,需要的朋友可以參考下2016-04-04ios NSNotificationCenter通知的簡(jiǎn)單使用
這篇文章主要介紹了ios NSNotificationCenter通知的簡(jiǎn)單使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06IOS 獲取網(wǎng)絡(luò)圖片大小實(shí)例詳解
這篇文章主要介紹了IOS 獲取網(wǎng)絡(luò)圖片大小實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06IOS 使用NSAssert()和NSParameterAssert調(diào)試程序
這篇文章主要介紹了IOS 使用NSAssert()和NSParameterAssert調(diào)試程序的相關(guān)資料,需要的朋友可以參考下2017-06-06Swift 2.1 為 UIView 添加點(diǎn)擊事件和點(diǎn)擊效果
本文主要介紹 Swift UIView,這里給大家提供代碼示例作為參考為UIView 添加點(diǎn)擊事件和點(diǎn)擊效果,希望能幫助IOS開(kāi)發(fā)的同學(xué)2016-07-07iOS開(kāi)發(fā)中對(duì)于攝像頭的一些基本使用方法分享
這篇文章主要介紹了iOS開(kāi)發(fā)中對(duì)于攝像頭的一些基本使用方法分享,包括判斷攝像頭是否可用的方法,需要的朋友可以參考下2015-10-10