Планшет для android studio

Разработка под планшеты

Устройства под Android можно условно разделить на две группы — телефоны и планшеты. До недавнего времени существовали две ветки развития платформы — версии 2.* и версии 3.*. С выходом Android 4.0 обе ветки были объединены и теперь везде используется единый код. Но пусть данное обстоятельство не вводит вас в заблуждение.

Разработка под планшеты очень сильно отличается от разработки под обычный смартфон. Для меня первый звоночек прозвучал, когда я выложил на Google Play простенькую программу для снятия показаний счётчика электроэнергии. Писалась программа для практики в учебных целях и была выложена в магазине приложений для изучения механизма работы этого самого магазина. Но неожиданно для меня несколько тысяч человек скачало программу и стали просить продолжить работу над ней. В статистике загрузок было видно, что очень много пользователей устанавливает приложение именно на планшет. И вот однажды один из пользователей программы прислал мне скриншот, где описывал свою проблему и просил меня подправить логику приложения. Когда я увидел этот скриншот, то чуть со стула не упал. Не ожидал, что впечатление от программы так может резко меняться от размеров. Но размер имеет значение!

Когда я запускал программу на маленьком телефоне, то всё выглядело достаточно аккуратно и изящно. А теперь возьмите в руки стандартную книгу, разверните её в альбомной ориентации и представьте себе кнопку, которая тянется по всей ширине книги. Жуткое зрелище.

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

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

Квалификаторы large/xlarge (устар.)

Существует специальный квалификатор large (res/layout-large и его производные layout-large-land и т.п.), который действует на устройства с экранами от 7 дюймов и выше. Сейчас считается устаревшим, так как некоторые устройства не совсем правильно определяли данный квалификатор. Часто в целях совместимости создают папку с данным квалификатором и копируют в него файлы из новых квалификаторов (или псевдонимы), о которых ниже.

Тоже самое относится к xlarge, который действует на устройства с диагональю экрана 10 дюймов.

Квалификатор Smallest-width (sw)

В Android 3.2 и выше доступен квалификатор Smallest-width, сокращёно sw. Он позволяет определять экраны с заданной минимальной шириной в dp. Например, планшет с экраном 7 дюймов имеет минимальную ширину 600 dp, и если вы хотите, чтобы приложение работало на нём в двухпанельном режиме (а на меньших экранах в однопанельном), используйте два макета, но вместо квалификатора размера large укажите sw600dp. В таком случае на экранах, минимальная ширина которых составляет 600 dp, будет использоваться двухпанельный макет.

Читайте также:  Android для htc yota

Далее речь пойдёт применительно к планшету на 7 дюймов с разрешением экрана 1024×600. Мы уже привыкли, что вся основная разметка содержится в файле activity_main, которая находится в папке res/layout. Отлично, начните с этого файла и набросайте макет для телефона. Теперь создайте новую папку res/layout-sw600dp/ и скопируйте в неё файл activity_main.xml. В этой папке будет находиться макет программы, специально разработанный с учетом семидюймового экрана. Теперь, в зависимости, где запускается программа, система сама автоматически выберет нужный макет и покажет его пользователю.

Квалификаторы width (w) и height (h)

Также можно использовать квалификатор типа wXXXdp, где доступная ширина больше или равна XXX dp, и квалификатор типа hXXXdp, где доступная высота больше или равна XXX dp.

Псевдонимы

Следует учесть, что на Android-устройствах до версии 3.2 квалификатор sw600dp не будет работать, поэтому для них по-прежнему нужно использовать large и вам потребуется еще один файл с названием res/layout-large/main.xml, идентичный файлу res/layout-sw600dp/main.xml. Поэтому приходится дублировать оба файла с одинаковым содержанием.

Чтобы избежать дублирования файлов, используйте псевдонимы. Например, можно определить следующие макеты:

  • res/layout/main.xml (однопанельный макет);
  • res/layout/main_twopanes.xml (двухпанельный макет).

Добавляем новые папки с файлами:

res/values-large/layout.xml

res/values-sw600dp/layout.xml

Содержание последних двух файлов одинаково, но сами по себе они не определяют макет. Они служат для того, чтобы назначить файл main в качестве псевдонима main_twopanes. Так как в них используются селекторы large и sw600dp, они применяются к планшетам и телевизорам на платформе Android независимо от версии (для версий до 3.2 используется large, а для более новых – sw600dp).

Квалификаторы ориентации

