В обоих случаях, если вы загружаете большие изображения, вы должны масштабировать изображение в соответствии с вашими потребностями перед использованием. В некоторых случаях, если этого не сделать, может выдаться outOfMemoryError
. Вы можете использовать следующий метод для масштабирования изображения перед загрузкой.
iv.setImageBitmap(decodeResource(getResources(), R.drawable.big_image));
private static Bitmap decodeResource(Resources res, int id) {
Bitmap bitmap = null;
BitmapFactory.Options options = new BitmapFactory.Options();
for (options.inSampleSize = 1; options.inSampleSize <= 32; options.inSampleSize++) {
try {
bitmap = BitmapFactory.decodeResource(res, id, options);
Log.d(TAG_LOG, "Decoded successfully for sampleSize " + options.inSampleSize);
break;
} catch (OutOfMemoryError outOfMemoryError) {
// If an OutOfMemoryError occurred, we continue with for loop and next inSampleSize value
Log.e(TAG_LOG, "outOfMemoryError while reading file for sampleSize " + options.inSampleSize
+ " retrying with higher value");
}
}
return bitmap;
}
В некоторых случаях Glide
не может загрузить векторные изображения или загрузить его частично. Лучший из возможных способов загрузки векторных изображений - это заполнитель или изображение ошибки, например
.
GlideApp.with(mContext) .load("") .error(R.drawable.my_vector) .into(holder.imageView);