我看到好多博客都是這樣計算的,可是這樣算對嗎?有沒有哥們試驗過這種方法正確性?我以爲看博客要對博主表示懷疑,論證別人寫的是否正確。更多詳細能夠看個人GitHub:https://github.com/yangchong211
- 說出個人結論:上面1.1這種說法也對,可是不全對,沒有說明場景,同時也忽略了一個影響項:Density。接下來看看源代碼。
- inDensity默認爲圖片所在文件夾對應的密度;inTargetDensity爲當前系統密度。
- 加載一張本地資源圖片,那麼它佔用的內存 = width * height * nTargetDensity/inDensity * nTargetDensity/inDensity * 一個像素所佔的內存。
@Nullable
public static Bitmap decodeResourceStream(@Nullable Resources res, @Nullable TypedValue value,
@Nullable InputStream is, @Nullable Rect pad, @Nullable Options opts) {
validate(opts);
if (opts == null) {
opts = new Options();
}
if (opts.inDensity == 0 && value != null) {
final int density = value.density;
if (density == TypedValue.DENSITY_DEFAULT) {
opts.inDensity = DisplayMetrics.DENSITY_DEFAULT;
} else if (density != TypedValue.DENSITY_NONE) {
opts.inDensity = density;
}
}
if (opts.inTargetDensity == 0 && res != null) {
opts.inTargetDensity = res.getDisplayMetrics().densityDpi;
}
return decodeStream(is, pad, opts);
}