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

0

В классе WallpaperService.Engine определяются непосредственно сами

Живые обои.

Этот класс инкапсулирует работу с объектом Surface, с помощью которо- го обои выводятся на экран, и обрабатывает события нажатия. Surface — спе- циальный холст для рисования, поддерживающий обновления из фоновых потоков, что делает его идеальным  средством для создания плавной, дина- мической и интерактивной анимации. Объект Surface и обработка нажатий более подробно описаны в главе 15.

Чтобы  реализовать собственный  движок  для Сервиса Живых  обоев, наследуйте  класс WallpaperService.Engine. Прежде  чем начать рисовать с помощью объекта Surface, нужно дождаться  его полной инициализации, используя обработчик onSurfaceCreated.

Класс Engine включает в себя обработчик  onTouchEvent и обработчик onOffsetsChanged: первый обеспечивает  взаимодействие с пользователем, второй срабатывает  в момент, когда сдвигается  родительская Активность (как правило, это домашний экран).

В листинге  10.28 показан  каркас  для реализации наследника  класса WallpaperService.Engine. Откройте главу 15, чтобы получить более деталь- ную информацию, как рисовать  с помощью объекта Surface, а также как использовать обработчик onTouchEvent и события движения.

Листинг 10.28. Каркас движка для Сервиса Живых  обоев

public class MyWallpaperServiceEngine extends WallpaperService.Engine {

@Override

public void onCreate(SurfaceHolder surfaceHolder) {

super.onCreate(surfaceHolder);

// TODO Обрабатывать инициализацию.

}

@Override

public void onOffsetsChanged(float xOffset, float yOffset,

float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {

super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);

// TODO Обрабатывать события сдвига домашнего экрана.

}

@Override

public void onTouchEvent(MotionEvent event) {

super.onTouchEvent(event);

// TODO Обрабатывать события нажатия и движения.

}

@Override

public void onSurfaceCreated(SurfaceHolder holder) {

super.onSurfaceCreated(holder);

// TODO Объект Surface был создан, теперь нужно запустить поток,

// в котором будут рисоваться обои.

}

}

Резюме

В этой главе вы научились  создавать  виджеты  и Живые каталоги для своего приложения.

В частности, вы узнали:

как реализовывать виджеты и добавлять их в свои приложения;

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

обновлять пользовательский интерфейс своего виджета  с помощью объекта RemoteViews;

добавлять элементы интерактивности в виджет;

создавать и регистрировать Живые каталоги для Источника данных при- ложения;

добавлять проекцию для своего Источника данных, делая его совмести- мым с Живым каталогом;

создавать и использовать Живые обои;

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

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

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

По теме:

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