回收站視圖現在有3個狀態。區分回收站視圖中的拖動操作和垃圾回收操作
SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING
上調同樣包括一扔state.I不能確定什麼是對此做一個issue。
有沒有一種方法來區分Dragler和回收站查看。
編輯:有這樣功能的要求: 當用戶甩,我希望能夠暫停加載圖像(所有圖片均爲URL請求)的回收視圖和恢復,一旦他達到感興趣的項目,從而確保他當前正在查看的圖像在其他圖像之前加載。
回收站視圖現在有3個狀態。區分回收站視圖中的拖動操作和垃圾回收操作
SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING
上調同樣包括一扔state.I不能確定什麼是對此做一個issue。
有沒有一種方法來區分Dragler和回收站查看。
編輯:有這樣功能的要求: 當用戶甩,我希望能夠暫停加載圖像(所有圖片均爲URL請求)的回收視圖和恢復,一旦他達到感興趣的項目,從而確保他當前正在查看的圖像在其他圖像之前加載。
SCROLL_STATE_FLING
項目恢復時,用戶停止:否較長的RecyclerView
的一部分,因爲它沒有在documentation here
提到的關於你的要求:
RecyclerView位於android.view.ViewGroup
之內,並根據其源代碼extends ViewGroup
documentation here。
RecyclerView中的滾動是RecyclerView和LinearLayoutManager之間的分離。有兩種情況需要處理:
fling()
實現而不是flinging
,smoothscroll
LinearLayoutManager
來解決此問題。onTouchEvent
方法來執行此操作。看到這裏查看詳細Snappy scrolling in RecyclerView
幾個ViewPager
暗示,值得一提的RecyclerView
是它的一個孩子:
想想修改的被緩存的頁面數。當您只有3或4頁時,這一點尤其重要。默認設置將在當前頁面的任一側存儲1頁。在有3頁的情況下,滑動到中間頁面將意味着您的所有頁面都將被緩存。然後滑動到第一頁或最後一頁將丟失內存中的一頁,並且在您再次滑回時需要重新創建並重新添加。通過設置setOffscreenPageLimit(2)
,您可以讓所有頁面始終保持在內存中。這是性能和內存考慮之間的折衷,因此,聽取低內存警告並準備在必要時刪除邊緣頁面是個好主意。
如果您試圖在ViewPager中替換Views,僅僅更改適配器後面的數據集並調用notifyDataSetChanged()
是不夠的。您還需要確保您已正確實施getItemPosition(Object object)
,並返回POSITION_NONE
以查找已更改的項目,並返回POSITION_UNCHANGED
或未更改項目的實際位置。
添加的另一個API是setPageMargin()
和setPageMarginDrawable()
,允許您輕鬆分離您的頁面。
看到這裏查看詳細Horizontal View Swiping with ViewPager, Updated
一拖一一扔
對於將功能您可以使用一些RecyclerView's
相關類的區別:
ItemTouchHelper,這是一個ut ility class添加輕掃以解除並拖拽支持RecyclerView。
其ItemTouchHelper.Callback,這是ItemTouchHelper和您的應用程序
對於一扔之間的合同你可以看到
我用的SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING
的組合來做到這一點:這裏是我的代碼:
@Override
public void onScrollStateChanged(int newState) {
if (newState == RecyclerView.SCROLL_STATE_DRAGGING || newState == RecyclerView.SCROLL_STATE_SETTLING) {
if (mAdapter != null)
mAdapter.pauseImageLoading();
} else if (newState == RecyclerView.SCROLL_STATE_IDLE) {
if (mAdapter != null)
mAdapter.resumeImageLoading();
}
這同樣適用於我,你想讓它在感興趣
我試過了,它在這種情況下不起作用:你突然停止滾動,你正在加載的項目沒有加載,因爲該請求已被拒絕作爲滾動的一部分 – Droidekas
它適用於我,請給我你的代碼 –
您的問題可能以不同的方式解決。你可以嘗試推遲你的請求幾百毫秒(確切的數字將需要調整)。如果列表項在毫秒內滾動離屏,則可以在請求發送之前取消該請求。這個想法是,如果你扔了,視圖將快速滾動屏幕外,以便請求在發送之前總是被取消。如果他們不投擲,那麼每個請求的額外毫秒數希望不會太差。
據我可以告訴問題和當前的源代碼,沒有簡單的方法來做到這一點。雖然有其他選擇。你想達到什麼目的? –
這將是一個非常長的原因。但總的來說,我需要在用戶瀏覽完畢後對當前項目執行一個過程。 – Droidekas
當用戶閃動什麼?其中一項?向下或向上回收者視圖?他是否把它扔掉了一件物品,比如解僱它?用戶界面上發生的情況是,除了停止所有圖像加載之外,用戶還做了一次投擲遊戲? –