Reputation: 2258
I'm using Images only of the resolution xxhdpi
to reduce the size of apk
If I run my app in xxhdpi
device, its fine.
When I run my app in hdpi
device it is responding very slowly.
Is this time being taken to render xxhdpi
image in hdpi
??
Is this a correct procedure to use ??
Upvotes: 0
Views: 60
Reputation: 798
No that's not correct procedure, it is slow, sometimes it may also kill your app saying MemoryOutOfException etc...
You've to programmatically decode and downgrade the image using BitmapFactory
For example
//decodes image and scales it to reduce memory consumption
private Bitmap decodeFile(File f){
try {
//decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f),null,o);
//Find the correct scale value. It should be the power of 2.
final int REQUIRED_SIZE=70;
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(!(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)){
width_tmp/=2;
height_tmp/=2;
scale*=2;
}
//decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
} catch (FileNotFoundException e) {}
return null;
}
Upvotes: 2