Хабрахабр

Раскладные смартфоны: а что насчёт приложений?

Всю неделю шли анонсы складных смартфонов: Samsung и Huawei уже жаждут лишить нас крупной суммы, у Oppo и Xiaomi пока что прототипы.

А для любого нового форм-фактора важна и софтовая поддержка: можно вспомнить, как при появлении iPad сначала приходилось пользоваться «айфонными» приложениями, ужасно выглядевшими на 10-дюймовом экране, а позже постепенно появлялись адаптированные. Их бурно обсуждали, но в основном речь шла о железе и о ценах.

К чему готовиться тем пользователям, которые решатся купить дорогущее устройство? Возникнут ли сложности у существующих Android-приложений на «раскладушках»? Как протестировать своё приложение, если под рукой нет устройства за $2000? А что нужно сделать разработчику, чтобы эти пользователи остались довольными?

Могли что-то упустить — так что, если Android-разработчики в комментариях дополнят, будем рады.
Под катом мы описали это и с «пользовательской» стороны, и с «разработческой».

Оптимизация UI

Ура, благодаря раскладушкам в карман теперь влезает большой экран! Можно не скроллить постоянно текст по три строчки, а увидеть много информации сразу! Удобно-то как пользоваться всем станет! Так?

Слева — то, как выглядит приложение Twitter сейчас на экране 6-дюймового смартфона. Ну, давайте сравним. Справа — то, как оно может выглядеть на новомодной раскладной штуке с близким к квадратному экраном, как у Huawei Mate X (за попиксельную точность не поручимся, но суть такая):

Упс. То есть на старый экран влезло два твита, а на новый — полтора. Теперь можно купить телефон дороже $2000, чтобы стало неудобнее читать Твиттер.

У приложения Твиттера интерфейс рассчитан только на обычный телефонный экран, где «залепить фотографию во всю ширину» никогда не окажется слишком широким. Почему так? (В итоге под ChromeOS это приложение выглядит так, что вы не хотите этого видеть.)

Проблема в том, что сейчас Android-планшеты не пользуются спросом, стало неочевидно, надо ли вкладываться в их поддержку, и в итоге у приложений с отображением на крупных экранах сейчас всё очень по-разному. Вроде бы мы уже проходили всё это в 2011-м с появлением Android-планшетов: сначала телефонные приложения на них выглядели плохо, потом в Android добавили Fragments, разработчики стали работать над тем, чтобы на разных экранах их приложения выглядели по-разному, всё стало хорошо… так? А конкретно у раскладных смартфонов ещё и соотношение сторон нестандартное.

Но практически, пока такие смартфоны стоят от $2000, их доля рынка будет такой маленькой, что вряд ли под них будут подстраиваться. Теоретически как раз появление раскладушек могло изменить ситуацию: врывается новая модная категория устройств, и все стараются, чтобы их приложения получше выглядели на них.

Кроме того, если в будущем раскладные телефоны подешевеют, то это может изменить расклад. Это не конец света: скажем, тот же Твиттер в веб-версии выглядит куда лучше, да и в целом веб куда лучше адаптируется к разным размерам экрана, так что вот браузинг и впрямь должен стать комфортнее. Но, в общем, пока что не всё гладко в датском королевстве.

Вывод для пользователей
Не верьте красивым картинкам из презентаций, где подберут отлично выглядящие на устройстве приложения — если захотите покупать «раскладушку», проверьте сначала, как выглядят важные вам.

Но по случаю появления «раскладушек» попробуйте хотя бы в эмуляторе открыть ваше приложение на экране больше телефонного и посмотрите, что получится — возможно, сами содрогнётесь и захотите изменить ситуацию. Вывод для разработчиков
Вкладывать ли ресурсы в разные варианты интерфейса, виднее вам самим, исходя из вашей ситуации.

Переход между экранами

Обычно Android-разработчики не сталкиваются с тем, что их приложение прямо во время использования переносят на другой экран с другим разрешением и соотношением сторон. В презентациях раскладных смартфонов показывают, как бесшовно всё это будет происходить: начал смотреть ролик на сложенном устройстве, потом разложил и продолжаешь с того же места. Действительно ли на практике это всегда будет так беспроблемно?

По умолчанию Android в таких случаях пересоздаёт текущий экран приложения, что теоретически может означать потерю части текущих данных. С точки зрения приложения в момент перехода происходит то, что в Android-разработке называют configuration change.