Так как число устройств с разными экранами растёт, то приходится дополнительно адаптировать дизайн для маленьких экранов, планшетов на 7 и 10 дюймов, телевизоров. Вот примеры различных вариантов дизайна.

  • Маленький экран, вертикальная ориентация: однопанельный вид с логотипом.
  • Маленький экран, горизонтальная ориентация: однопанельный вид с логотипом.
  • Планшетный ПК с 7-дюймовым экраном, вертикальная ориентация: однопанельный вид с панелью действий.
  • Планшетный ПК с 7-дюймовым экраном, горизонтальная ориентация: двухпанельный вид с панелью действий.
  • Планшетный ПК с 10-дюймовым экраном, вертикальная ориентация: двухпанельный вид (узкий вариант) с панелью действий.
  • Планшетный ПК с 10-дюймовым экраном, горизонтальная ориентация: двухпанельный вид (широкий вариант) с панелью действий.
  • Телевизор, горизонтальная ориентация: двухпанельный вид с панелью действий.

Каждый из этих макетов определен в XML-файле в каталоге res/layout/. Чтобы сопоставить их с определенными конфигурациями экрана, в приложении используются псевдонимы. Примеры можно посмотреть в документации (русский перевод).

Как с этим работать в Eclipse. Когда вы создадите файл в новой папке, то в верхней части IDE вы можете увидеть выпадающий список, позволяющий быстро переключаться между двумя файлами activity_main.xml. Изменения, которые вы делаете в одном файле, не переносятся в другой файл. Поэтому будьте внимательны. Если какие-то элементы должны совпадать, то нужно внести изменения в оба файла. Также рядом с этим выпадающим списком можно выбрать форм-фактор устройства, чтобы увидеть созданный макет визуально. Эта операция возможно только при работе с XML в графическом режиме.

Также необходимо создать несколько новых эмуляторов под ваши требования. Сразу хочу предупредить об одной проблеме, с которой сам столкнулся. Когда я попытался загружать программу в уже готовый эмулятор на 7 дюймов, он по-прежнему загружал разметку под обычный телефон. В конце концов я снёс все эмуляторы, перезагрузился и создал эмуляторы под нужные мне размеры заново. И тогда всё заработало.

Второй важный момент — указание размеров. Обычно мы храним значения размеров в файле res/values/dimens.xml. Текст, заданный для телефона, окажется слишком мелким для планшета. Поэтому аналогично, создаём альтернативный файл res/values-sw600dp/dimens.xml. Я также пробовал сохранить файл dimens.xml в папке res/values-v15 и у меня также всё работало. Честно говоря, не знаю, какой вариант правильный.

Также можно управлять размерами через стили. В файле res/values/styles.xml:

Читайте также:  Android webview from file

В файле res/values-sw600dp/styles.xml:

Третий важный момент, о котором нужно помнить — различия в железе. Например, в новом планшете Google Nexus 7 нет телефонного модуля и только одна фронтальная камера. Поэтому, в манифесте рекомендуется указывать, что программа требует наличия телефона или камеры, чтобы ваше приложение не было доступно в магазине приложений для пользователей, у которых нет телефона и камеры. Например:

Т.е. ваша программа не требует наличия камеры, но обязывает иметь микрофон.

Кстати, выяснил интересную особенность фильтрации по разрешениям для Nexus 7. Оказывается, для него отдельно следует добавлять строку с точным указанием dpi:

Делайте отступы 16dp как минимум от краёв экрана для текстов.

Длина строки не должна быть слишком большой. Максимум 100 символов, оптимальный вариант: 50-75.

ListView и меню не должны растягиваться на весь экран (используйте фрагменты).

Рекомендуемый размер для элементов экрана, работающих от пальца — 48dp (32dp как минимум).

Поддержка планшетов, которые умеют принимать/отправлять SMS, но не умеют звонить

Существуют планшеты с модулем, позволяющим принимать и отправлять SMS. Для них стоит установить разрешения:

Только под планшеты, только под телефоны

Можно прописать в манифесте различные настройки, чтобы программа выводилась в Google Play только под планшеты или только под телефоны. Приблизительно так.

Источник

Как запустить Android Studio на ЛЮБОМ устройстве с помощью JetBrains Projector

Нажатие кнопки «запустить» в моем браузере запускает сборку на удаленном сервере, которая затем передается в виде APK через ssh на мой ноутбук, а затем через Wi-Fi на мое устройство. В какие времена мы живем, ребята!

Разработка под Android всегда требовала ресурсов. Фактически, даже топовый MacBook Pro с трудом справится со средним и большим проектом. Для компиляции и запуска приложения требуется от 10 до 15 ГБ оперативной памяти, и это без запуска эмулятора! Излишне говорить, что если у вашего ноутбука всего 16 Гб оперативной памяти, терпение во время разработки вам определенно понадобится.

Мой личный ноутбук, четырехлетний Razer Blade с 16 Гб оперативной памяти, начинал ВЕШАТЬСЯ, как только я открывал в Android Studio один из моих личных проектов с несколькими модулями. Кулеры дули громче, чем когда я играл в 3D-игры, и это сводило меня с ума.

Итак, я начал искать альтернативы. Как я могу работать над своими Android-проектами, не превращая ноутбук в печь для обжига? Естественный ответ — запускать нагруженные вещи в облаке.

