Recyclerview是Laggy?

时间:2018-01-14 12:00:33

标签: java android android-recyclerview recycler-adapter

我正在关注此link中的教程,以了解RecyclerView。本教程从drawable文件夹加载图像。当我这样做时,应用程序只是耗尽了内存。所以我做了一些改变来调整图像大小。

@Override
public void onBindViewHolder(MyAdapter.ViewHolder viewHolder, int i) {
    viewHolder.title.setText(galleryList.get(i).getImage_title());
    viewHolder.img.setScaleType(ImageView.ScaleType.CENTER_CROP);
    viewHolder.img.setImageResource((galleryList.get(i).getImage_ID()));
}

将第3行更改为此

viewHolder.img.setImageDrawable(scaleImage(galleryList.get(i).getImage_ID(), ScaleFactor));

将scaleImage定义为

private Drawable scaleImage(int imageId, float scaleFactor)
{
    Drawable image = context.getResources().getDrawable(imageId);

    if ((image == null) || !(image instanceof BitmapDrawable)) {
        return image;
    }

    Bitmap b = ((BitmapDrawable)image).getBitmap();

    int sizeX = Math.round(image.getIntrinsicWidth() * scaleFactor);
    int sizeY = Math.round(image.getIntrinsicHeight() * scaleFactor);

    Bitmap bitmapResized = Bitmap.createScaledBitmap(b, sizeX, sizeY, false);

    image = new BitmapDrawable(context.getResources(), bitmapResized);

    return image;
}

但是当我滚动RecyclerView延迟直到它加载即将到来的行时,我认为是因为我单独加载每个图像然后调整它的大小。有没有办法异步地做到这一点?

1 个答案:

答案 0 :(得分:0)

它成为你正在调整图像大小的原因,这是一个繁重的过程。 尝试调整图像异步或使用图像加载器库。

您可以使用一些有用的库来加载Glide

等图片

另外,您可以看到此Picasso v/s Imageloader v/s Fresco vs Glide