使用picasso将位图加载到ImageView中

时间:2016-01-20 17:19:11

标签: android image file picasso explorer

我正在构建一个文件资源管理器应用程序,我正在尝试加载大量图像(超过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中..有什么原因可以做到这一点?另一种加载我的图像的方法?

1 个答案:

答案 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

我不知道这是否能解决毕加索没有加载图像的问题,但是如果它没有发布堆栈跟踪,我们可以尝试解决这个问题。