Posodobljeno: januar 2020.
V prvem delu uvodnega uvoda v Android Studio ste v svojem razvojnem okolju nastavili Android Studio in spoznali uporabniški vmesnik. Zdaj, v 2. delu, boste kodirali svojo prvo aplikacijo.
Animirana mobilna aplikacija je sestavljena iz ene same dejavnosti, ki predstavlja Googlov lik robota Android in gumb za animiranje lika. S klikom na gumb znak postopoma spremeni barvo iz zelene v rdečo v modro, nato pa nazaj v zeleno. Čeprav aplikacija ni posebej uporabna, boste z njenim pisanjem lažje uporabljali Android Studio. V 3. delu boste sestavili in zagnali aplikacijo z uporabo emulatorja naprave Android in tabličnega računalnika Kindle Fire.
Upoštevajte, da je bila ta serija posodobljena za Android Studio 3.2.1, trenutno stabilno izdajo od tega pisanja.
Okna za Project in urejevalnik za Android Studio
Na koncu 1. dela sem predstavil glavno okno sistema Android Studio. To okno je razdeljeno na več področij, vključno z oknom Project, kjer določite datoteke z viri aplikacije, in različnimi okni urejevalnika, kjer boste napisali kodo in določili vire za mobilne aplikacije. v Android Studio. Okno projekta in okno urejevalnika sta prikazana na sliki 1.
Jeff FriesenOkno projekta poudarja W2A, kar je ime aplikacije W2A.java
izvorna datoteka (čeprav .java
končnica datoteke ni prikazana). Ustrezno W2A je okno urejevalnika, ki ga dosežemo z dvojnim klikom W2A v oknu Projekt. Okno urejevalnika razkrije trenutno vsebino datoteke, v tem primeru skeletno izvorno kodo Java za glavno dejavnost aplikacije.
Vsako okno urejevalnika je povezano z zavihkom. Na primer, W2AOkno urejevalnika je povezano z W2A.java zavihek. Drugi zavihek je označen kot main.xml Prikazana je tudi privzeta postavitev na osnovi XML za glavno dejavnost aplikacije. S klikom na zavihek okna se premaknete iz enega okna urejevalnika v drugo.
prenos Prenesite kodo Prenesite izvorno kodo za primer aplikacije za Android: W2A.java. Ustvaril Jeff Friesen za JavaWorld.Primer aplikacije za Android
Primer aplikacije (W2A.java) je sestavljen iz glavne dejavnosti, ki prikazuje lik robota Android in gumb. Ko uporabnik pritisne gumb, robot animira skozi vrsto barv. V tem razdelku bomo raziskali izvorno kodo in vire dejavnosti.
Raziščite in kodirajte primer aplikacije za Android
Izvorna koda dejavnosti je shranjena v datoteki W2A.java
, predstavljeno v seznamu 1.
Seznam 1. W2A.java
paket ca.javajeff.w2a; uvoz android.app.Activity; import android.graphics.drawable.AnimationDrawable; uvoz android.os.Bundle; uvoz android.view.View; uvoz android.widget.Button; uvoz android.widget.ImageView; javni razred W2A razširja aktivnost {AnimationDrawable androidAnimation; @Override javna praznina onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.main); ImageView androidImage = (ImageView) findViewById (R.id.android); androidImage.setBackgroundResource (R.drawable.android_animate); androidAnimation = (AnimationDrawable) androidImage.getBackground (); končni gumb btnAnimate = (gumb) findViewById (R.id.animate); View.OnClickListener ocl; ocl = novo View.OnClickListener () {@Override public void onClick (View v) {androidAnimation.stop (); androidAnimation.start (); }}; btnAnimate.setOnClickListener (ocl); }}
The W2A.java
datoteka se začne z izjava o paketu, ki poimenuje paket (ca.javajeff.w2a
), ki shranjuje W2A
razred. Sledi vrsta izjav o uvozu za različne vrste Android API. Nato koda opisuje W2A
razred, ki se razširi android.app.Activity
.
W2A
najprej razglasi androidAnimation
primerek polja tipa android.graphics.drawable.AnimationDrawable
. Predmeti tipa AnimationDrawable
opisujejo posamične animacije, pri katerih je trenutni risljivi del nadomeščen z naslednjim risanim v zaporedju animacije.
Kaj je mogoče risati?
A izvlečno je nekaj, kar je mogoče narisati, na primer sliko. AnimationDrawable
posredno razširja povzetek android.graphics.drawable.Drawable
razred, kar je splošna abstrakcija za risanje.
Metoda onCreate ()
Vsa dela aplikacije potekajo v W2A
prevlada onCreate (sveženj)
metoda: nobene druge metode niso potrebne, kar pomaga, da je ta aplikacija preprosta.
onCreate (sveženj)
najprej prikliče svojo istoimenovano metodo superrazreda, pravilo, ki mu morajo slediti vse nadrejene metode dejavnosti.
Ta metoda se nato izvede setContentView (R.layout.main)
za vzpostavitev uporabniškega vmesnika aplikacije. R. postavitev.glavno
je identifikator (ID) za aplikacijski vir, ki je v ločeni datoteki. Ta ID si razlagate na naslednji način:
R
je ime razreda, ki se ustvari med izdelavo aplikacije. Ta razred je imenovanR
ker njegova vsebina opredeljuje različne vrste aplikacijskih virov, vključno z postavitvami, slikami, nizi in barvami.postavitev
je ime razreda, ki je ugnezden znotrajR
. Vir aplikacije, katerega ID je shranjen v tem razredu, opisuje določen vir postavitve. Vsaka vrsta aplikacijskega vira je povezana z ugnezdenim razredom, ki je poimenovan na podoben način. Na primer,vrvica
identificira nizovne vire.glavni
je imeint
na osnovi konstante, prijavljene znotrajpostavitev
. Ta ID vira določa glavni vir postavitve. Natančneje,glavni
se nanaša na amain.xml
datoteka, ki shranjuje informacije o postavitvi glavne dejavnosti.glavni
jeW2A
edini vir postavitve.
Mimo R. postavitev.glavno
do Dejavnost
je void setContentView (int layoutResID)
metoda Androidu naroči, naj ustvari zaslon uporabniškega vmesnika z uporabo informacij o postavitvi, shranjenih v main.xml
. V zakulisju Android ustvarja komponente uporabniškega vmesnika, opisane v main.xml
in jih postavi na zaslon naprave, kot določa main.xml
podatki o postavitvi.
Zaslon temelji na pogledi (abstrakcije komponent uporabniškega vmesnika) in ogled skupin (ogledi, ki združujejo povezane komponente uporabniškega vmesnika). Pogledi so primeri razredov, ki podrazvrstijo android.view.View
razreda in so analogni komponentam AWT / Swing. Ogled skupin so primeri razredov, ki podrazvrstijo izvleček android.view.ViewGroup
razreda in so analogni vsebnikom AWT / Swing. Android se na določene poglede (kot so gumbi ali vrtljivci) sklicuje kot pripomočki.
Nadaljujem, onCreate (sveženj)
izvrši ImageView androidImage = (ImageView) findViewById (R.id.android);
. Ta izjava najprej zahteva Pogled
je Ogled findViewById (int id)
metoda za iskanje android.widget.ImageView
element, prijavljen v main.xml
in opredeljena kot android
. Instancira ImageView
in ga inicializira na vrednosti, navedene v main.xml
mapa. Stavek nato shrani referenco tega predmeta v lokalno spremenljivko androidImage
.
ImageView in AnimationDrawable
Nato, androidImage.setBackgroundResource (R.drawable.android_animate);
stavek prikliče ImageView
je podedovana (od Pogled
) void setBackgroundResource (int resID)
, nastavitev ozadja pogleda na vir, ki ga je določil resID
. The R.drawable.android_animate
argument identificira datoteko XML z imenom android_animate.xml
(predstavljeno kasneje), ki shranjuje podatke o animaciji in ki je shranjen v res
je izvlečno
podimenik. The setBackgroundResource ()
klicne povezave androidImage
pogled na zaporedje slik, ki ga opisuje android_animate.xml
, ki bo narisano na tem pogledu. Začetna slika je narisana kot rezultat tega klica metode.
ImageView
omogoča aplikaciji, da s klicem animira zaporedje risb AnimationDrawable
metode. Preden lahko aplikacija to stori, mora pridobiti ImageView
je AnimationDrawable
. The androidAnimation = (AnimationDrawable) androidImage.getBackground ();
izjava o dodelitvi, ki sledi, opravi to nalogo s klicem ImageView
je podedovana (od Pogled
) Dravable getBackground ()
metoda. Ta metoda vrne AnimationDrawable
za dano ImageView
, ki je nato dodeljeno androidAnimation
polje. The AnimationDrawable
primer se uporablja za zagon in zaustavitev animacije, postopek, ki ga bom opisal v kratkem.
Končno, onCreate (sveženj)
ustvarja Animacija . Prikliče findByViewId (int)
za informacije o gumbu main.xml
, nato ustvari android.widget.Button
razred.
Nato zaposluje Pogled
razred ugnezden onClickListener
vmesnik za ustvarjanje predmeta poslušalca. Ta predmet je void onClick (Pogled v)
metoda se prikliče vsakič, ko uporabnik klikne gumb. Poslušalec je registriran pri svojem Gumb
predmet s klicem Pogled
je void setOnClickListener (poslušalec AdapterView.OnClickListener)
metoda.
Če želite ustaviti, nato zaženite animacijo, Animacijaklikne poslušalec klikov androidAnimation.stop ();
čemur sledi androidAnimation.start ();
. The stop ()
metoda se pokliče prej začetek ()
da zagotovite, da bo poznejši klik na Animacija gumb povzroči, da se začne nova animacija.
Posodobite in shranite kodo
Preden nadaljujemo, zamenjajte skeletno kodo v vašem W2A.java zavihek s kodo iz seznama 1. Shranite vsebino tega okna s pritiskom na Ctrl + Sali izberite Shrani vse Iz mapa meni.
Kodiranje aplikacije main.xml za Android
Glavna dejavnost aplikacije je povezana s postavitvijo na osnovi XML, ki je shranjena v datoteki main.xml
, ki je predstavljeno v seznamu 2.
Seznam 2. main.xml
Po izjavi XML seznam 2 razglasi a LinearLayout
element, ki določa postavitev (skupina pogledov, ki na nek način ureja omejene poglede na zaslonu naprave Android) za urejanje pripomočkov (vključno z ugnezdenimi postavitvami) vodoravno ali navpično po zaslonu.
The tag določa več atributov za nadzor te linearne postavitve. Ti atributi vključujejo naslednje:
usmerjenost
identificira linearno postavitev kot vodoravno ali navpično. Vsebovani pripomočki so postavljeni vodoravno ali navpično, privzeta usmeritev pa je vodoravna."vodoravno"
in"navpično"
so edine pravne vrednosti, ki jih je mogoče dodeliti temu atributu.postavitev_širina
določa širino postavitve. Pravne vrednote vključujejo"fill_parent"
(biti tako širok kot starš) in"wrap_content"
(da je dovolj širok, da zajema vsebino). (Upoštevajte tofill_parent
je bil preimenovan vmatch_parent
v Androidu 2.2, vendar je še vedno podprt in se pogosto uporablja.)postavitev_visina
določa višino postavitve. Pravne vrednote vključujejo"fill_parent"
(biti visok kot starš) in"wrap_content"
(biti dovolj visok, da lahko zajame vsebino).gravitacija
določa, kako je postavitev postavljena glede na zaslon. Na primer,"center"
določa, da mora biti postavitev centrirana vodoravno in navpično na zaslonu.ozadje
prepozna sliko ozadja, preliv ali enobarvno sliko. Zaradi enostavnosti sem trdo kodiral šestnajstiški identifikator barve, ki označuje trdno belo ozadje (#ffffff
). (Barve bi običajno shranili vcolors.xml
in sklic iz te datoteke.)
The LinearLayout
enkapsulira element ImageView
in Gumb
elementi. Vsak od teh elementov določa id
atribut, ki identificira element, tako da se nanj lahko sklicuje iz kode. The identifikator vira (posebna skladnja, ki se začne z @
), dodeljen temu atributu, se začne z @ + id
predpono. Na primer, @ + id / android
identificira ImageView
element kot android
; ta element se sklicuje iz kode z določitvijo R.id.android
.
Ti elementi tudi določajo postavitev_širina
in postavitev_visina
atributi za določanje, kako je razporejena njihova vsebina. Vsak atribut je dodeljen wrap_content
tako da bo element videti v svoji naravni velikosti.
ImageView
določa a layout_marginBottom
atribut za identifikacijo presledka med seboj in gumbom, ki sledi navpično. Prostor je določen kot 10 padci, ali od gostote neodvisne slikovne pike. To so navidezne slikovne pike, s katerimi lahko aplikacije izrazijo dimenzije / položaje postavitve na način, neodvisen od gostote zaslona.
Gostoto neodvisne slikovne pike
A od gostote neodvisna slikovna pika (dip) je enak enemu fizičnemu slikovnemu piku na zaslonu s 160 dpi, osnovno gostoto pa predpostavlja Android. Med izvajanjem Android na pregleden način obravnava kakršno koli skaliranje potrebnih enot za potapljanje glede na dejansko gostoto zaslona v uporabi. Enote dip se pretvorijo v slikovne pike zaslona z enačbo: slikovnih pik = padci * (gostota / 160). Na zaslonu z ločljivostjo 240 dpi je na primer 1 potop enak 1,5 fizični slikovni piki. Google priporoča uporabo enot dip za definiranje uporabniškega vmesnika aplikacije, da se zagotovi ustrezen prikaz uporabniškega vmesnika na različnih zaslonih naprav.