Я работаю над добавлением функций Android Q в свое приложение и в процессе подготовки пользовательского интерфейса для жестов, используя это руководство , в котором в основном говорится следующее:
<style name="AppTheme" parent="...">
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
и
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
на все виды деятельности. Однако в своих поисках, чтобы сделать его как можно более безболезненным, я использовал эту информацию (начиная с 2010 года) и добавил:
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
к стилю, и заметил, что в API 29 он фактически создает желаемую строку состояния «проведите по мере необходимости» в верхней части и создает впечатление от края до края. В старых API-интерфейсах активность отображается в полноэкранном режиме, а строка состояния невидима и недоступна.
Мои вопросы:
- Почему строка состояния ведет себя по-разному в новых API с
android:windowFullscreen
? Атрибут XML для minSdk 21, так почему же 29 имеет другое поведение? И должен ли дизайн пользовательского интерфейса различаться для разных версий API из-за этого, так как старые устройства не имеют такой сквозной готовности?
- Какой самый простой способ применить Руководство по проектированию для навигации Q Gestures и Edge to Edge во всех версиях API (с точки зрения кода)? Это действительно меняет каждое действие с
setSystemUiVisibility
?
- Для API 29, почему я должен использовать view.setSystemUiVisibility в каждом действии, а не просто делать всю тему для всего приложения полноэкранным? Для API 29 результат, похоже, тот же.