После того, как я перепробовал различные подходы, такие как Mirakle, и добился небольшого успеха, мой хороший друг Тай Смит рассказал мне о проекте инкубатора JetBrains под названием Projector. По сути, он позволяет вам получить доступ к любой IDE JetBrains через браузер с помощью хитрого трюка. Я попробовал это, и был потрясен. При таком подходе вы можете легко программировать с любого устройства, на котором можно запустить браузер. Фактически, вот Android Studio «работает» на моем телефоне, почему бы и нет.

Удаленная Android Studio на телефоне

Конечно, вы никогда не станете программировать на телефоне, но это доказывает, что устройство не имеет значения. Если у него есть браузер, вы можете использовать его для программирования. Это все меняет!

Без ограничений в оборудовании я могу выбрать портативную, легкую и гораздо более дешевую машину для разработки! На мой взгляд, хороший выбор — Chromebook, MacBook Air или Surface Go. Я даже рассматривал iPad как альтернативу, он работает, но определенно не так удобен, как настоящий ноутбук. На данный момент мне лично больше всего нравится Pixelbook Go, отличная клавиатура и сверхлегкий вес, мне очень нравится писать с него код.

Где на самом деле работает Android Studio?

Вам по-прежнему нужна мощная машина в облаке или в локальной сети, чтобы выполнять тяжелую работу по запуску IDE и сборок Gradle. К счастью, облачные виртуальные машины теперь стали обычным делом, и вы можете запустить их за считанные минуты с помощью таких сервисов, как Amazon AWS, Google Cloud или Microsoft Azure. Я выбрал AWS, сделал экземпляр EC2 с 8 ядрами, 32 ГБ ОЗУ и 100 ГБ хранилища. Работа с экземпляром обходится мне примерно в 0,40 доллара в час, что недешево, если вы используете его круглосуточно, без выходных, но поскольку я использую его только несколько часов в неделю для своих личных проектов, цена оказывается вполне доступной. Даже если бы я использовал его 8 часов в день 5 дней в неделю, это обошлось бы мне примерно в 64 доллара в месяц. Неплохо, учитывая, что мне больше не нужен дорогой ноутбук.

Читайте также:  Есть кнопка reset андроид

Когда я хочу работать над своими проектами, я просто запускаю свой экземпляр EC2, запускаю на нем Projector, затем открываю вкладку Chrome и готов писать код. Больше никаких сумасшедших кулеров, никакого перегрева!

Как работает JetBrains Projector?

Идея Projector проста, но довольно гениальна. Он перехватывает команды отрисовки из IDE (или любого приложения Swing) с помощью кастомного движка рендеринга (реализация AWT), который вместо визуализации вещей на экране записывает все команды, сериализует их и отправляет их веб-клиенту. Веб-клиент интерпретирует эти команды рисования и отображает их на веб-странице. Веб-клиент записывает ввод с клавиатуры и мыши и отправляет его обратно в IDE через AWT.

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

Единственным недостатком этого подхода является то, что некоторые сочетания клавиш IDE конфликтуют с собственными сочетаниями клавиш браузера. Например, cmd + w закрывает вкладку браузера вместо одной из вкладок в IDE. Однако есть обходной путь — можно добавить страницу как ярлык на рабочий стол, что будет открывать любой веб-сайт в режиме приложения. При этом у меня все остальное работает очень хорошо, включая все мои ярлыки. Когда Chrome помещается в полноэкранный режим, он выглядит как настоящее приложение.

Projector все еще находятся на ранней стадии развития, но мне не терпится увидеть, как они будут развиваться.

Работаю с Jetpack Compose на iPad Pro

А как насчет развертывания приложений на устройстве и отладки?

Поскольку Android Studio работает на удаленном сервере, я подумал, что у него не получится просто по нажатию кнопки запуска в Android Studio установить приложение прямо на мой телефон. Я был неправ.

Оказывается, с помощью простого ssh-туннеля (одна простая инструкция в командной строке) вы можете «связать» adb на вашем локальном компьютере и на удаленном сервере, так что ваше устройство будет напрямую подключено к удаленному серверу и отображаться на удаленной Android Студия как обычно.

Я пошел немного дальше и настроил Wi-Fi-отладку между телефоном и ноутбуком, что означает, что мне не нужно иметь дело с какими-либо USB-кабелями.

Нажатие кнопки «запустить» в моем браузере запускает сборку на удаленном сервере, которая затем передается в виде APK через ssh на мой ноутбук, а затем через Wi-Fi на мое устройство. В какие времена мы живем, ребята!

Как мне попробовать JetBrains Projector?

Заинтересованы в настройке этого самостоятельно? Я написал пошаговое руководство по установке на GitHub.

С какого устройства вы будете писать код теперь, когда мы освободились от этих аппаратных цепей? Дайте мне знать в Твиттере!

Источник

Оцените статью