Edge to Edge навигация и жесты во всех версиях Android - PullRequest
0 голосов
/ 09 июня 2019

Я работаю над добавлением функций 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-интерфейсах активность отображается в полноэкранном режиме, а строка состояния невидима и недоступна.

Мои вопросы:

  1. Почему строка состояния ведет себя по-разному в новых API с android:windowFullscreen? Атрибут XML для minSdk 21, так почему же 29 имеет другое поведение? И должен ли дизайн пользовательского интерфейса различаться для разных версий API из-за этого, так как старые устройства не имеют такой сквозной готовности?
  2. Какой самый простой способ применить Руководство по проектированию для навигации Q Gestures и Edge to Edge во всех версиях API (с точки зрения кода)? Это действительно меняет каждое действие с setSystemUiVisibility?
  3. Для API 29, почему я должен использовать view.setSystemUiVisibility в каждом действии, а не просто делать всю тему для всего приложения полноэкранным? Для API 29 результат, похоже, тот же.
...