对较低分辨率的设备使用更高密度的图像



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

如果我xxhdpi设备中运行我的应用程序,那就好了。

当我hdpi设备中运行我的应用程序时,它的响应非常慢。

这个时间是在hdpi中渲染xxhdpi图像吗?

这是一个正确的使用过程吗?

不,这不是正确的过程,它很慢,有时它也可能会杀死你的应用程序说 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;
}

最新更新