Увеличив экран с помощью «Настройки / Дисплеи», я обнаружил, что плотность экрана моего galaxy s9 + изменяется с 430 dpi до где-то более 600 dpi.
Это позволяет изменить макет и изображения с xxhdpi на xxxhdpi.
Если у меня есть textView с фиксированным размером 16dp,
, он был 16 * 3 px в xxhdpi и станет 16 * 4 px в xxxhdpi.
Это делает мой макет (конечно, тексты из editTexts или textViews) намного больше, так как фактическая плотность устройства никогда не меняется, что Google (или создатель samsumg) предназначен для этой функции.
Но я нехочу, чтобы это происходило в моем приложении.
Я пытался исправить это, делая это;
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 для всех устройств.
Как определить плотность устройства по умолчанию для моего приложения?
Или есть конфигурация, чтобы игнорировать эффект увеличения для моего приложения?