Главная » Разработка для Android » Создание Живых  обоев

0

Живые обои — это новый способ, с помощью которого компонент  при- ложения можно добавить на домашний экран. Впервые он был представлен в Android версии 2.1 (API level 7). Живые обои позволяют создавать динами- ческие, интерактивные подложки для домашнего экрана, предлагая новый путь для отображения на нем пользовательской информации.

Живые обои используют объект Surface, чтобы рисовать  динамические изображения и отслеживать нажатия на экране. Это дает возможность поль- зователям  взаимодействовать с домашним экраном.

Чтобы создать новые Живые обои, понадобятся три компонента:

ресурс в формате XML, содержащий  описание Живых обоев;

реализация класса WallpaperService;

реализация класса Engine (который принадлежит WallpaperService).

Создание ресурса для описания Живых обоев

Ресурс для описания Живых обоев представляет собой файл в формате XML, хранящийся в каталоге res/xml. Используйте атрибуты  тега <wallpaper>, чтобы определить имя автора, описание и миниатюру для предпросмотра в гале- рее Живых обоев. Вы также можете задействовать тег settingsActivityдля указания Активности, которая должна загрузиться при вызове настроек этих обоев.

В листинге 10.25 показан пример ресурса для описания  Живых обоев.

Листинг 10.25. Ресурс для описания  Живых  обоев

<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" android:author="@string/author" android:description="@string/description" android:thumbnail="@drawable/wallpapericon"

/>

Обратите  внимание, что нужно ссылаться  на уже существующие  стро- ковые ресурсы в атрибутах author и description. Строковые константы не подходят.

Создание Сервиса для Живых обоев

Наследуйте класс WallpaperService — Сервис, который содержит экзем- пляр класса Engine.

Все операции по отрисовке Живых обоев и взаимодействию с ними содер- жатся в классе WallpaperService.Editor, который мы рассмотрим ниже в этой главе. Переопределите обработчик onCreateEngine, чтобы возвращать новый экземпляр WallpaperService.Editor, как показывается в листинге 10.26.

Листинг 10.26. Сервис для Живых  обоев

public class MyWallpaperService extends WallpaperService {

@Override

public Engine onCreateEngine() {

return new MyWallpaperServiceEngine();

}

}

Как только вы создали  этот Сервис, добавьте его в манифест  вашего приложения с помощью тега <service>. Живые обои должны  включать Фильтр намерений,  чтобы отслеживать действие  android.service.wallpaper. WallpaperService, а также узел <meta-data>, в котором в качестве атрибута name указывается значение  android.service.wallpaper, благодаря  чему обе- спечивается привязка к ресурсу, описанному в предыдущем разделе.

Ваш Сервис также должен иметь полномочие android.permission.BIND_ WALLPAPER, которое определяется в атрибуте  android.permission. В листинге 10.27 показывается, как добавить Живые обои из листинга 10.26 в манифест приложения.

Листинг 10.27. Добавление WallpaperService в манифест

<service android:name=".MyWallpaperService"

android.permission="android.permission.BIND_WALLPAPER">

<intent-filter>

<action android:name="android.service.wallpaper.WallpaperService" />

</intent-filter>

<meta-data android:name="android.service.wallpaper" android:resource="@xml/wallpaper"

/>

</service>

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии