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

Kreirajte Live Wallpaper za Android Koristeći Animirani GIF

by
Difficulty:IntermediateLength:LongLanguages:

Croatian (Hrvatski) translation by Maja Petek (you can also view the original English article)

Jeste li ikada vidjeli prekrasan animirani GIF koji se iznova ponavlja i zapitali biste li ga mogli upotrijebiti kao live wallpaper na vašem Android uređaju? Pa, možete, i u ovom tutorialu ću vam pokazati kako.

Uvod

Kreiranje zanimljivog prekrasnog live wallpapera iz temelja, koristeći samo matematiku i kod da generirate grafiku, može biti mukotrpan i dugotrajan posao. Za to je također potrebno mnogo kreativnosti. S druge strane, izrada animiranog GIF-a ili pronalazak istog, je mnogo lakša. U ovom tutorialu ćete naučiti kako konvertirati bilo koji animirani GIF u live wallpaper.

Preduvjeti

Pobrinite se da imate podešenu posljednju Android Studio verziju. Možete je preuzeti na Android Developer web stranici.

Iako će odgovarati bilo koji animirani GIF, predlažem vam da preuzmete dobar cinemagraph. Cinemagraph je ustvari isto što i animirani GIF - obično izrađen od videa - koji se neprestano ponavlja. Mnogo dobrih primjera možete pronaći na Flickr stranici.

Za ovaj tutorial koristim cinemagraph koji je kreirao Flickr korisnik djandyw.com i dostupan je pod Creative Commons licencom.

1. Kreirajte Novi Projekt

Pokrenite Android Studio, kreirajte novi projekt, i nazovite  projekt GIFWallpaper. Odaberite unikatno ime paketa ako planirate objaviti ovu aplikaciju na Google Play.

Podesite minimum SDK na API 8: Android 2.2 (Froyo).

Naša aplikacija neće imati Activity, stoga odaberite Add No Activity i kliknite Finish.

2. Opišite Wallpaper

Live wallpaper treba datoteku koja ga opisuje. Kreirajte novu XML datoteku nazvanu res/xml/wallpaper.xml i zamijenite joj sadržaj sa sljedećim XML:

Oznaka i thumbnail sličica su izuzetno važne jer će biti korištene kada se wallpaper pojavi na popisu wallpapera dostupnih na vašem uređaju.

3. Uredite Manifest

Kako biste je pokrenuli kako live wallpaper, naša aplikacija treba samo jedno dopuštenje, android.permission.BIND_WALLPAPER.

Live wallpaper se pokreće kao Service koji može prihvatiti android.service.wallpaper.WallpaperService namijenjenu akciju. Service nazovite GIFWallpaperService i dodajte manifestu projekta, AndroidManifest.xml.

Zatim, kako biste bili sigurni da se aplikacija može instalirati samo na uređajima koji mogu pokrenuti live wallpapere, dodajte manifestu sljedeći isječak:

4. Dodajte Animirani GIF

Kopirajte animirani GIF koji ste preuzeli s Flickr stranice u assets mapu projekta. Ja sam GIF nazvao girl.gif.

5. Kreirajte Uslugu

Izradite novu Java klasu i nazovite je GIFWallpaperService.java. Ova klasa bi trebala produžiti WallpaperService klasu.

Pošto je WallpaperService apstraktna klasa, morate prebrisati njezinu onCreateEngine metodu i vratiti instancu za vlastiti Engine, koji može renderirati okvire GIF-a.

Kako biste upotrijebili animirani GIF, prvo ga morate konvertirati u Movie objekt. Možete upotrijebiti decodeStream metodu Movie klase kako biste to učinili. Kada je Movie objekt kreiran, proslijedite ga kao parametar konstruktoru prilagođenog Engine.

Ovako bi onCreateEngine metoda trebala izgledati:

6. Kreirajte Podršku

Počnimo sada raditi na Engine. Kreirajte klasu nazvanu GIFWallpaperEngine unutar GIFWallpaperService klase i učinite je produženom WallpaperService.Engine.

Ovoj novoj klasi dodajte sljedeća polja:

  • frameDuration: Ovaj integer predstavlja odgodu između re-draw operacija. Vrijednost od 20 daje 50 frameova u sekundi.
  • visible: Ovaj boolean omogućuje da engine prepoznaje je li live wallpaper trenutno vidljiv na zaslonu. Ovo je važno, jer ne bismo trebali crtati wallpaper kada nije vidljiv.
  • movie: ovo je animirani GIF u obliku Movie objekta.
  • holder: Ovo se odnosi na SurfaceHolder objekt dostupan engine-u. Mora biti inicijaliziran prelazeći preko onCreate metode.
  • handler: Ovo je Handler objekt koji će se koristiti da pokrene Runnable koji je odgovoran zapravo za samo crtanje wallpapera.

Vaša bi klasa sada trebala izgledati ovako:

Zatim, izradite metodu nazvanu draw koja crta sadržaj animiranog GIF-a. Sažmimo ovu metodu:

  • Prvo provjeravamo je li visible varijabla podešena na true. Nastavljamo samo ako jest.
  • Upotrijebite SurfaceHolder-ovu lockCanvas metodu da dobijete Canvas za crtanje.
  • Nacrtajte okvir animiranog GIF-a na Canvas nakon što ga skalirate i pozicionirate.
  • Kada je svo crtanje završeno, proslijedite Canvas nazad SurfaceHolder-u.
  • Ažurirajte trenutni okvir animiranog GIF-a koristeći setTime metodu Movie objekta.
  • Ponovno pozovite metodu koristeći handler nakon što pričekate frameDurations u milisekundama.

Draw metoda nikada nije izravno pozvana. Uvijek se poziva koristeći Handler i Runnable objekt. Stoga, napravimo Runnable objekt kao polje klase i nazovimo ga drawGIF.

GIFWallpaperService klasi dodajte sljedeći kod:

onVisibilityChanged metoda se automatski poziva kad god se vidljivost wallpapera mijenja. Moramo prijeći preko njega (override) i, ovisno o vrijednosti visible argumenta, ili pokrenuti ili zaustaviti drawGIF. removeCallbacks metoda Handler-a se koristi da zaustavi koji god drawGIF je pokrenut.

Na kraju, prijeđite preko onDestroy metode Engine-a da zaustavite sve drawGIF-ove koji su pokrenuti ako je wallpaper deaktiviran.

7. Kompajlirajte i Instalirajte

Vaš live wallpaper je sada spreman. Kompajlirajte ga i instalirajte na svoj Android uređaj. Nakon instalacije biste trebali moći pronaći wallpaper na popisu dostupnih wallpapera.

Većina launchera vam nudi opciju da promijenite wallpaper nakon dugotrajnijeg dodira. Ili možete ići na postavke zaslona da promijenite wallpaper.

Ako GIF izgleda premaleno ili nije pravilno pozicioniran, idite nazad na draw metodu i prilagodite omjer i poziciju.

Zaključak

Sada znate kako upotrijebiti animirani GIF da kreirate live wallpaper. Možete slobodno eksperimentirati sa više GIF-ova. Ako planirate objaviti svoj live wallpaper na Google Play, pobrinite se da imate dozvolu autora da koristite GIF komercijalno.  Posjetite Android Developer web stranicu da naučite više o WallpaperService klasi.


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.