Java 回收站是拉吉吗?
我将按照本教程学习RecyclerView。本教程将从drawable文件夹加载图像。当我做同样的操作时,应用程序的内存就用完了。所以我做了一些改变来调整图像的大小Java 回收站是拉吉吗?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我将按照本教程学习RecyclerView。本教程将从drawable文件夹加载图像。当我做同样的操作时,应用程序的内存就用完了。所以我做了一些改变来调整图像的大小 @Override public void onBindViewHolder(MyAdapter.ViewHolder viewHolder, int i) { viewHolder.title.setText(galleryList.get(i).getImage_title()); viewHolder.img.
@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()));
}
将第三行更改为此
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会延迟,直到它加载接下来的行,我想这是因为我分别加载每个图像,然后调整其大小。有没有一种方法可以不同步地执行此操作?这已经成为了一个问题,因为您正在调整图像的大小,这是一个繁重的过程。 尝试异步调整图像大小或使用图像加载程序库 有一些有用的库可用于加载图像,如
另外,您可以看到这个glide可以用于在设备上加载图像吗?是的,请阅读这个。glide有许多加载图像的方法,您可以从url、文件和可绘图文件加载图像。