通过“设置/显示”将屏幕放大,我发现我的Galaxy S9+屏幕密度从430dpi变为了超过600dpi的某个值。
这使得布局和图像变成了xxhdpi到xxxhdpi。
如果我有一个textView其固定大小为16dp,
在xxhdpi中它是16 * 3px,在xxxhdpi中它将变为16 * 4px。
由于设备的实际密度从未改变,这使得我的布局(当然包括来自editText或textView的文本)变得更大,而这正是Google(或制造商三星)打算使用此功能的原因。
但我不希望这种情况在我的应用中发生。
我已经尝试通过以下方式修复它;
这使得布局和图像变成了xxhdpi到xxxhdpi。
如果我有一个textView其固定大小为16dp,
在xxhdpi中它是16 * 3px,在xxxhdpi中它将变为16 * 4px。
由于设备的实际密度从未改变,这使得我的布局(当然包括来自editText或textView的文本)变得更大,而这正是Google(或制造商三星)打算使用此功能的原因。
但我不希望这种情况在我的应用中发生。
我已经尝试通过以下方式修复它;
Configuration configuration = activity.getResources().getConfiguration();
if (configuration.densityDpi != 430) {
configuration.densityDpi = 430;
}
DisplayMetrics metrics = activity.getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) activity.getSystemService(activity.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.densityDpi * metrics.density;
activity.getResources().updateConfiguration(configuration, metrics);
这会强制屏幕密度变为430,在Galaxy S9+上运行良好。 但实际上,对于所有设备,默认密度都不会是430。
我如何确定运行我的应用程序的设备的默认密度?
或者是否有一种配置可以忽略我的应用程序的放大效果?