Сегодня я хочу вам рассказать как сделать красоту и не набраться гемороя. Обычно живые обои делают какая то фоновая картинка, какой-то живой движущийся объект и летают или появляются кружки или линии. Это все можно сделать стандартным канвасом, а вот как сделать что бы вместо тупых летающих квадратов на экране бегала анимация с nyan котом или например анимация с горящим костром? А просто, нужно всего лишь заюзать тот же канвас, только немного не стандартно.
Как создавать живые обои я рассказывал вам раньше еще в далеком феврале 2012 года. Вот эта статья Создаем живые обои для Android. Но это было давно, да и там рассматривается немного иная ситуация, кому интересно переходите смотрите, правда там почему то картинки убились… Не знаю как восстановить, в исходниках все есть в принципе :)
И так начнем, мы сделаем простые живые обои в которых у нас будет бегать по экрану nyan котэ и все, их можно будет установить как фоновую картинку и как бы все. Никаких настроек и так далее не будет ибо нет смысла, это я рассматривал в предыдущей статье про живые обои.
Вот такая красота будет бегать по экрану после того как мы закончим
Создайте пустой проект без активностей и леяутов. Будем делать все с нуля, нам нужно написать класс наследник WallpaperService который будет нашим проводником в работе с живыми обоями.
Засуньте картинку в папку res/raw/, в дальнейшем мы будем ее брать оттуда.
Создайте файл \ класс VideoLiveWallpaperService, ну или назовите как то по своему, не важно. И впишите следующий код который будет собственно отображать сами обои, растягивать и проигрывать анимацию в них же.
VideoLiveWallpaperService.java
Прокомментировал как мог, надеюсь будет понятно.
По сути мы просто рисуем картинку на Surface при помощи Canvas, проигрываем ее с помощью класса Movie который как раз предназначен именно для таких целей, растягиваем ее и задаем частоту проигрыша. Это если в кратце.
Но это еще не все, теперь нам нужно этот класс инициализировать в минифесте, для этого переходим в AndroidManifest и смотрим, сейчас у нас там нет ничего если вы не создавали активности, сейчас там пусто. Для того что бы наши обои отображались как обои, в манифейсте пишем следующее:
AndroidManifest.xml
Очень важный момент, что бы обои были как обои и отображались как надо нам обязательно нужно прописать премишен.
Без него не будет никакого счастья, а только непонятки, почему и зачем вообще мы это делаем и че оно не работает.
Ну а так по сути стандартно, объявили сервис и теперь оно будет работать в фоне постоянно пока мы это позволяем ему делать.
Да, хочу еще обратить внимание на эту строку:
Она у вас должна подкрашиваться красным, это файл который обязателен для живых обоев, но так как у нас там по сути ничего нет и мы рисуем программно на экране, этот файл у нас просто содержит ничего.
Создайте папку res/xml/ и в ней файл nyan.xml. И впишите в него следующую разметку:
nyan.xml
И все. Теперь можете запускать обои, заходите в меню с обоями и у вас там должны появиться ваши обои, как вы их назвали у себя в проекте.
Google Play
Исходники
Как создавать живые обои я рассказывал вам раньше еще в далеком феврале 2012 года. Вот эта статья Создаем живые обои для Android. Но это было давно, да и там рассматривается немного иная ситуация, кому интересно переходите смотрите, правда там почему то картинки убились… Не знаю как восстановить, в исходниках все есть в принципе :)
И так начнем, мы сделаем простые живые обои в которых у нас будет бегать по экрану nyan котэ и все, их можно будет установить как фоновую картинку и как бы все. Никаких настроек и так далее не будет ибо нет смысла, это я рассматривал в предыдущей статье про живые обои.
Вот такая красота будет бегать по экрану после того как мы закончим
Создайте пустой проект без активностей и леяутов. Будем делать все с нуля, нам нужно написать класс наследник WallpaperService который будет нашим проводником в работе с живыми обоями.
Засуньте картинку в папку res/raw/, в дальнейшем мы будем ее брать оттуда.
Создайте файл \ класс VideoLiveWallpaperService, ну или назовите как то по своему, не важно. И впишите следующий код который будет собственно отображать сами обои, растягивать и проигрывать анимацию в них же.
VideoLiveWallpaperService.java
Прокомментировал как мог, надеюсь будет понятно.
По сути мы просто рисуем картинку на Surface при помощи Canvas, проигрываем ее с помощью класса Movie который как раз предназначен именно для таких целей, растягиваем ее и задаем частоту проигрыша. Это если в кратце.
Но это еще не все, теперь нам нужно этот класс инициализировать в минифесте, для этого переходим в AndroidManifest и смотрим, сейчас у нас там нет ничего если вы не создавали активности, сейчас там пусто. Для того что бы наши обои отображались как обои, в манифейсте пишем следующее:
AndroidManifest.xml
Очень важный момент, что бы обои были как обои и отображались как надо нам обязательно нужно прописать премишен.
Без него не будет никакого счастья, а только непонятки, почему и зачем вообще мы это делаем и че оно не работает.
Ну а так по сути стандартно, объявили сервис и теперь оно будет работать в фоне постоянно пока мы это позволяем ему делать.
Да, хочу еще обратить внимание на эту строку:
Она у вас должна подкрашиваться красным, это файл который обязателен для живых обоев, но так как у нас там по сути ничего нет и мы рисуем программно на экране, этот файл у нас просто содержит ничего.
Создайте папку res/xml/ и в ней файл nyan.xml. И впишите в него следующую разметку:
nyan.xml
И все. Теперь можете запускать обои, заходите в меню с обоями и у вас там должны появиться ваши обои, как вы их назвали у себя в проекте.
Google Play
Комментариев нет:
Отправить комментарий