Android学习笔记:Zcutie’s知识空间
问题:由于系统会强制统一dpi,所以当应用自适配时需要对应的dpi时无法获取
代码地址:\frameworks\base\core\java\android\content\res\ResourcesImpl.java
DisplayMetrics getDisplayMetrics() {
if (DEBUG_CONFIG) Slog.v(TAG, "Returning DisplayMetrics: " + mMetrics.widthPixels
+ "x" + mMetrics.heightPixels + " " + mMetrics.density);
//add for dpi 20231204 start
if (ActivityThread.currentOpPackageName().contains("com.xxx")
||ActivityThread.currentOpPackageName().equals("com.android.launcher")
|| ActivityThread.currentOpPackageName().equals("com.android.systemui")) {
mMetrics.density = (float) 2.5;
mMetrics.scaledDensity = (float) 2.5;
mMetrics.densityDpi = 400;
}
//add for dpi 20231204 end
return mMetrics;
}

这篇文章详细解释了在Android开发中,由于系统强制统一dpi,如何在应用自适应时处理特定包名下的密度设置,如com.xxx、com.android.launcher和com.android.systemui。资源文件ResourcesImpl.java中的代码展示了针对这些包名的特殊dpi值调整。
429

被折叠的 条评论
为什么被折叠?



