Android Multi Window - Android выбирает неправильный файл значений ориентации в многооконном режиме

Я работаю над включением поддержки 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(); везде, где используются файлы ресурсов, потому что это много изменений.

Пожалуйста, дайте мне знать, если есть обходные пути для этого.

Спасибо


person Manoj J    schedule 14.12.2020    source источник