Tagalog (Wikang Tagalog) translation by Anna Nelson (you can also view the original English article)
Nakakakita ka na ba ng magandang animated
na GIF na maayos ang pagikot at nagtataka ka kung pwede mong gamitin bilang
isang live na wallpaper sa iyong Android
na kagamitan? Buweno, pwede, at dito sa tutoryal na ito
ipapakita ko sa iyo kung paano.
Panimula
Paggawa ng kawili-wili at magandang live na wallpaper mula sa wala gamit lamang ang matematika at kowd para makabuo ng mga grapika ay matrabaho at nakakaubos ng oras. Nangangailangan din ng pagkamalikhain. Sa isang banda, ang paggawa ng animated na GIF o paggahanap ng isa online ay mas madali. Sa tutoryal na ito, matututunan mo kung paano gawin ang isang animated na GIF na live na wallpaper.
Mga kailangan
Siguraduhin na mayroon ka noong pinakahuling bersyon ng Android Studio at ito ay nakaset up. Makukuha mo sa Android Developer website.
Kahit na pwede ang kahit anong animated na GIF, ang suhestyon ko ay mag-download ka ng magandang sinemagrapiko. Ang sinemagrapiko ay isang animated na GIF—na madalas ginagawa mula sa isang bidyo—na maayos ang pagikot. Marami kang makikita na magaganda sa Flickr.
Para sa tutoryal na ito, gumagamit ako ng
isang sinemagrapiko na ginawa ng isang gumagamit ng Flickr djandyw.com na makukuha sa
ilalim ng isang Creative Commons na lisensiya.
1. Gumawa ng Bagong Proyekto
Simulan ang Android Studio, gumawa ng bagong proyekto, at pangalanan ang proyekto na GIFWallpaper. Pumili ng isang kakaibang pangalan para sa pakete kapag gusto mong ilathala ang app na ito sa Google Play.

Italaga ang pinakamababang SDK sa API 8: Android 2.2 (Froyo).

Ang aming app ay hindi magkakaroon ng Aktibidad
, kaya piliin ang Magdagdag ng Walang Aktibidad at i-klik ang Tapos
Na.

