Всякий раз, когда Activity
входит или выходит из режима PIP, он уничтожается и воссоздается (это поведение, которое я заметил).Разница между анимацией и конечным результатом заключается в том, что при переходе в режим PIP система выполняет анимацию путем уменьшения действия и его компонентов пользовательского интерфейса.
При повторном создании действия используется тот же макет, который вы указали при первоначальном создании.из-за активности с теми же размерами, проблема в том, что конфигурация Activity
изменилась, и устройство вошло в конфигурацию меньшего размера, т.е. в вашем случае от xlarge до маленького или обычного.
Тактеперь, когда мы знаем, что Activity
уничтожено, вы можете обрабатывать изменения размера экрана, как обычно.
Вот что вы можете сделать:
- Предоставить новый макет для новогоконфигурация.
- Укажите новый размер текста для новых конфигураций.
- Укажите новый размер текста во время выполнения при
onPictureInPictureModeChanged()
обратном вызове.
Я достигжелаемый результат, добавив новую папку dimens-small
.Вы можете выбрать один для себя.Этот размер. Xml будет содержать android:textSize="@dimen/textSize"
для маленького экрана.
Теперь, когда это сделано, вот причина, по которой вы, вероятно, не искали отдых: согласно PIP Docs
указывает, что ваша активность обрабатывает изменения конфигурации макета, чтобы ваша активность не перезапускалась, когда изменения макета происходят при переходах в режиме PIP.
И даже если я добавил
android:resizeableActivity="true"
android:supportsPictureInPicture="true"
android:configChanges="screenSize|smallestScreenSize|screenLayout"
в моем теге <activity>
в манифесте, мой Activity
все еще воссоздавался в конце каждого изменения режима.
Что является ошибкой или отсутствием в любом документеили код.Или, возможно, неясное утверждение только для переходов / анимаций, а не фактический конечный результат.