将较高密度的图像用于较低分辨率的设备

时间:2016-02-26 10:18:02

标签: android resolution screen-resolution android-screen-support

我只使用分辨率xxhdpi的图像来减小apk的大小

如果我在xxhdpi设备中运行我的应用,那很好。

当我在hdpi设备中运行我的应用时,响应速度非常慢。

是否需要花时间在xxhdpi ??

中呈现hdpi图像

这是一个正确的程序吗??

1 个答案:

答案 0 :(得分:2)

不,这不是正确的程序,它很慢,有时它也可能会杀死你的应用程序说MemoryOutOfException等...

您需要使用BitmapFactory以编程方式解码和降级图像

例如

//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;
}