- Создание Android Live Wallpapers
- В поисках правды
- Рисуем
- Методы жизненного цикла Engine
- Scheduler
- Service & Engine
- AndroidManifest и другие заклинания
- Как добавить
- Причем тут Android Watch?!
- Что получилось
- Благодарности
- Обои для Android 4.4.4
- Подробное описание Android 4.4.4
- Стандартные обои из всех версий Android
- Содержание
- Обои Android 1.5 Cupcake
- Обои Android 1.6 / 2.0 / 2.2 (Donut, Eclair, Froyo)
- Обои Android 2.3 Gingerbread
- Обои Android 3.0 Honeycomb
- Обои Android 4.0 Ice Cream Sandwich
- Обои Android 4.1 Jelly Bean
- Обои Android 4.4 KitKat
- Обои Android 5.0 Lollipop
- Обои Android 6.0 Marshmallow
- Обои Android 7.0 Nougat
- Обои Nexus 2016
Создание Android Live Wallpapers
Мне нужно отображать на экране телефона техническую информацию о его состоянии, точнее, о его состоянии в составе тестового пула. Видеть эту информацию я хочу всегда, то есть на Home screen, и без дополнительных телодвижений.
Способов, которые никак не повлияют на выполнение других приложения, всего два: Widget или Live wallpaper. Я выбрал Live wallpaper, они же «живые обои», потому что они автоматически попадают на все страницы Home screen, и даже на Lock screen. Эта статья содержит практические рекомендации, как создавать «живые обои».
В поисках правды
Документации о «живых обоях» кот наплакал. С момента первого (и единственного) анонса в блоге, случившегося больше 9 лет назад, Гугл не сделал ни одного внятного примера или codelab-а на эту тему. Пришлось разбираться.
Сначала основы. Внутренняя механика Андроида такова, что на устройство мы можем установить только приложение, и устройство всех приложений одинаково. Поскольку «живые обои» — это тоже приложение, то выбор управляющего компонента не велик, и стоит ожидать, что это будет Service. Найти его легко: это WallpaperService.
Экземпляров «живых обоев» может быть несколько, и жизненный цикл у них будет не такой, как у Activity или View. Соответственно, должен быть еще один базовый класс. Это WallpaperService.Engine (и он обязательно inner для WallpaperService!). Если вглядеться, то он окажется таким же поставщиком событий жизненного цикла, как Activity, Service и иже с ними.
Жизненный цикл «живых обоев» выглядит так:
Из этого списка становится понятно, когда можно/нужно перерисовать картинку (либо начать перерисовывать, если у вас анимация), и когда пора прекратить всю активность и не тратить батарейку.
Метод onSurfaceRedrawNeeded() выделяется среди остальных, читайте ниже. Также в помощь есть метод isVisible() (который в Котлине превращается в свойство isVisible ).
Теперь можно собирать этот конструктор. Начну с конца.
Рисуем
Рисовать придется самим на Canvas, никаких layout и inflater нам не будет. Как получить Canvas из SurfaceHolder и как на нем рисовать — за рамками этой статьи, ниже есть простой пример.
Методы жизненного цикла Engine
Все методы жизненного цикла, кроме onSurfaceRedrawNeeded , не требуют немедленной перерисовки. Поэтому хорошим тоном будет перерисовку поставить в очередь.
Обратите внимание на onSurfaceRedrawNeeded, который передает нам вызов одноименного коллбэка SurfaceHolder, который возникает при изменении размера и аналогичных событиях. Этот колбэк позволяет выполнить перерисовку немедленно, не допустив показа пользователю старой (и уже неверной) картинки. Система гарантирует, что пока не произошел возврат из этого метода, вывод на экран будет приостановлен.
Scheduler
Я люблю переопределять Handler, а не гонять в нем Runnable. На мой взгляд, так изящней.
В случае, если у вас анимация или регулярное обновление, то нужно будет сделать регулярную постановку сообщения в очередь (postAtTime() и postDelayed() вам в помощь). Если данные обновляются эпизодически, достаточно для обновления вызвать planRedraw() .
Service & Engine
Собирается эта марешка из Service и Engine вот так:
AndroidManifest и другие заклинания
Заклинаниями в разработке софта я называю то, что невозможно понять, но нужно точно повторить.
В . /app/src/main/res/xml должен лежать XML файл с описанием «живых обоев». Имя этого файла должно быть указано в AndroidManifest (ищите в примере ниже слово foobarwallpaper )
Не потеряйте в описании Service-а permission , meta-data и intent-filter :
Как добавить
«Живые обои» прячутся, поэтом подсказка. Описываю, как это выглядит на моем Samsung.
Для начала long press где-нибудь на Home screen, телефон перейдет в режим настройки рабочих столов, появится иконка Wallpapers.
Нажимаем на иконку Wallpapers, несколько разделов, нам нужен My wallpapers, жмем надпись View all в правом верхнем углу раздела, открывается список во весь экран.
Жмем «три точки» вызова меню, в нем пункт LIve wallpapers (у меня он единственный), появляется список доступных «живых обоев».
Выбираем наши обои, и выбираем «Home and lock screen».
Появится «превью», которое уже отрисовывается нашим приложением (чтобы распознать этот момент, есть метод isPreview()), жмем Set as wallpaper… И ничего не видим, потому что возвращаемся в список доступных обоев.
Жмем «Home» и наслаждаемся.
Причем тут Android Watch?!
Интересное наблюдение по ходу, что Faces в Android Watch сделаны по точно такой же схеме (с точностью, что у них свои базовые классы со своей реализацией): такие же Service + Engine, почти те же метаданные и intent filter для Service в манифесте (в которых слово wallpaper встречается четыре раза:), также надо писать свой шедулер на основе Handler-а.
В базовых классах Watch Faces есть готовый onDraw() , куда передается Canvas, и есть invalidate() для его вызова. Но это не принципиальное различие, а реализованная часть бойлерплейта.
В отличие от Live Wallpaper, для Watch Faces есть примеры, в них можно покопаться (ссылки здесь, в самом начале).
Что получилось
Скриншотики для приложения, которое красит экран в зеленый цвет, имеют мало смысла. Но пара фоток, что на базе этого получилось сделать для боевого стенда, под спойлером.
Стикеры — это оставшаяся система обнаружения проблем предыдущего поколения.
Благодарности
Если бы не эти две статьи, я бы блуждал в потьмах намного дольше. Не представляю себе, как их можно было написать аж в 2010 году при таком качестве документации?!
Источник
Обои для Android 4.4.4
- Ветряные Мельницы живые обои
- Разработчик: live wallpaper HongKong
- ОбоиЖивые обои
- Burning Live Wallpaper
- Разработчик: Wave Keyboard Design Studio
- ОбоиЖивые обои
- Динозавр живые обои
- Разработчик: live wallpaper HongKong
- ОбоиЖивые обои
- Тропический Пляж Живые Обои
- Разработчик: Creative Factory Wallpapers
- ОбоиЖивые обои
- Листопад живые обои
- Разработчик: Best live wallpapers for Android
- ОбоиЖивые обои
- Павлины живые обои
- Разработчик: Free 2019 Themes & Livewallpapers: другие приложения
- ОбоиЖивые обои
- HD Живые Обои
- Разработчик: BlackBird Wallpapers
- ОбоиЖивые обои
- Ночной Дубай Живые Обои
- Разработчик: BlackBird Wallpapers
- ОбоиЖивые обои
Подробное описание Android 4.4.4
Версия ОС Андроид 4.4.4 включает в себя исправления и доработки, которые связаны с безопасностью системы. В данной версии были внесены изменения на рабочем столе. Если на нем не остается никаких приложений, то он автоматически удаляется. Но зато таких рабочих столов теперь можно добавить сколько угодно.
Шрифт в новой версии стал белым и более вытянутым, что выглядит намного красивее. Задержав палец на рабочем столе, появится экран, на котором можно выбрать и перенести на рабочий стол виджеты, а также сменить обои. Также, если играет музыка, то на заблокированном экране будет отображаться альбом композиции.
- исправлена ошибка безопасности, связанная с OpenSSL.
Источник
Стандартные обои из всех версий Android
В каждом крупном обновлении операционной системы Android компания Google добавляет новый набор стандартных фонов для рабочего стола. Мы решили собрать все обои Андроид в одной статье. Примечание: под катом вас ждет много изображений высокого разрешения (много трафика). Все картинки в этой статье кликабельны.
Содержание
Обои Android 1.5 Cupcake
Как вы могли узнать в нашей статье об истории Android, обновление 1.5 Cupcake было довольно крупным и значимым для развития мобильной платформы Google. Поэтому данная версия системы получила довольно много красивых стандартных фонов для рабочего стола.
Обои Android 1.6 / 2.0 / 2.2 (Donut, Eclair, Froyo)
Три последующих крупных обновления под версиями Android 1.6 Donut, 2.0 Eclair и 2.2 Froyo имели похожий набор фонов для рабочего стола. С каждым обновлением этот набор дополнялся несколькими обоями. Например, после выпуска Nexus One появился тот самый фон с начертанием буквы “X”.
В этот раз тоже преобладали тема природы, но уже добавились какие-то абстрактные градиенты и обои в стиле бренда Nexus. Скачать полный архив с обоями Android 1.6 / 2.0 / 2.2 (Donut, Eclair, Froyo) в высоком качестве.
Обои Android 2.3 Gingerbread
В операционной системе Android 2.3 Gingerbread большая работа была проведена над интерфейсом и его общим внешним видом, поэтому Google также подобрала красивые фоны под новые иконки и меню.
Природа и абстракт остаются главной темой обоев в этой версии Андроид. Скачать полный архив с обоями Android 2.3 Gingerbread в высоком качестве.
Обои Android 3.0 Honeycomb
Android 3.0 Honeycomb стала чуть ли не самой провальной версией системы. Она разрабатывалась исключительно для планшетов, чтобы составить конкуренцию доминирующему в те времена iPad. Google решила разделить смартфоны и планшеты на две отдельные версии Android, но потом компания откажется от этого решения. Несмотря на все это, Android 3.0 Honeycomb принесла красивый интерфейс с такими же стильными обоями в синей цветовой схеме.
Обои Android 4.0 Ice Cream Sandwich
После провального третьего Андроида компания Google выпускает Android 4.0 Ice Cream Sandwich — одну из самых успешных версий системы. Синяя цветовая схема интерфейса перекочевала из Android 3.0, но стандартные обои были уже совсем другими.
Как и сама система, обои для рабочего стола были красивыми и стильными. Скачать полный архив с обоями Android 4.0 Ice Cream Sandwich в высоком качестве.
Обои Android 4.1 Jelly Bean
Версия Android 4.1 Jelly Bean стала очень правильным и полезным обновлением, в котором много чего добавили и изменили. Интерфейс практически остался тем же, но Google сильно улучшила систему в плане возможностей.
Примечательно, что это не самое большое обновление обзавелось совершенно новым и свежим набором обоев. Одна из этих картинок запомнилась многим как фон рабочего стола Скачать полный архив с обоями Android 4.1 Jelly Bean в высоком качестве.
Обои Android 4.4 KitKat
В минорных обновлениях Android 4.2 и 4.3 Jelly Bean были те же самые обои, что и в 4.1. Крупный апдейт Android 4.4 KitKat уже принес новый стиль интерфейса и свежие картинки для рабочего стола. Google продолжила развивать абстрактный стиль с яркими цветами, но не забыла про природные пейзажи.
Обои Android 5.0 Lollipop
Android 5.0 Lollipop — первая версия системы, перешедшая на новый «материальный» дизайн. Его основы — это чистота, простота и минимализм. Насколько интерфейс «леденца» был красивым, настолько и его обои были стильными.
Впервые в Android 5.0 компания Google использовала снимки ландшафта земли для фонов рабочего стола. Скачать полный архив с обоями Android 5.0 Lollipop в высоком качестве.
Обои Android 6.0 Marshmallow
Обновление Android 6.0 Marshmallow было большим по объему новых функций и работы, проведенной «под капотом» системы, но внешний ее стиль не поменялся. В плане фонов рабочего стола Google просто развила мотивы «леденца», добавив несколько новых обоев с фотографиями ландшафта земли.
Обои Android 7.0 Nougat
Актуальная на момент написания этой статьи Android 7.0 Nougat приносит много нового в экосистему Android, но пока не меняет свой внешний вид, хотя апдейт 7.1 может все изменить.
Стиль фонов не сильно изменился, но появилась тепло-розовая цветовая схема (на картинках). Скачать полный архив с обоями Android 7.0 Nougat в высоком качестве.
Обои Nexus 2016
Известно, что 4 октября 2016 года компания Google представит новое поколение смартфонов Nexus, которое могут носить новый бренд — Pixel. Стандартные обоих с этих аппаратов уже «слили» в сеть.
Скорее всего, это стандартные обои грядущего обновления Android 7.1 Nougat. Скачать полный архив с обоями Nexus 2016 в высоком качестве.
Источник