2. Ilarawan ang Wallpaper
Ang isang live na wallpaper ay
nangangailangan ng payl na naglalarawan dito. Gumawa ng bagong XML na payl na
nakapangalang res/xml/wallpaper.xml at palitan ang mga nilalaman nito ng mga
sumusunod na XML:
<?xml version="1.0" encoding="UTF-8"?> <wallpaper xmlns:android="http://schemas.android.com/apk/res/android" android:label="GIF Wallpaper" android:thumbnail="@drawable/ic_launcher"> </wallpaper>
Ang etiketa at thumbnail ay partikular na
importante sapagkat sila ay gagamitin kapag ang wallpaper ay lumabas sa
listahan na mga wallpaper na pwedeng gamitin sa iyong kagamitan.
3. Baguhin ang Manipesto
Para gumana bilang isang live na wallpaper,
ang aming app ay nangangailangan lamang ng isang permiso, android.permission.BIND_WALLPAPER.
Ang isang live na wallpaper ay gumagana
bilang isang Serbisyo
na pwedeng tumanggap ng android.service.wallpaper.WallpaperService
layuning aksyon. Pangalanan ang Serbisyong
GIFWallpaperService at idagdag sa manipesto ng proyekto, AndroidManifest.xml.
<service android:name=".GIFWallpaperService" android:enabled="true" android:label="GIF Wallpaper" 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" > </meta-data> </service>
Susunod, para masiguro na ang app ay pwedeng mainstala lamang sa mga kagamitan na maaaring magpagana ng mga live na wallpaper, idagdag ang mga sumusunod na snippet sa manipesto:
<uses-feature android:name="android.software.live_wallpaper" android:required="true" > </uses-feature>
4. Magdagdag ng Animated na GIF
Kopyahin ang animated na GIF na na-download mo mula sa Flickr sa polder ng mga katangian ng proyekto. Pinangalanan ko ang GIF na girl.gif.
5. Gumawa ng Serbisyo
Gumawa ng bagong Java na klase at
pangalanan itong GIFWallpaperService.java. Ang klase na ito ay dapat palawigin niya
ang WallpaperService
na klase.
public class GIFWallpaperService extends WallpaperService { }
Dahil ang WallpaperService
ay isang
abstraktong klase, dapat mong i-override ang kanyang onCreateEngine
na
pamamaraan at magbalik ng ehemplo ng sarili mong Engine
, na kayang maghain ng
mga balangkas ng GIF.
Para gamitin ang animated na GIF,
kailangang gawin mo muna itong Movie
na bagay. Pwede mong gamitin ang klase ng Pelikula
na
decodeStream
na pamamaraan para gawin ito. Kapag tapos ng nagawa ang Pelikula
na
bagay, ipasa ito bilang isang parametro sa gumagawa ng custom Engine
.
Ganito dapat ang hitsura ng onCreateEngine
na pamamaraan:
@Override public WallpaperService.Engine onCreateEngine() { try { Movie movie = Movie.decodeStream( getResources().getAssets().open("girl.gif")); return new GIFWallpaperEngine(movie); }catch(IOException e){ Log.d("GIF", "Could not load asset"); return null; } }
6. Gumawa ng Engine
Simulan na nating magtrabaho sa Engine
ngayon. Gumawa ng klaseng named GIFWallpaperEngine
sa loob ng GIFWallpaperService
na klase at gawin sa pamamaraang papalawigin
niya ang WallpaperService.Engine
.
Idagdag ang mga sumusunod na mga paksa dito
sa bagong klase:
-
frameDuration
: Ang intedyer na ito ay kumakatawan sa abala sa pagitan ng mga re-draw na operasyon. Ang halagang 20 ay bibigyan ka ng 50 balangkas kada segundo. -
nakikita
: Ang boolean na ito ay pinapayagan ang engine na malaman kung ang live na wallpaper ay kasulukuyang nakikita sa screen. Mahalaga ito, sapagkat hindi dapat natin iguhit ang wallpaper kapag hindi ito nakikita. -
pelikula
: Ito ay isang animated na GIF sa pormangPelikula
na bagay. -
tagahawak
: Ito ay tumutukoy saSurfaceHolder
na bagay na makikita sa engine. Dapat masimulan sa pamamagitan ng pag-override ngonCreate
na pamamaraan. -
tagapamahala
: Ito ay isangTagapamahala
na bagay na gagamitin para simulan angRunnable
na responsable para sa aktuwal na pagguhit ng wallpaper.
Ang iyong klase ay dapat ganito na ang hitsura:
private class GIFWallpaperEngine extends WallpaperService.Engine { private final int frameDuration = 20; private SurfaceHolder holder; private Movie movie; private boolean visible; private Handler handler; public GIFWallpaperEngine(Movie movie) { this.movie = movie; handler = new Handler(); } @Override public void onCreate(SurfaceHolder surfaceHolder) { super.onCreate(surfaceHolder); this.holder = surfaceHolder; } }
Susunod, gumawa ng pamamaraan na ang
pangalan ay guhit
na guguhit ng mga nilalaman ng animated na GIF. Isa isahin natin ang pamamaraan na ito:
- Suriin muna natin kung ang
nakikitang
bagay na pwedeng baguhin ay nakatalaga satotoo
. Tutuloy lang tayo kapag nakatalaga na. - Gamitin ang
lockCanvas
na pamamaraan ngSurfaceHolder
para magawang gumuhit angCanvas
. - Gumuhit ng balangkas ng animated na GIF sa
Canvas
pagkatapos sukatin at iposisyon ito. - Kapag tapos na ang lahat ng pagguhit, ipasa
ang
Canvas
pabalik saSurfaceHolder
. - I-update ang kasalukuyang balangkas ng animated na GIF gamit ang
setTime
na pamamaraan ng bagay ngMovie
. - Tawagin ang pamamaraan ulit gamit ang
tagapamahala
pagkatapos hintayin angframeDuration
na mga millisecond.
Ang guhit
na pamamaraan ay hindi kailanman
tinatawag nang direkta. Lagi itong tinatawag gamit ang Tagapamahala
at isang Runnable
na bagay. Kung kaya, gawa tayo ng Runnable
na bagay
na paksa ng klase at tawagin itong drawGIF
.
Idagdag ang sumusunod na kowd sa
GIFWallpaperService
na klase:
private Runnable drawGIF = new Runnable() { public void run() { draw(); } }; private void draw() { if (visible) { Canvas canvas = holder.lockCanvas(); canvas.save(); // Adjust size and position so that // the image looks good on your screen canvas.scale(3f, 3f); movie.draw(canvas, -100, 0); canvas.restore(); holder.unlockCanvasAndPost(canvas); movie.setTime((int) (System.currentTimeMillis() % movie.duration())); handler.removeCallbacks(drawGIF); handler.postDelayed(drawGIF, frameDuration); } }
Ang onVisibilityChanged
na pamamaraan ay
awtomatikong tinatawag tuwing ang bisibilidad ng wallpaper ay nagpapalit. Kailangan nating i-override ito at, batay
sa halaga ng nakikitang
argumento, maaaring simulan o ihinto ang drawGIF
. Ang removeCallbacks
na pamamaraan ng
Tagapamahala
ay ginagamit para ihinto ang nakatenggang drawGIF
na gumagana.
@Override public void onVisibilityChanged(boolean visible) { this.visible = visible; if (visible) { handler.post(drawGIF); } else { handler.removeCallbacks(drawGIF); } }
Sa wakas, i-override ang onDestroy
na
pamamaraan ng Engine
para ihinto ang nakatenggang drawGIF
na gumagana kapag ang
wallpaper ay naka-deaktiba na.
@Override public void onDestroy() { super.onDestroy(); handler.removeCallbacks(drawGIF); }
7. Mangalap at Mag-Instala
Ang iyong live na wallpaper ay handa na. Mangalap at iinstala ito sa iyong Android na kagamitan. Kapag nainstala na, dapat makikita mo ang wallpaper sa listahan na mga wallpaper na pwedeng gamitin.
Halos lahat ng mga naglulunsad ay nagbibigay ng opsyon na palitan ang wallpaper pagkatapos na matagal na pag-tap. Bilang alternatibo, pwede kang pumunta sa display na settings para palitan ang wallpaper.

Kapag ang GIF ay sobrang liit o hindi
nakaposisyon nang maayos, bumalik sa guhit
na pamamaraan at ayusin ang iskala
at posisyon.
Konklusyon
Alam mo na ngayon kung paano gumamit ng
animated na GIF para gumawa ng live na wallpaper. Huwag mag-atubiling mag-eksperimento sa
marami pang mga GIF. Kapag plano mong ilathala ang iyong live na
wallpaper sa Google Play, siguraduhin mong mayroon kang permiso ng gumawa para
gamitin ang animated na GIF nang pangkalakal. Bisitahin ang Android Developer website para matututunan pa lalo
ang WallpaperService
na klase.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post