最近从 iOS 移动,我意识到要处理 100 多个大图像的快速滚动,
这是一项相当多的工作,实际上您需要使用 Picasso(或者可能是 Volley)。
现在 RecyclerView 就在这里 -有没有人使用 RecyclerView 实现了许多大图像的滚动?
如果是这样,您是否必须像过去那样使用毕加索(即上周)
对此有何发现?干杯
最近从 iOS 移动,我意识到要处理 100 多个大图像的快速滚动,
这是一项相当多的工作,实际上您需要使用 Picasso(或者可能是 Volley)。
现在 RecyclerView 就在这里 -有没有人使用 RecyclerView 实现了许多大图像的滚动?
如果是这样,您是否必须像过去那样使用毕加索(即上周)
对此有何发现?干杯
RecyclerView
只不过是AbsListView
类的一个改进、更模块化和可扩展的版本。它为回收视图提供了更好的 API,并提供了一种使用相同 API 创建各种列表视图的方法 - 垂直、水平、网格、交错网格等。加载图像根本不是这个 API 的一部分。
因此,将图像加载到其中需要您执行与以前完全相同的操作。例如,使用毕加索:
@Override
public void onBindViewHolder(final MyViewHolder myViewHolder, final int i) {
Picasso.withContext(mContext).load(myImageUrl).into(myViewHolder.imageView);
}
事实上,回到你的观点:
RecyclerView 是 Android 改进的列表视图,让我们可以更流畅地滚动大图像的大列表
我非常怀疑如果您已经ListAdapter
以正确的方式实现了性能是否会提高:使用ViewHolder
类,并正确重用convertView
. 默认情况下会提供这些RecyclerView
优化,因此您不必再这样做了。
是的,正如之前的评论所提到的,它仍然需要,但这也有帮助。
import android.support.v7.widget.RecyclerView;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.scrolling.PicassoFlingScrollListener;
/**
* Example Use:
* mRecyclerView.setOnScrollListener(new PicassoRecyclerViewScrollListener(mPicasso));
*
* @author Simon Lightfoot <simon@demondevelopers.com>
*
*/
public static class PicassoRecyclerViewScrollListener implements RecyclerView.OnScrollListener
{
private final PicassoFlingScrollListener mListener;
private final RecyclerView.OnScrollListener mDelegate;
public PicassoRecyclerViewScrollListener(Picasso picasso)
{
this(picasso, null);
}
public PicassoRecyclerViewScrollListener(Picasso picasso, RecyclerView.OnScrollListener delegate)
{
mListener = new PicassoFlingScrollListener(picasso);
mDelegate = delegate;
}
@Override
public void onScrollStateChanged(int newState)
{
mListener.onScrollStateChanged(null, newState);
if(mDelegate != null){
mDelegate.onScrollStateChanged(newState);
}
}
@Override
public void onScrolled(int dx, int dy)
{
if(mDelegate != null){
mDelegate.onScrolled(dx, dy);
}
}
}