Android:加载图片时出现问题

时间:2016-10-12 10:14:53

标签: android performance bitmap drawable

我对decodeSampleBitmap代码和我的图像的最终大小有很大的问题。我在nodpi drawables文件夹中有我的drawables,不能在differents文件夹中使用不同大小的相同drawable,并且我在我的decodeSampleBitmap之后重新调整大小。

我有用于加载位图的代码:

public static int calculateInSampleSize(
        BitmapFactory.Options options, int reqWidth, int reqHeight) {
    // Raw height and width of image
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {

        final int halfHeight = height / 2;
        final int halfWidth = width / 2;

        // Calculate the largest inSampleSize value that is a power of 2 and keeps both
        // height and width larger than the requested height and width.
        while ((halfHeight / inSampleSize) >= reqHeight && (halfWidth / inSampleSize) >= reqWidth) {
            inSampleSize *= 2;
        }
    }
    return inSampleSize;
}

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {

    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(res, resId, options);

    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeResource(res, resId, options);
}

我可以在文档中获得的代码。好吧,我认为这是为了更有效地加载图像,但我有内存问题。我尝试解释这个问题。

1 - 我想加载一个png,2037x1440像素,12.6kb。

2-I aply我的代码并加载了一个2037x1440像素和11,73 MB的png。我不介意我做错了什么。为什么android乘以我的drawables的大小1000?

10-12 12:06:07.842 12405-12822/com.viridesoft.kiseichuu V/control4: width=2037 height=1440 size=11733120

编辑:如果我用BitmapFactory.decodeResource加载drawable,大小是相同的,11733120。

旧问题应该改变。我知道我不能减少更多的图像尺寸,我继续遇到同样的问题。

我加载了很多图像以创建一个dinamical背景并为所有角色(我的播放器和僵尸)充电,直到屏幕大小的25%px x 10%px的111位图,直到100的30位图% 屏幕尺寸。我在加载器活动中加载所有这些位图并保存以供以后在游戏中使用。我有一个高质量的图像和一个drawable-nodpi文件夹,有很多图像,我看到最好的Android分辨率。我的游戏在某些设备(bq aquaris,nexus 5等)中流畅,但是不断清理内存并且在其他设备中运行缓慢(某些平板电脑,某些中档设备等)

新问题是: 如何为流畅的游戏体验有效地加载大量图像?

0 个答案:

没有答案