И поскольку этот простой поворот давно мог лишить пользователя только что введённых данных, так же давно предпринимаются и меры для их сохранения. Но, к счастью, это далеко не первая появившаяся разновидность configuration change: например, простой поворот экрана обычного смартфона тоже подходит под это определение. Окончательно тут всё зависит от разработчиков конкретного приложения (позаботились ли они о том, чтобы их приложение корректно обрабатывало смену конфигурации), но в целом ситуация благополучная: новой большой проблемы не возникло, только разновидность старой, с которой давно и успешно справляются.

Вывод для пользователей
Вероятно, подавляющее большинство популярных приложений будет отрабатывать переход между экранами корректно, но в каких-то случаях недоработки могут встречаться.

Вывод для разработчиков
В целом просто требуется, чтобы ваше приложение корректно отрабатывало смену конфигурации (см., например, страницу «Handle configuration changes» в официальной документации).

Пока в эмуляторе Android Studio виртуальных раскладушек тоже нет, Samsung сделал костыль промежуточное решение: дополнение к имеющемуся эмулятору, позволяющее получить не то что бы виртуальный Samsung Fold, но что-то вроде. А как проверить на практике, что переход между экранами проходит благополучно, если «раскладушки» для тестирования у вас нет?

Выглядит это так (переключалка на виртуальном экране справа внизу, с цифрами 1 и 2): Создаёшь в AVD Manager большой планшет, устанавливаешь специальный APK-файл с сайта Samsung, и добавляется «переключалка» между двумя вариантами: в каждом используется только часть экрана планшета, соответствующая по разрешению одному из экранов Samsung Fold.

Многооконный режим

Ещё одна особенность новой категории — многооконность: Samsung прямо говорит о том, как здорово будет выводить на экран Fold три приложения сразу. Что будет с этим?

0 появилась возможность выводить на экран два приложения сразу, а переход от двух окон к трём не настолько принципиальный. С первого взгляда здесь тоже революции нет: ещё в Android 7. Вроде бы тогда можно сделать все выводы по тому, как это будет работать, по тому, что мы могли увидеть уже давно?

Раньше из одновременно отображаемых приложений только одно было «полностью активным» (то, которое «в фокусе»), а остальные оказывались в режиме «паузы», теперь же сразу несколько могут быть активными в равной степени: Но как раз сейчас возник новый нюанс: Google объявил, что у мультиоконного режима появляется новый вариант «multi-resume».

Google пишет примерно следующее (вольно переводим с вежливого английского на разговорный русский): А чем это вызвано и что меняет?

Вы считаете, что раз называется «пауза», надо вообще всё в приложении поставить на паузу — видео, например. «Разработчики, козявки этакие, вы официальные гайды не читаете и правильный подход к многооконному режиму не внедряете. Ну, раз для вас следовать правильным практикам слишком сложно, фиг с вами, мы подстроимся: теперь все приложения на экране смогут быть активными одновременно». Но если пользователь поделил экран между вашим видеоплеером и другим приложением, то ежу ведь понятно, что он хочет продолжать смотреть видео.

Но позже собираются сделать нормой для всех, причём не только на «раскладушках», но и в двухоконном сплит-скрине на обычных смартфонах. Пока что это всё в тестовом режиме (multi-resume будет работать только в случаях, когда и разработчик приложения выразил своё согласие на это, и производитель устройства).

Похоже, что в данный момент некоторые приложения в мультиоконном режиме будут работать неудобно (например, мессенджер может не показывать новые пришедшие сообщения, если он в данный момент оказался не в фокусе). Вывод для пользователей
Пока что всё в промежуточном состоянии. Глядишь, через пару лет станет получше. Но Google борется за то, чтобы это исправить.

Вывод для разработчиков
К новому варианту multi-resume можно подключиться, добавив в AndroidManifest такую строчку:

<meta-data android:name="android.allow_multiple_resumed_activities" android:value="true" />

Но поскольку требуется ещё и согласие производителя девайса (и пока непонятно, все ли его дадут) — наверное, лучше всё-таки проштудировать гугловскую страницу «Multi-window support» и реализовать onPause() с её учётом, не засовывая туда остановку всего подряд.

Если вас в этом тексте интересовали «выводы для разработчиков», то вас может заинтересовать и конференция Mobius: оттуда мобильные разработчики могут вынести много ценных выводов по самым разным поводам. Минутка рекламы. Она пройдёт 22-23 мая в Санкт-Петербурге, узнать больше можно на сайте.

А если у вас самого есть ценные выводы по насущному для мобильных разработчиков вопросу — сейчас идут последние дни, когда можно подать заявку на доклад!

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»