Хотя Android уже давно предлагает приложениям использовать весь экран телефона, позволяя им рисовать контент под панелями состояния и навигации, многие приложения этим не пользуются. Есть много причин, по которым разработчики избегают режима edge-to-edge, но в грядущем обновлении Android 15 у них не будет другого выбора, кроме как сделать это — по крайней мере, раньше так считалось.
Если вкратце, то приложения уже давно могут работать в режиме edge-to-edge, обращаясь к нескольким API-интерфейсам, которые говорят ОС рисовать приложение под двумя «системными панелями» (т.е. статусной и навигационной строками). Причина, по которой Google не сразу ввел такое поведение, заключается в том, что у многих приложений могут возникнуть проблемы с пользовательским интерфейсом, если они будут вынуждены переходить в полноэкранный режим. Например, в приложении может быть интерактивный элемент, такой как плавающая кнопка действия, которая будет перекрывать панель навигации, если она будет располагаться на всем экране.
Чтобы решить эту проблему, Google предоставил разработчикам возможность справиться с перекрытиями с помощью отступов, которые определяют, какие части экрана приложения пересекаются с системным пользовательским интерфейсом. Однако, поскольку принцип edge-to-edge никогда “насильственно” не применялся к приложениям, многим разработчикам не нужно было возиться с устранением этих конфликтов пользовательского интерфейса. Однако в Android 15 ситуация должна измениться
Когда в начале этого года Google анонсировал Android 15 Beta 1, он сообщил, что приложения на Android 15 по умолчанию будут отображаться от края до края. Чтобы помочь разработчикам с этим переходом, Google опубликовал новые документы для разработчиков, учебные пособия и кодлабы, демонстрирующие, как работать с применением функции edge-to-edge в Android 15.
Однако ни в одном из этих руководств не упоминается, что существует API, с помощью которого приложения могут отказаться от режима edge-to-edge.
API, о котором идет речь, — это атрибут windowOptOutEdgeToEdgeEnforcement, который приложения могут установить в true в своих файлах тем. По умолчанию атрибут имеет значение false, что означает, что к окну будет применен режим «от края до края», если оно является частью приложения, ориентированного на Android 15. Если же атрибут установлен в true, то к окну не будет применяться функция edge-to-edge.
Однако в описании API предупреждается, что «этот атрибут в новых уровнях SDK станет устаревшим и отключенным», что означает, что этот обходной путь не будет существовать вечно. По крайней мере, это дает разработчикам еще как минимум два года на оптимизацию приложений под режим «от края до края», поскольку Google Play Store не будет заставлять приложения ориентироваться на Android 15 до 31 августа 2026 года. Но даже после этого мы не знаем, в какой версии Android этот атрибут будет действительно устаревшим и отключенным, как предупреждает Google, а значит, его можно будет использовать, чтобы не поддерживать режим edge-to-edge дольше двух лет.
Несмотря на это остается надежда, что большинство разработчиков обновят свои приложения для поддержки режима edge-to-edge, а не откажутся от него. Или этот атрибут будет использоваться только для временного и выборочного исключения определенных окон из режима edge-to-edge. Некоторые из приложений Google, возможно, именно так и поступают, поскольку люди из группы GN Issues в Telegram отметили, что такие приложения, как Phone by Google и Google Play Services, не поддерживают режим edge-to-edge, несмотря на то, что ориентированы на Android 15.
Есть еще Google Chrome для Android, который также может использовать этот API, чтобы отказаться от режима edge-to-edge. Некоторые разработчики также настаивают на том, чтобы Google предоставила механизм отказа от режима edge-to-edge в будущих версиях Android, и, если они это сделают, то принудительное использование режима edge-to-edge в Android может снова превратиться в простое предложение, а не в обязательство.