超大屏幕從資源文件獲取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);
}
}