У меня есть большое количество ресурсов в моей доступной папке. Все имеют большой размер более 500 КБ. Я должен загрузить все эти 25 изображений одновременно в srollView. Как обычно, у меня не хватало памяти. Есть ли способ уменьшить размер изображения программно.
Я получил эту функцию, но этот параметр является файлом, и я не знаю, как создать файл из drawable.
private Bitmap decodeFile(File f){
Bitmap b = null;
try {
//Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
FileInputStream fis = new FileInputStream(f);
BitmapFactory.decodeStream(fis, null, o);
fis.close();
int scale = 1;
if (o.outHeight > IMAGE_MAX_SIZE || o.outWidth > IMAGE_MAX_SIZE) {
scale = Math.pow(2, (int) Math.round(Math.log(IMAGE_MAX_SIZE / (double) Math.max(o.outHeight, o.outWidth)) / Math.log(0.5)));
}
//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
fis = new FileInputStream(f);
b = BitmapFactory.decodeStream(fis, null, o2);
fis.close();
} catch (FileNotFoundException e) {
}
return b;
}
Мне нужно многократно смотреть на этот экран многократно после нескольких обходов системы, показывающих низкую память, и она удаляет другие представления в обратном направлении из стека, но мне это действительно нужно. Пожалуйста, помогите мне.