超大屏幕从资源文件获取bitmap可能放大倍数过大的问题,占用内存也会过大。
根据log,看到我的lg g2手机的dpi为480,小米手机2s为320。
两张图片大小分别为 70,110.
小米2s获取图片为51,76,LG G2获取bitmpa为 76,114.
114的图片还算正常,但是76的图片居然比114的还要大,非常神奇的bug,应该属于android神机bug,不明原因。
DisplayMetrics.DENSITY_XXHIGH=480
DisplayMetrics.DENSITY_XHIGH=320
目前想到的方法是根据屏幕dpi来选择解码资源方式。这个不明白原理,纯粹调试出来的结果。
if (bitmap_award == null) {
int densityDpi = getResources().getDisplayMetrics().densityDpi;
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.ALPHA_8;
if (densityDpi > DisplayMetrics.DENSITY_XHIGH) {
opts.inTargetDensity = DisplayMetrics.DENSITY_XHIGH;
bitmap_award = BitmapFactory.decodeResource(getResources(), R.drawable.award, opts);
}else{
bitmap_award = BitmapFactory.decodeResource(getResources(), R.drawable.award);
}
}