我正在构建一个文件资源管理器应用程序,我正在尝试加载大量图像(超过5000 ...),我正在尝试使用毕加索,但它仍然很慢所以我正在尝试加载带毕加索的Thumbimage而不是整个图像文件..
....
ImageItem item = data.get(position);
ImageView imageView = holder.image;
Bitmap ThumbImage = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(item.getImage().getPath()), 100, 100);
Picasso.with (context) .load (ThumbImage ) .into (imageView); /*/ doesnt work.. cant load ThumbImage with Picasso
Picasso.with (context) .load (item.getImage()) .into (imageView); //work, but too slow
我无法弄清楚如何用Picasso将Thumbimage加载到ImageView中..有什么原因可以做到这一点?另一种加载我的图像的方法?
答案 0 :(得分:1)
首先,我建议使用RecyclerView
而不是GridView
,因为它会为您处理大量的内存管理。它不必一次加载所有图像(或自己管理),而只加载适合屏幕的图像。您可以使用GridLayoutManager
将其显示为GridView
中显示的内容。
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler);
recyclerView.setLayoutManager(new GridLayoutManager(context, 4);
recyclerView.setAdapter(new MyRecyclerViewAdapter(context, data);
另外,让毕加索处理为您转换图像,这样您就不需要使用ThumbnailUtils
。 Picasso使用resize()
函数处理图像大小调整和内存管理:
String uri = data.get(position);
Picasso.with(context).load(new File(uri)).resize(100, 100)
.centerCrop().into(imageView)
您可以使用onBindViewHolder()
的{{1}}方法执行此操作,以便只有在必须显示RecyclerView.Adapter
时才会加载每张图片。
我不确定您当前是如何获取图像的,但如果您不知道如何获取图像的URI,则应该可以使用:
View
我不知道这是否能解决毕加索没有加载图像的问题,但是如果它没有发布堆栈跟踪,我们可以尝试解决这个问题。