毕加索没有有效地加载滚动图像?
Picasso isn't loading scrolled images efficiently?
我正在使用一个通过 picasso 加载一堆图像的 gridview。我已经实现了 viewholders,但我不确定我还能用适配器或 imageview 做些什么来让它加载得更好。我已经将问题隔离到通过互联网连接加载图像,因为当我在本地加载图像时滚动很好。
使用 picasso 时,gridview 滚动非常有问题,并且滚动在不应该的情况下不断跳来跳去。这个问题的解决方案是什么?
首先,我建议您将 RecyclerView
与 GridLayoutManager
或 StaggeredGridLayoutManager
一起使用。它必须更有效并且视图本身包含更少的错误。
接下来,将 OkHttp 与 Picasso 结合使用。它是更稳定、更强大和一致的 http 客户端。我认为对您来说最重要的是配置 memory/file 缓存。
// Create a cache using an appropriate portion of the available RAM
Cache memoryCache = new LruCache(getApplicationContext());
// Use OkHttp as downloader
Downloader downloader = new OkHttpDownloader(getApplicationContext(),
PICASSO_DISK_CACHE_SIZE);
mPicasso = new Picasso.Builder(getApplicationContext())
.downloader(downloader).memoryCache(memoryCache).build();
加载速度还取决于网络状况和图像大小。
我正在使用一个通过 picasso 加载一堆图像的 gridview。我已经实现了 viewholders,但我不确定我还能用适配器或 imageview 做些什么来让它加载得更好。我已经将问题隔离到通过互联网连接加载图像,因为当我在本地加载图像时滚动很好。
使用 picasso 时,gridview 滚动非常有问题,并且滚动在不应该的情况下不断跳来跳去。这个问题的解决方案是什么?
首先,我建议您将 RecyclerView
与 GridLayoutManager
或 StaggeredGridLayoutManager
一起使用。它必须更有效并且视图本身包含更少的错误。
接下来,将 OkHttp 与 Picasso 结合使用。它是更稳定、更强大和一致的 http 客户端。我认为对您来说最重要的是配置 memory/file 缓存。
// Create a cache using an appropriate portion of the available RAM
Cache memoryCache = new LruCache(getApplicationContext());
// Use OkHttp as downloader
Downloader downloader = new OkHttpDownloader(getApplicationContext(),
PICASSO_DISK_CACHE_SIZE);
mPicasso = new Picasso.Builder(getApplicationContext())
.downloader(downloader).memoryCache(memoryCache).build();
加载速度还取决于网络状况和图像大小。