Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK

Vytvorte živú tapetu na Android pomocou animovaného GIFu

by
Difficulty:IntermediateLength:LongLanguages:

Slovak (Slovenčina) translation by Zoli Rosa (you can also view the original English article)

Už ste niekedy videli krásny animovaný GIF, ktorého slučka bola bezchybná a hovorili ste si, či by ste ho mohli používať ako živú tapetu na vašom zariadení Android? Áno, môžete a v tomto návode vám ukážem ako na to.

Úvod

Vytváranie zaujímavé a krásne živé tapety od nuly iba pomocou matematiky a kódu pre generovanie grafiky môže byť zdĺhavé a časovo náročné. Tiež je potrebné veľa kreativity. Na druhú stranu, vytvorenie animovaného GIFu alebo hľadanie jedného online je oveľa jednoduchšie. V tomto návode sa naučíte ako konvertovať akýkoľvek animovaný GIF do živej tapety.

predpoklady

Uistite sa, že máte najnovšiu verziu Android Studia. Môžete ju stiahnuť na webovej stránke Android Developer.

Hoci akýkoľvek animovaný GIF stačí, odporučil by som vám stiahnuť dobrý cinemagraph. Cinemagraph nie je nič iné ako animovaný GIF - obvykle vytvorené z videa - ktoré je čisté slučke. Mnoho dobrých môžete nájsť na Flickri.

Pre tento návod, používam cinemagraph vytvorený užívateľom Flicker djandyw.com, pretože je dostupný pod licenciou Creative Commons.

1. Vytvorte nový projekt

Spustite Android Studio, vytvorte nový projekt a pomenujte projekt GIFWallpaper. Vytvorte unikátne meno balíka ak plánujete publikovať túto aplikáciu na Google Play.

Nastavte minimálny SDK na API 8: Android 2.2 (Froyo).

Naša aplikácia nebude mit Activity, takže vyberte Add No Activity a kliknite na Finish.

2. Popíšte wallpaper

Živý wallpaper potrebuje súbor, ktorý ho popíše. Vytvorte nový XML súbor pomenovaný res / xml / wallpaper.xml a nahraďte nasledujúce XML:

Label a thumbnail sú obzvlášť dôležité, pretože budú použité, keď sa wallpaper ukáže v zozname wallpaperov k dispozícii na vašom zariadení.

3. Upravte manifest

Pre prevádzku ako živá tapeta, naše aplikácie potrebuje len jedno povolenie android.permission.BIND_WALLPAPER.

Živá tapeta beží ako Service ktorá môže príjmať android.service.wallpaper.WallpaperService akciu. Pomenujte Service GIFWallpaperService a pridajte ju do projektového manifestu, AndroidManifest.xml.

Ďalšie, zaistite, že aplikáciu je možné nainštalovať len na zariadeniach, ktoré podporujú živé tapety, pridajte nasledujúci snippet do manifestu:

4. Pridajte animovaný GIF

Skopírujte animovaný GIF, ktorý ste stiahli z Flickri do projektového adresára assets. Ja som pomenoval GIF girl.gif.

5. Vytvorte službu

Vytvorte novú Java triedu a pomenujte ju GIFWallpaperService.java. Táto trieda by mala rozšíriť WallpaperService triedu.

Pretože WallpaperService je abstraktná trieda, musíte prepísať jejic onCreateEngine metódu a vrátiť inštanciu vášho vlastného Engine, ktorý bude vykresľovať snímky vášho GIFu.

Aby ste mohli použiť animovaný GIF, musíte ho najprv konvertovať do Movie objektu. Môžete použiť metódu decodeStream triedy Movie. Akonáhle je objekt Movie vytvorený, odovzdá ju ako parameter konstruktoru vášho Engine.

Takto by mala metóda onCreateEngine vyzerať.

6. Vytvorte Engine

Teraz začneme pracovať na Engine. Vytvorte triedu pomenovanú GIFWallpaperEngine vo triede GIFWallpaperService aby rozširovala WallpaperService.Engine.

Do tejto novej triedy pridajte nasledujúce:

  • frameDuration: tento integer reprezentuje oneskorenie medzi překreslovacími operáciami. Hodnota 20 vám dá 50 snímok za sekundu.
  • visible: táto bool hodnota dá vášmu enginu vedieť, či je živá tapeta vidieť na obrazovke. To je dôležité, pretože by sme nemali vykresľovať tapetu pokiaľ nie je viditeľná.
  • movie: Jedná sa o animovaný GIF vo forme Movie objektu.
  • holder: Toto odkazuje na SurfaceHolder objekt, k dispozícii enginu. Musí byť inicializovaný prepísaním metódy OnCreate.
  • handler: Toto je objekt Handler, ktorý bude použitý pre spustenie Runnable, ktorý je zodpovedný pre vykresľovanie tapety.

Vaša trieda by teraz mala vyzerať takto:

Ďalej, vytvoríme metódu pomenovanú draw ktorá vykresľuje obsah animovaného GIFu. Rozoberieme si túto metód:

  • Najskôr skontrolujeme či premenná visible je nastavená na true. Budeme pokračovať iba ak to tak je.
  • Použijeme SurfaceHolder metódu lockCanvas aby sme získali Canvas na ktoré budeme kresliť.
  • Nakreslite rámček animovaného GIFu na Canvas po zmene veľkosti a umiestnenia.
  • Akonáhle je kreslenie hotové, odovzdajte Canvas späť na SurfaceHolder.
  • Obnovte aktuálny snímok animovaného GIFu pomocou metódy setTime objektu Movie.
  • Zavolajte znovu metódu použitím handler po čakaní na frameDuration v milisekundách.

Draw metóda nie je nikdy volaná priamo. Vždy je volanie pomocou Handler a Runnable objektu. Preto vytvoríme Runnable objekt pole triedy a zavoláme drawGIF.

Pridať nasledujúci kód do triedy GIFWallpaperService:

onVisibiltyChanged metóda je automaticky volaná, keď sa zmení viditeľnosť tapety. Musíme ju prepísať a na základe hodnoty argumentu visible, buď spustiť alebo vypnúť drawGIF. Metóda removeCallbacks z Handler je použitá pre stopnutie akéhokoľvek bežiaceho drawGIF.

Napokon, prepíšte onDestroy metódu z Engine pre stopnutie akéhokoľvek trvajcího drawGIF ak je tapeta deaktivovaná.

7. Kompilácia a inštalácia

Vaše tapeta je teraz pripravená. Skompilujte ju a nainštalujte na vaše Android zariadenia. Akonáhle je nainštalovaná, mali by ste ju nájsť v zozname dostupných tapiet.

Väčšina launcher vám dá možnosť zmeniť tapetu po geste dlhého stlačení. Inak môžete ísť do nastavenia displeja a zmeniť nastavenia.

Ak je GIF moc malý alebo v zlej pozícii, môžete ísť späť do metódy draw a upraviť veľkosť a pozíciu.

Zhrnutie

Teraz viete ako použiť animovaný GIF na vytvorenie živého wallpaperu. Nebojte sa experimentovať s ďalšími GIFy. Ak plánujete publikovať vašu živú tapetu na Google Play, uistite sa, že máte povolenie od autora animovaného GIFu, pre komerčné použitie. Navštívte Android Developer website aby ste zistili viac o triede WallpaperService.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.