Dro*_*kas 15 android android-recyclerview
Recyclerview现在有3个州.
SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING
为此提出的一个问题包括一个投掷状态.我无法确定是否有任何关于此的事情.
有没有办法区分Recyclerview中的Drag和Fling.
编辑:对此类功能的要求:当用户浏览时,我希望能够在回收器视图中暂停加载图像(所有图像都是URL请求)并在他到达感兴趣的项目后恢复,从而确保他是图像目前在其他人之前查看负载.
SCROLL_STATE_FLING:不再RecyclerView是文档中未提及的部分内容
关于您的要求:
RecyclerView在里面android.view.ViewGroup,根据其源代码,它extends ViewGroup 在这里提供文档.
RecyclerView中的滚动在RecyclerView和LinearLayoutManager之间分开.有两种情况需要处理:
fling()的实施和代替flinging,smoothscroll该LinearLayoutManager到的位置.onTouchEvent方法来执行此操作.请参阅此处了解详细信息在RecyclerView中进行Snappy滚动
一些ViewPager值得一提的提示RecyclerView是它的一个孩子:
考虑修改缓存的页面数.当您只有3或4页时,这一点尤为重要.默认设置将在当前页面的两侧存储1页.在您有3个页面的情况下,滑动到中间页面意味着将缓存所有页面.然后滑动到第一页或最后一页将删除其中一个页面的内存,当您再次向后滑动时,它们将需要重新创建并重新添加.通过设置,setOffscreenPageLimit(2)您将允许所有页面始终保留在内存中.这是性能和内存考虑因素之间的权衡,因此最好是监听低内存警告并准备好在必要时删除边缘页面.
如果您尝试在ViewPager中替换视图,仅更改适配器后面的数据集并调用是不够的notifyDataSetChanged().您还需要确保已正确实施getItemPosition(Object object)并返回POSITION_NONE已更改和返回的项目POSITION_UNCHANGED或未更改项目的实际位置.
加入另一个API是setPageMargin()和setPageMarginDrawable(),让您轻松分开你的网页.
请参阅此处了解详细信息使用ViewPager进行水平视图滑动,已更新
Drag和Fling之间的区别
对于拖动功能您可以使用某些RecyclerView's伴随类:
ItemTouchHelper,这是一个实用程序类,用于添加滑动以关闭并将支持拖放到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();
}
Run Code Online (Sandbox Code Playgroud)
这对我来说同样如你想要的那样,当用户停在感兴趣的项目时它恢复
| 归档时间: |
|
| 查看次数: |
4158 次 |
| 最近记录: |