gpt4 book ai didi

android - 为 android 列表预捕获图像的最佳做法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:35 25 4
gpt4 key购买 nike

目前我正在加载图像,即使用户没有滚动查看所以当他将图像从 picasso 缓存中加载得更快时,在列表承包商上

private void createImageCatch(ArrayList<Article> items) {
for (int i = 0; i < items.size(); i++) {
Article article = (Article) items.get(i);
if (article.getImageUrl() != null
&& article.getImageUrl().length() > 0)
Picasso.with(mContext).load(article.getImageUrl())
.fetch();
}
}

这是完美的,即使用户快速滚动,图像也已准备就绪,但这是最好的方法吗?

改进更新 - 添加了静态 bool 值以确保此方法只调用一次,如果图像是在服务器端添加的,这对于在滚动时间加载的少数图像来说并不是什么大问题,只要它们必须已经在缓存中。

最佳答案

您是否考虑过使用 Volley library ?它有一个特殊的 ImageView 可以为您下载和缓存图像。

将 XML 中的 ImageView 替换为如下内容:

<com.android.volley.toolbox.NetworkImageView
android:id="@+id/photo"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_marginRight="6dip"
/>

然后载入你的图片

NetworkImageView photo = (NetworkImageView)view.findViewById(R.id.photo);
photo.setImageUrl("http://someurl.com/image.png", mImageLoader);

您确实需要设置您的 ImageLoader,因此创建一些字段:

private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;

并在您的 onCreate 中初始化它们:

mRequestQueue = Volley.newRequestQueue(context);
mImageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10);
public void putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
});

来源:Setting up the Android Google Volley ImageLoader for NetworkImageView

关于android - 为 android 列表预捕获图像的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com