Как адаптировать приложение под планшет android
В этом уроке рассказывается, как создать макет, который адаптируется к разным размерам экрана, используя масштабируемые представления, объекты RelativeLayout , квалификаторы размера и ориентации, фильтры псевдонимов и растровые изображений формата nine-patch.
Код, приведенный в уроке, взят из учебного приложения, в котором демонстрируются способы оптимизации для разных экранов. Вы можете загрузить его здесь и использовать части кода в собственном приложении.
В этом уроке описаны следующие аспекты обеспечения совместимости интерфейса с разными экранами:
- обеспечение способности макета адаптироваться к размеру экрана;
- выбор макета интерфейса, отвечающего конфигурации экрана;
- контроль правильности применяемого макета;
- использование масштабируемых растровых изображений.
Использование параметров wrap_content и match_parent
Чтобы создать масштабируемый макет, способный адаптироваться к разным экранам, используйте в качестве значений ширины и высоты отдельных компонентов представления параметры "wrap_content" и "match_parent" . Если используется "wrap_content" , для ширины или высоты представления устанавливается минимальное значение, позволяющее уместить содержание на экран, а параметр "match_parent" (известный как "fill_parent" в API до 8 уровня) служит для растягивания компонента по размеру родительского представления.
Если указать параметры "wrap_content" и "match_parent" вместо строго заданных размеров, в представлениях будет использоваться минимально необходимое место или они будут растягиваться на всю доступную длину и ширину соответственно. Например:
< LinearLayout xmlns : android = "http://schemas.android.com/apk/res/android" android : name = "com.example.android.newsreader.HeadlinesFragment"Обратите внимание на то, что в коде учебного приложения размеры компонентов заданы с помощью параметров "wrap_content" и "match_parent" . В результате макет правильно отображается на экранах разных размеров при разных ориентациях.
Например, вот так он выглядит в вертикальной и горизонтальной ориентациях. Обратите внимание на то, как размеры компонентов автоматически адаптируются к длине и ширине:
Рисунок 1. Приложение News Reader при вертикальной (слева) и горизонтальной (справа) ориентации.
Использование объекта RelativeLayout
С помощью вложенных экземпляров объекта LinearLayout и параметров "wrap_content" и "match_parent" можно создавать достаточно сложные макеты. Однако LinearLayout не дает возможности точно управлять взаимным расположением дочерних представлений: в LinearLayout они просто помещаются в ряд друг за другом. Если необходимо расположить дочерние представления иным образом, используйте объект RelativeLayout , позволяющий задать относительные позиции компонентов. Например, одно дочернее представление можно выровнять по левому краю экрана, а другое – по правому.
< RelativeLayout xmlns : android = "http://schemas.android.com/apk/res/android"На рис. 2 показано, как этот макет выглядит на экране QVGA.
Рисунок 2. Скриншот экрана QVGA (маленького размера).
На рис. 3 показано, как он выглядит на экране с большей диагональю.
Рисунок 3. Скриншот экрана WSVGA (большего размера).
Обратите внимание: несмотря на изменение размера компонентов их взаимное расположение остается прежним, так как оно задано объектом RelativeLayout.LayoutParams .
Использование квалификаторов размера
Масштабируемые или относительные макеты, один из которых продемонстрирован выше, имеют свои ограничения. Хотя они позволяют создать интерфейс, способный адаптироваться к разным экранам за счет растягивания пространства внутри и вокруг компонентов, пользователю может оказаться не слишком удобно работать с таким интерфейсом. Поэтому в приложении должен использоваться не один масштабируемый макет, а несколько альтернативных вариантов для разных конфигураций экрана. Их можно создать с помощью квалификаторов конфигураций, которые позволяют оперативно выбирать ресурсы, отвечающие текущим параметрам экрана (например, разные варианты макетов для экранов разных размеров).
Многие приложения отображаются на больших экранах в двухпанельном режиме, при котором список элементов расположен в одной панели, а их содержание открывается в другой. Такой режим просмотра удобен на достаточно больших экранах планшетных ПК и телевизоров, однако на экране телефона эти панели следует отображать по отдельности. Для каждого режима просмотра нужно создать отдельный файл.
-
res/layout/main.xml , однопанельный макет (по умолчанию):
Обратите внимание, что во втором случае в названии каталога использован квалификатор large . Этот макет будет выбран на устройствах, экраны которых считаются большими (например, 7 дюймов и более). Первый макет (без квалификаторов) будет выбран для устройств с маленьким экраном.
Использование квалификатора Smallest-width
Он позволяет определять экраны с заданной минимальной шириной в dp. Например, типичный планшетный ПК с экраном 7 дюймов имеет минимальную ширину 600 dp, и если вы хотите, чтобы приложение работало на нем в двухпанельном режиме (а на меньших экранах в однопанельном), используйте два макета из предыдущего раздела, но вместо квалификатора размера large укажите sw600dp . В таком случае на экранах, минимальная ширина которых составляет 600 dp, будет использоваться двухпанельный макет.
-
res/layout/main.xml , однопанельный макет (по умолчанию):
Это означает, что на устройствах, минимальная ширина экрана которых не меньше 600 dp, будет выбран layout-sw600dp/main.xml (двухпанельный макет), а на экранах меньшего размера – layout/main.xml (однопанельный макет).
Следует учесть, что на Android-устройствах до версии 3.2 квалификатор sw600dp не будет работать, поэтому для них по-прежнему нужно использовать large . Таким образом, вам потребуется еще один файл с названием res/layout-large/main.xml , идентичный файлу res/layout-sw600dp/main.xml . В следующем разделе вы познакомитесь с методом, который позволяет избежать дублирования таких файлов макета.
Использование псевдонимов макетов
Квалификатор Smallest-width работает только на устройствах Android 3.2 или более поздних версий. Для совместимости с более ранними устройствами по-прежнему следует использовать абстрактные размеры (small, normal, large и xlarge). Например, чтобы интерфейс открывался в однопанельном режиме на телефонах и в многопанельном на планшетных ПК с 7-дюймовым экраном, телевизорах и других крупных устройствах, подготовьте следующие файлы:
- res/layout/main.xml: однопанельный макет;
- res/layout-large: многопанельный макет;
- res/layout-sw600dp: многопанельный макет.
Последние два файла идентичны: один из них предназначен для устройств Android 3.2 и новее, а второй для более старых планшетных ПК и телевизоров на платформе Android.
Чтобы не создавать дубликаты файлов и упростить процесс поддержки приложения, используйте псевдонимы. Например, можно определить следующие макеты:
- res/layout/main.xml (однопанельный макет);
- res/layout/main_twopanes.xml (двухпанельный макет).
Затем добавьте следующие два файла:
< item name = "main" type = "layout" > @ layout / main_twopanes < / item > < item name = "main" type = "layout" > @ layout / main_twopanes < / item >Содержание последних двух файлов одинаково, но сами по себе они не определяют макет. Они служат для того, чтобы назначить файл main в качестве псевдонима main_twopanes . Так как в них используются селекторы large и sw600dp , они применяются к планшетным ПК и телевизорам на платформе Android независимо от версии (для версий до 3.2 используется large , а для более новых – sw600dp ).
Использование квалификаторов ориентации
Хотя некоторые макеты одинаково хорошо смотрятся в вертикальной и горизонтальной ориентациях, в большинстве случаев интерфейс все же приходится адаптировать. Ниже показано, как изменяется макет в приложении News Reader в зависимости от размера и ориентации экрана.
- Маленький экран, вертикальная ориентация: однопанельный вид с логотипом.
- Маленький экран, горизонтальная ориентация: однопанельный вид с логотипом.
- Планшетный ПК с 7-дюймовым экраном, вертикальная ориентация: однопанельный вид с панелью действий.
- Планшетный ПК с 7-дюймовым экраном, горизонтальная ориентация: двухпанельный вид с панелью действий.
- Планшетный ПК с 10-дюймовым экраном, вертикальная ориентация: двухпанельный вид (узкий вариант) с панелью действий.
- Планшетный ПК с 10-дюймовым экраном, горизонтальная ориентация: двухпанельный вид (широкий вариант) с панелью действий.
- Телевизор, горизонтальная ориентация: двухпанельный вид с панелью действий.
Каждый из этих макетов определен в XML-файле в каталоге res/layout/ . Чтобы сопоставить их с определенными конфигурациями экрана, в приложении используются псевдонимы:
< LinearLayout xmlns : android = "http://schemas.android.com/apk/res/android" android : name = "com.example.android.newsreader.HeadlinesFragment" < LinearLayout xmlns : android = "http://schemas.android.com/apk/res/android" android : name = "com.example.android.newsreader.HeadlinesFragment" < LinearLayout xmlns : android = "http://schemas.android.com/apk/res/android" android : name = "com.example.android.newsreader.HeadlinesFragment" android : name = "com.example.android.newsreader.ArticleFragment" < LinearLayout xmlns : android = "http://schemas.android.com/apk/res/android" android : name = "com.example.android.newsreader.HeadlinesFragment" android : name = "com.example.android.newsreader.ArticleFragment"После того как все возможные макеты определены, остается сопоставить каждый из них с подходящей конфигурацией, используя квалификаторы конфигураций. Воспользуемся псевдонимами макетов:
< item name = "main_layout" type = "layout" > @ layout / onepane_with_bar < / item > < item name = "main_layout" type = "layout" > @ layout / twopanes < / item > < item name = "main_layout" type = "layout" > @ layout / onepane < / item > < item name = "main_layout" type = "layout" > @ layout / twopanes < / item > < item name = "main_layout" type = "layout" > @ layout / twopanes_narrow < / item >Использование растровых изображений nine-patch
Чтобы интерфейс был совместим с экранами разных размеров, используемые в нем графические элементы также должны быть адаптированы соответствующим образом. Например, фон кнопки должен одинаково хорошо выглядеть независимо от ее формы.
Если использовать для компонентов, размеры которых меняются, обычные изображения, то они будут равномерно сжиматься и растягиваться, и результат будет далек от идеального. Решением являются растровые изображения формата nine-patch – специальные PNG-файлы, содержащие информацию о том, какие области можно растягивать, а какие нет.
Создавая растровые изображения для масштабируемых компонентов, обязательно используйте формат nine-patch. На рис. 4 показано обычное растровое изображение (увеличенное в 4 раза для наглядности), которое мы переведем в формат nine-patch.
Рисунок 4. button.jpg
Откройте его с помощью утилиты draw9patch , входящей в комплект разработчика (в каталоге tools/ ). Установите метки на левом и верхнем краях, чтобы ограничить области, которые можно растягивать. Можно также провести линию вдоль правого и нижнего краев, как показано на рис. 5, чтобы отметить области, в которых содержание должно быть зафиксировано.
Рисунок 5. button.9.jpg
Обратите внимание на черные пиксели по краям. Метки у верхней и левой границ обозначают те области, которые можно растягивать, а метки у правой и нижней границ – те, куда должно быть помещено содержание.
Также обратите внимание на расширение .9.jpg . Оно должно быть задано именно в таком виде, чтобы система могла определить, что это формат nine-patch, а не обычный PNG-файл.
При применении этого фона к компоненту (с помощью android:background="@drawable/button" ) изображение будет растянуто по размеру кнопки, как показано на рис. 6.
Рисунок 6. Кнопки разных размеров с файлом фона button.9.jpg в формате nine-patch.
На данный момент адаптирую одно из имеющихся приложений под 7' и 8/10', поэтому буду максимально краток.
*для удобства и наглядности все изображения склеил (телефон и планшет)
Примерно так выглядит экран приложения, который не адаптирован под размер планшета. Коротко говоря - все растянуто. У меня еще не так все плохо, и это уже радует.
Перво наперво хотелось бы начать с того, что устройств и диагоналей для нашей платформы существует нереальное количество (over 15.000 устройств). Это минус, так как приходится адаптировать приложение как под маленькие устройства, так и под лопаты планшеты.
Гугл же по вопросу адаптации под плашеты, тв, и чайники советует компоновать экраны, и использовать фрагменты:
- Маленький экран, вертикальная ориентация: однопанельный вид с логотипом.
- Маленький экран, горизонтальная ориентация: однопанельный вид с логотипом.
- Планшетный ПК с 7-дюймовым экраном, вертикальная ориентация: однопанельный вид с панелью действий.
- Планшетный ПК с 7-дюймовым экраном, горизонтальная ориентация: двухпанельный вид с панелью действий.
- Планшетный ПК с 10-дюймовым экраном, вертикальная ориентация: двухпанельный вид (узкий вариант) с панелью действий.
- Планшетный ПК с 10-дюймовым экраном, горизонтальная ориентация: двухпанельный вид (широкий вариант) с панелью действий.
- Телевизор, горизонтальная ориентация: двухпанельный вид с панелью действий.
Совет хороший, но использовать мы его конечно не будем. Мне было бы очень неприятно переписывать логику всех экранов только из за того, что на планшете все выглядит растянуто. Может, со временем я изменю к этому подход, но пока просто впадлу.
Для того, чтобы хоть как то причесать наше приложение, будем создавать измененные копии наших слоев и сообщать приложению, какой слой должен быть загружен при определенном условии.
Итак, открываем студию, к примеру у нас имеется готовый слой для одного экрана телефона (как выше). Создаем точно такой же файл (название идентичное).
Теперь во всплывающем окне мы перетаскиваем параметр Orientation, и назначаем ему Landscape. Отдельно я подчеркнул название, указываем точно такое же как основное.
Теперь в дереве проекта у нас появится такой же файл, но с припиской -land . В моем случае слой уже работает только для 7' планшетов (sw600dp) и только для повернутого экрана (-land).
Что дальше? Следующим шагом необходимо полностью скопировать содержание старого слоя в новый.
Теперь мы сделали разметку для портретного режима. Что будем меняем? Меняем в основном сетку и представление.
Для этого немного увеличиваем шрифты и отступы, при необходимости разбиваем детали интерфейса в две колонки, для последовательного отображения.
Впринципи это не сложно, но занимает много времени. В одном их фрагментов у меня статический контент (список категорий), поэтому процесс может занять некоторое время. Например с динамически подгружаемыми списками проще.
Теперь если внешний вид окна в вертикальном режиме выглядел так (шрифт в TabLayout еще не увеличен):
То для горизонтального уже был переписан (можете использовать TableRow или Linear Layout) в соответствии с нашими нуждами:
При этом я забыл упомянуть, что на изменяемых слоях ни в коем случае нельзя ни удалять элементы, менять идентификаторы или что то в таком духе. Иначе получим крах приложения. Только внешний вид.
Мы разобрались с горизонтальным режимом. А как создать макет вертикальной ориентации для планшета? Очень просто. Заходим в папку нашего проекта:
И создаем новую папку layout-sw600dp
В нее будет необходимо перекинуть те файлы (слои), которые вы будете адаптировать для планшетов. Принцип работы тот же, что описан выше.
Параметр в названии папки sw600dp работает для планшетов с минимальной высотой 600px (например 1024х600).
Для планшетов на 10 дюймов используйте папку res/layout-sw720dp
Вот вроде и все. Если я что то пропустил, не стесняйтесь спросить в комментариях.
Напоследок фото моего котопса:
Android Developers
60 постов 1.8K подписчиков
Правила сообщества
Давайте адекватно относиться к тематике сообщества. Посты, не удовлетворяющие требованиям канала, будут отклоняться. Разработка под Android - это не только описание того, что надо сделать
(освоить Java / покормить кота / установить студию), но и реальные примеры того, что Вы описываете.
Яндекс погода
Никогда особо не парился по поводу памяти в телефоне, но тут решил посмотреть список приложений с фильтрацией по размеру.
Спотифай - ладно, слушаем с женой музыку, сохраняем, один общий плейлист в машине.
2ГИС - многовато для приложения, использующего векторную графику для построения карт без фото-подложки как у Яндекс карт к примеру, но тоже ладно, москва+глобальная карта в любом случае сейчас+еще пара регионов и по ним путеводители с фоточками имеются, так что простительно.
Вконтакте - тоже все понятно, это уже целый комбайн с мини приложениями, огромным функционалом, музыкой и тонной контента.
Но вот Яндекс погода? Какого хрена? Единственное назначение этого приложения - это небольшой виджет на экране который дает мне немного информации. Ладно там есть еще карта осадков на макетной подложке. И всё.
Лучше один раз увидеть
Протестировал, проверил вроде всё что можно. ))
Сегодня пишет пользователь - "при вводе данных - приложение выбрасывает".
Ок, опять тестирую, проверяю на разных телефонах - работает.
По логам - чисто.
Присылают видео - действительно выбрасывает.
И тут, пригляделся внимательнее.
Пользователь вводит число заканчивающееся на ноль, промахивается и нажимает на кнопку сворачивающее приложение.
Уфффф. Расследование окончено. :)
Автономность
Нужен ещё параметр для учёта температуры на улице
Войти в айти. Часть 5
Привет, Пикабу! Да, да.. это очередной пикабушник с кризисом среднего возраста, который вдруг осознал и понял, что с детства мечтал быть программистом. Давненько не было отчёта о моём пути в профессиональный мир разработки. Если вдруг Вам интересен мой опыт, то предыдущие срезы тут:
Вкратце, с чего всё начиналось:
0) Увольнение с военной службы по контракту
2) Высшее образование (заочное) по направлению "Информатика и вычислительная техника"
3) Выучил Java, сейчас изучаю Kotlin и Swift
4) Есть несколько карманных проектов в Play Market, всё довольно простенькое, но стараюсь развивать
5) Женат, детей нет, кот есть
6) В it не работал
Цель - к декабрю 2020 набрать в сумме 1.000.000 загрузок на Android, выучить Swift и выпустить приложение на ios.
Первый пост был написан 10 месяцев назад, в котором я ставил себе рубеж - декабрь 2020. Но не дотянув 2 месяца я схожу с дистанции. Причина этому довольно меркантильная, но приятная - пора устроиться на работу, нужны деньги так как ждём пополнения.
Давайте подведу итоги того, что я имею на данный момент:
- Выучен язык программирования и технологии, позволяющие писать под Android всё, что приходит в голову. Ограничен только временем. На любой вопрос уже есть ответ, стоит только почитать, поэкспериментировать, вникнуть.
- На создании собственных приложений жить можно. Деньги не большие, но на жкх и холодильник хватает. Доход постоянно растёт, если не останавливаться, создавать что-то новое и поддерживать старое.
- Физкультура важна не менее умных книг. Мало движения - тает мотивация, появляется прокрастинация.
- 1.000.000 загрузок набрать не удалось. Цифры гораздо скромнее. На данный момент в сумме загрузок около 240.000, активных пользователей в сумме по приложениям около 83.000
- если из 100 скачавших приложение человек 30 не удаляют его, то это вполне хороший показатель, значит его можно и нужно развивать!
- гайды создания интерфейсов не всегда работают. Порой плюнув на рекомендации корпораций можно сделать что-то, что "зайдёт" людям.
- после 30 на работу в it устроиться можно!
В последнем своём приложении я собрал весь накопленный опыт и понял, что теперь не стыдно рискнуть пройти собеседование. Казалось бы, всего лишь блокнот. Но мне так понравилось работать над деталями, и пробовать новые технологии при работе над ним, что я могу говорить теперь об этом часами. Оказывается, что к созданной тобой программе можно испытывать чувства привязанности и симпатии, что-то вроде любви к своему питомцу. Странно это=)
Результаты по Android меня вполне удовлетворили, чего не сказать о ios. Времени и сил не хватило на всё, буду заниматься им в рамках общего развития. Надеюсь что к весне смогу сделать что-то простенькое.
Если мечтаете сменить род деятельности, выделите время, составьте план, определите сроки и вперёд! Другой жизни не будет, а занятие любимым делом профессионально - это очень, очень круто!
Русская азбука Mорзе для Андроид
Впечатлившись произведениями Павла Кучера решил изучить морзянку.
Да и вообще морзянка всегда может пригодиться, например можно гудком автомобиля сказать пешеходу, что про него думаешь. Или подсказать кому то правильный ответ морганием глаз или пожатием руки или покашливанием.
Нашёл неплохие программы по изучению для PC. Но за компьютер лишний раз сесть некогда и стал искать, что есть под андроид для обучения русской азбуке морзе. Выяснилось, что нет ничего. Т.е. что-то якобы есть, но по факту это оказывались или трейнеры для отработки того, что уже умеешь или справочники или что то типа превратим ваш текст в морзянку.
Я не программист, но пробовал как то писать на Яве под андроид программку для своих детей для обучения математике и игре в математику. И вроде получилось. Ну думаю попробую и тут написать, дело то нехитрое. Оказалось, что дело очень даже хитрое, ибо эта Ява под андроид не умела даже то, что делал мой ZX Spectrum в прошлом веке. Там можно было задать частоту звука и его длительность и наслаждаться прослушиванием. Тут же для получения нужного звука приходилось программировать по точкам синусоиду с которой будет колебаться динамик устройства.
В общем думал справлюсь за несколько вечеров, но шли дни, недели, месяцы. Программа рождалась в муках, справочного материала на Яве под Андроид на русском ничтожно мало, на форумах помогают плохо. И повторюсь, что я вообще не программист. В итоге, когда доделал, то понял, что программке пропадать грех, ибо аналогов то нет. Решил уж потратить ещё несколько вечеров на оформление и выкладывание для всеобщего использования на Google Play и 4PDA.
Программа полностью бесплатна и не содержит рекламы.
Поэтапное изучение знаков азбуки Морзе на приём и на передачу по методике близкой к методике ДОСААФ СССР. Приложение можно использовать и в качестве игры из двадцати уровней с увеличивающейся сложностью.
После прохождения десяти уроков останется не только удовлетворение от пройденного, но и базовый опыт приёма и передачи букв и цифр посредством азбуки Морзе. Воспользовавшись режимом тренировка можно будет отработать приём и передачу отдельных символов до автоматизма.
Изучать морзянку с использованием компьютера обычно некогда, а телефон или планшет всегда под рукой, желательно только иметь наушники, чтобы не мешать окружающим.
Приложение активно скачивается, почти 65 тысяч установок. В основном людям нравится. Правде не все андроид устройства одинаково полезны. На некоторых есть проблемы на "приём", у Явы есть особенности проигрывания звуков. Так, что у кого не пойдёт - не обижайтесь. Буду не против, если кто-то возьмёт за основу и перепишет программу профессионально.
Разработчики из студии CodeWeavers выпустили инструмент CrossOver, который сближает операционные системы и Windows. Теперь на компьютерах, планшетах и даже смартфонах с процессорами x86 по управлением ОС от Google можно запускать классические приложения Windows. Мы протестировали эту утилиту и составили свое небольшое мнение о ней в этой статье.
Содержание
Примечание: утилита CrossOver работает на устройствах под управлением Android и Chrome OS, которые обладают процессорами с архитектурой x86 — это чипы Intel или AMD. Поэтому на большинстве аппаратов с ARM-чипсетами запустить приложения от Windows не получится. Автор статьи тестировал CrossOver на ноутбуке ASUS с процессором AMD и операционной системой Remix OS последней версии.
Что такое CrossOver для Android
Разработчики из CodeWeavers известны тем, что они выпустили утилиты CrossOver для Linux и macOS для запуска на этих ОС приложений от Windows. Утилита CrossOver основана на ПО с открытым исходным кодом под названием Wine. По сути своей CrossOver и Wine — это инструмент для виртуализации, который создает эмулируемую среду Windows для запуска соответствующих приложений.
Эмуляция возможна только на процессорах x86. Чипсеты с архитектурой ARM не поддерживаются, так как код программ Windows не может выполняться на них, а простого конвертера до сих пор нет. Грубо говоря, CrossOver работает только на компьютерах с Chrome OS, а также на планшетах с Android, где в качестве процессора выступает Intel Atom, например — ASUS ZenFone.
Как установить CrossOver для Android
На данный момент утилита CrossOver проходит бета-тестирование в Google Play. Там вы можете записаться на тест программы, либо можно скачать установочный APK-файл утилиты напрямую с Трешбокса и установить на своем гаджете (определенные антивирусами угрозы — просто особенность приложения, связанная с эмуляцией).
Установка и работа с приложениями
Запустив установленное приложение CrossOver, перед нами предстает что-то вроде виртуального рабочего стола Windows со своим меню «Пуск». На этом рабочем столе появятся все иконки установленных вами Windows-приложений. Программа лучше работает в полноэкранном режиме, но это касается только Remix OS и Chrome OS. Самый простой способ установить программу с Windows — воспользоваться внутренним установщиком. Разработчики решили упростить этот процесс, добавив собственный установщик. Нажимаем на надпись “Install Application” в верхнем правом углу. Откроется окно с текстовым полем, выпадающим списком и кнопкой “Install”.
Сразу же CrossOver предлагает установить Steam — каталог игр. Можно просто нажать кнопку “Install” и установка начнется. В выпадающем списке предлагаются другие приложения или игры от Windows, которые точно работают на Android. Если снять галочку с пункта “Only applications”, то в выпадающем списке будет огромное количество игр и приложений от Windows, которые устанавливаются одним кликом. Но будут ли они работать — не гарантируется.
В текстовом поле можно искать приложения или игры по названию. Вот так выглядит Steam после установки на Android:
Большинство игр из Steam не будут работать из-за того, что CrossOver поддерживает только DirectX 9, но разработчики утилиты обещают добавить поддержку версий 10 и 11. Некоторые люди, например, смогли запустить Half-Life и классический Team Fortress, но для этого пришлось отключить полноэкранный режим и активировать программный рендеринг вместо OpenGL:
Конечно, играть в таком эмуляторе практически невозможно из-за низкого FPS и некорректной работы мыши. Контроллер вряд ли будет работать нормально. Но факт того, что игры запускаются уже говорит о чем-то.
Также вы можете установить браузер от Windows для интернет-серфинга в таком эмуляторе. Например, Firefox 45 устанавливается и работает без проблем. Даже расширения функционируют.
Есть возможность установить полноценный офисный пакет. Например — OpenOffice, LibreOffice или Microsoft Office 2007 / 2010.
Более того, желающие могут установить Adobe Photoshop. К сожалению, на моем устройстве многие приложения и игры выдавали ошибки, но автору похожей статьи с Android Police удалось запустить «тяжелый» пакет работы с графикой от Adobe.
Итоги
На текущем этапе разработки CrossOver для Android и Chrome OS — это очень нестабильная и во многом неудобная утилита, которая хоть и может запускать многие Windows-приложения, но все же делает это плохо. На планшетах и смартфонах работать с такой эмуляцией практически невозможно, но для ноутбуков на базе Chrome OS или Remix OS — это отличная возможность использовать приложения от Windows.
В будущем CrossOver может стать лучше в плане возможностей и совместимости. Так как Google сама собирается адаптировать Android для гибридных планшетов и компьютеров (десктопный режим Android 7.0), то можно сказать, что CrossOver ждет большое будущее. Главное — реализация. Будем надеяться, что разработчики из CodeWeavers доделают свою утилиту до хорошего состояния.
В 2007 году корпорация Google разработала открытую операционную систему Android. Производителям смартфонов больше не нужно было покупать лицензию на ОС. Это позволило снизить цены на девайсы. Теперь в мире существует более 24 000 видов устройств Android в разном ценовом диапазоне, и каждый человек может позволить себе смартфон.
Большая аудитория и разнообразие устройств — две важные характеристики, от которых напрямую зависит разработка и монетизация . Если проигнорировать это, то на первом проекте можно потратить лишнее время и деньги.
Особенности платформы Android: как они влияют на разработку приложения
1. Множество актуальных версий
Разработчикам нужно оптимизировать приложение под все «рабочие» версии Android. Это занимает много времени, потому что у каждой версии есть свои особенности: не все методы разработки, которые подходят для Android Oreo, подойдут для Android Lollipop.
Актуальные версии Android
Написанный код нужно проверить. Этим занимается отдел QA: они тестируют приложение на разных версиях. Если QA находит ошибку, он отправляет приложение на доработку. Разработчик правит код, QA проверяет его. Так продолжается до тех пор, пока приложение не заработает без ошибок на всех версиях.
Количество поддерживаемых версий определяется на этапе проектирования. Вместе с клиентом разработчики оценивают, нужно ли приложению работать на устаревших версиях. Для примера: поддерживают версии .1 и выше — у других просто не хватает ресурсов. Если клиент хочет «виртуальную примерку» на , разработчики ищут специальные решения, чтобы адаптировать эту технологию к версии.
2. Конфликты с оболочкой системы
На помимо самой системы Android есть оболочка — подсистема от производителя смартфона, или прошивка. Она нужна, чтобы заполнить функциональность, которую не покрывает базовый Android. В ней производитель реализует всё, что ему хочется.
Для наглядности: смартфоны Xiaomi работают на Android, но у них есть стандартная «начинка» — подсистема MIUI (Xiaomi User Interface). До версии MIUI у Xiaomi не было Меню — иконки приложений «пылились» на Рабочем столе, что не нравилось пользователям. Производитель изменил эту функциональность и добавил в версию новые фичи: динамические обои, анимацию, тёмную тему. элементы оболочка берёт от основной системы: в MIUI 12 — это жесты. Они соответствуют жестам в Android 10.
Оболочки могут конфликтовать с . Так Samsung проходит капчу за пользователя сам, если считает его настоящим. Xiaomi пытается увеличить время автономности устройств, блокируя работу приложений в фоновом режиме. того, что некоторые девайсы Huawei не работают с , на них нужно использовать другую библиотеку для отображения карт, отличную от Google Maps — всё это добавляет времени на разработку и тестирование.
3. Многообразие разрешений экранов
Большой парк устройств — это ещё и разное качество экранов. В зависимости от плотности, экраны девайсов Android делят на восемь типов, но мы в мобильной разработке обычно используем только пять.
Конфигурации типов экранов: синим выделены те, которые «Лайв Тайпинг» чаще всего использует в разработке
Для каждой плотности нужен набор изображений подходящего размера (это касается растровых изображений — векторные адаптируются сами). Дизайнер нарезает иконки, кнопки и другие изображения на пять размеров. Затем разработчик загружает разные наборы изображений в пять проектных папок — так у приложения появляются картинки под каждый тип экрана.
Когда пользователь скачивает приложение на телефон, при использовании современного формата AppBundle система распознаёт тип его экрана и скачивает только ту папку, в которой находятся изображения нужной плотности. В результате экраны приложения выглядят аккуратно, а память устройства не перегружается лишними файлами.
4. Адаптация под планшеты
На разработку приложения, которое адаптируется под планшет, уходит больше времени: разработчик верстает экраны сразу под два вида устройств.
Вёрстка приложения БОТЭ: как экраны выглядят на смартфоне и на планшете
Клиенту лучше предупредить о планшетной версии заранее. Если желание сделать её появится в середине разработки, то могут потребоваться серьёзные изменения архитектуры кода. Это замедлит разработку мобильного .
На проработку всех этих решений уходит время. Но только внимательное отношение разработчиков к техническим деталям позволяет выпустить стабильное приложение. Если вы хотите начать свой бизнес с — напишите нам . Мы возьмём на себя все задачи по его разработке.
Дизайн : зачем нужна концепция Material Design
Пользователь может не выполнить целевое действие ошибок в дизайне, поэтому при разработке интерфейса важно учитывать психологию человека.
«Большинство ошибок по вине человека на самом деле — ошибка дизайна».
Сейчас в Google Play больше 3 млн приложений. Если бы каждый дизайнер предлагал свои решения по навигации, то пользователь бы просто запутался: куда смотреть? как вернуться назад? где кнопка «В корзину»? Этих вопросов не возникает, потому что дизайн унифицирован гайдлайнами Material Design — стандартами, по которым проектируются приложения, попадающие в Google Play. Если дизайнеры соблюдают эти принципы, то пользователь получает приложение, в котором удобно находиться.
Гайдлайны Android
Дистрибуция : преимущества
1. Низкая стоимость размещения в сторе
Выкладывать приложения в сторы можно только с аккаунта разработчика. В Google Play этот аккаунт оплачивается единоразово и стоит всего $25. Для сравнения владельцы аккаунта отдают $99 каждый год.
Google Play не единственный стор, в котором можно разместить — ещё это можно сделать в Samsung Store и Huawei AppGallery. Аккаунты разработчика в них бесплатны, но приложения будут доступны только владельцам девайсов Samsung и Huawei.
2. Быстрая публикация
Релиз приложений в Google Play происходит в пределах трёх суток, в редких случаях — длится неделю. Стор не предъявляет особых функциональных требований к продукту, поэтому в нём может быть опубликовано любое приложение, которое не противоречит правилам площадки.
В инструкции «Как выложить приложение в Google Play» мы разобрали релиз от А (создания аккаунта) до Ф (фичеринга). Если вам понадобится помощь в публикации приложения, напишите или позвоните нам — мы возьмём на себя все заботы по его релизу и поддержке.
3. Большая аудитория
Продажи превышают продажи других ОС: в Германии, Франции, Италии доля Android — 80%, в Мексике, Бразилии и Аргентине — 90–95%, в США, Великобритании, Японии около 60%. В России в 2019 году 73% людей пользовались смартфонами на базе Android.
Сейчас у платформы 2,5 миллиарда активных пользователей — это значит, что публикация приложения в Google Play даёт владельцам бизнеса выход на треть населения Земли.
4. Скачивания
За 2020 год количество скачиваний приложений в Google Play увеличилось на 35% и достигло 28 миллиардов — почти в три раза больше, чем у App Store. По прогнозам сервиса App Annie, цифра продолжит расти. Это значит, что владельцы мобильных приложений получат ещё больше пространства для продвижения бизнеса через стор.
Store Intelligence Data Digest, исследование Sensor Tower за 2020 год: на диаграмме видно, что загрузки приложений из Google Play превышают загрузки из App Store
Как зарабатывать с помощью
Есть несколько способов монетизировать приложение. Их эффективность зависит от того, насколько приложение полезно пользователю, решает ли оно его проблемы и делает ли его жизнь приятней и проще.
Стоимость приложений в России можно установить в диапазоне от 15 рублей до тысяч. По статистике, пользователи Android скачивают на 4,2% меньше платных приложений, чем пользователи iOS, но это не изменяет того, что аудитория Android платёжеспособна. Вам просто нужно дать им приложение, которое они захотят купить.
Встроенные покупки — всё, что пользователь может купить и использовать внутри приложения. К ним относятся подписки, единовременные покупки, например пресеты в фоторедакторах. Полезные и недорогие продукты люди готовы покупать регулярно, но сторы забирают 30% стоимости себе — это комиссия. Будьте готовы, что получите только 70% прибыли.
В бесплатное приложение легче привлечь пользователей, а реклама внутри приложения — отличный способ заработать самим и дать людям контент, за который не нужно платить. Чем больше скачиваний у приложения, тем больше монетизация с рекламы.
С чего начать разработку приложения для Android
Для начала позвоните или напишите нам , чтобы получить бесплатную консультацию по вашему проекту. Мы разрабатываем с 2010 года и вполне вероятно, уже делали похожее и знаем, как сэкономить ваше время и деньги.
Мы рассказали вам об основных особенностях мобильной разработки под платформу Android. Примета гласит: предупреждён — значит… скоро выпустишь приложение в Google Play.
Читайте также: