Я работаю над включением поддержки Multi Window для нашего приложения. Я внес необходимые изменения в файл манифеста, как указано на веб-сайте разработчика,
android:resizeableActivity = "true"
Проблема здесь в том, что Android подбирает файл с неправильными значениями ориентации в многооконном режиме.
Например, файл sw800dp-land-xhdpi загружается в портретном режиме в многооконном режиме.
Узнал, что Android определяет ориентацию на основе ширины и высоты окна, что не должно быть так, потому что в многооконном режиме ширина может быть выше высоты в какой-то момент даже в портретном режиме, и Android считает это альбомом. .
Фрагмент кода:
private int getPadding(final Activity activity) {
// Get the display metrics
Display display = activity.getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
// Device's width
final float deviceWidth = outMetrics.widthPixels;
final float titleWidth = activity.getResources().getDimension(R.dimen.title_width);
return (int) (deviceWidth - titleWidth) / 2;
}
Здесь для файла ресурсов title_width файл sw800dp-land-xhdpi извлекается в многооконном режиме, когда устройство находится в портретном режиме в какой-то момент, когда высота становится меньше, чем ширина устройства или ширина окна.
Проверил этот ответ - Многооконный режим в Android 7.0: всегда используйте альбомную ориентацию, даже если устройство находится в многооконном портретном режиме
Но я не могу добавить условие activity.isInMultiWindowMode();
везде, где используются файлы ресурсов, потому что это много изменений.
Пожалуйста, дайте мне знать, если есть обходные пути для этого.
Спасибо