Päivitetty: tammikuu 2020.
Tämän aloittelijan Android Studion johdannon osassa 1 määritit Android Studion kehitysympäristösi ja tutustu käyttöliittymään. Nyt osassa 2 koodaat ensimmäisen sovelluksesi.
Animoitu mobiilisovellus koostuu yhdestä toiminnasta, joka esittelee Googlen Android-robotin hahmon ja painikkeen hahmon animoimiseksi. Napsauttamalla painiketta, merkki muuttuu asteittain vihreästä punaisesta siniseksi ja sitten takaisin vihreäksi. Vaikka sovellus ei ole erityisen hyödyllinen, sen kirjoittaminen auttaa sinua viihtymään Android Studion käytössä. Osassa 3 rakennat ja suoritat sovelluksen käyttämällä Android-laitteen emulaattoria ja Kindle Fire -tablettia.
Huomaa, että tämä sarja on päivitetty Android Studio 3.2.1: lle, joka on tämän kirjeen julkaisun nykyinen vakaa julkaisu.
Android Studion projekti- ja muokkausikkunat
Esittelin Android Studion pääikkunan osan 1 lopussa. Tämä ikkuna on jaettu useisiin alueisiin, mukaan lukien Project-ikkuna, jossa tunnistat sovelluksen resurssitiedostot, ja erilaiset editori-ikkunat, joihin kirjoitat koodin ja määrität resursseja mobiilisovelluksille. Android Studiossa. Projekti-ikkuna ja muokkausikkuna on esitetty kuvassa 1.

Projekti-ikkuna näkyy korostettuna W2A, joka on sovelluksen nimi W2A.java
lähdetiedosto (vaikka .java
tiedostotunnistetta ei näytetä). Vastaten W2A on muokkausikkuna, johon pääsee kaksoisnapsauttamalla W2A Project-ikkunassa. Editori-ikkuna paljastaa tiedoston nykyisen sisällön, tässä tapauksessa luurankoisen Java-lähdekoodin sovelluksen päätoiminnolle.
Jokainen muokkausikkuna liittyy välilehteen. Esimerkiksi, W2Aeditorin ikkuna liittyy a W2A.java välilehti. Toinen välilehti tunnistetaan main.xml (oletusarvoinen XML-pohjainen asettelu sovelluksen päätoiminnolle) näytetään myös. Voit siirtyä muokkausikkunasta toiseen napsauttamalla ikkunan välilehteä.
lataa Hae koodi Lataa Android-esimerkkisovelluksen lähdekoodi: W2A.java. Luonut Jeff Friesen JavaWorldille.Android-esimerkkisovellus
Esimerkkisovellus (W2A.java) koostuu päätoiminnosta, joka näyttää Android-robotin merkin, ja painikkeesta. Kun käyttäjä painaa painiketta, robotti animoi sarjan värejä. Tässä osiossa tutkitaan toiminnan lähdekoodia ja resursseja.
Tutki ja koodaa Android-esimerkkisovellus
Toiminnan lähdekoodi on tallennettu tiedostoon W2A.java
, esitetty luettelossa 1.
Listaus 1. W2A.java
paketti ca.javajeff.w2a; tuoda android.app.Activity; import android.graphics.drawable.AnimationDrawable; tuonti android.os.Bundle; tuoda android.view.View; tuonti android.widget.Button; tuo android.widget.ImageView; julkinen luokka W2A laajentaa toimintoa {AnimationDrawable androidAnimation; @Override public void 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 (); lopullinen painike btnAnimate = (painike) findViewById (R.id.animaatti); View.OnClickListener ocl; ocl = new View.OnClickListener () {@Override public void onClick (View v) {androidAnimation.stop (); androidAnimation.start (); }}; btnAnimate.setOnClickListener (okl); }}
W2A.java
tiedosto alkaa a: lla pakettilauseke, joka nimeää paketin (ca. javajeff.w2a
), joka tallentaa W2A
luokassa. Tätä seuraa sarja tuontilausekkeita erilaisille Android-sovellusliittymätyypeille. Seuraavaksi koodi kuvaa W2A
luokka, joka jatkuu android.app.Activity
.
W2A
ilmoittaa ensin androidAnimaatio
tyypin kenttä android.graphics.drawable.AnimationDrawable
. Tyyppiset objektit AnimaatioPiirrettävissä
kuvaavat kehys ruudulta -animaatiot, joissa nykyinen piirrettävä korvataan seuraavalla piirrettävällä animaatiojaksossa.
Mikä on piirrettävä?
A vedettävä on jotain, joka voidaan piirtää, kuten kuva. AnimaatioPiirrettävissä
epäsuorasti laajentaa abstraktia android.graphics.drawable.Drawable
luokka, joka on yleinen abstraktio piirrettävälle.
OnCreate () -menetelmä
Kaikki sovelluksen työ tapahtuu W2A
on tärkeämpää onCreate (paketti)
menetelmä: muita menetelmiä ei tarvita, mikä auttaa pitämään tämän sovelluksen yksinkertaisena.
onCreate (paketti)
vetoaa ensin samannimiseen superluokkamenetelmäänsä, sääntöön, jota kaikkien ohittavien toimintamenetelmien on noudatettava.
Tämä menetelmä suoritetaan sitten setContentView (R.layout.main)
sovelluksen käyttöliittymän luomiseksi. R.layout.main
on sovellusresurssin tunniste (ID), joka sijaitsee erillisessä tiedostossa. Tulkitset tämän tunnuksen seuraavasti:
R
on luokan nimi, joka syntyy sovellusta rakennettaessa. Tämä luokka on nimettyR
koska sen sisältö tunnistaa erilaiset sovellusresurssit, mukaan lukien ulkoasut, kuvat, merkkijonot ja värit.layout
on luokan sisäkkäinen nimiR
. Sovellusresurssi, jonka tunnus on tallennettu tähän luokkaan, kuvaa tiettyä asetteluresurssia. Jokainen sovellusresurssityyppi liittyy sisäkkäisiin luokkiin, jotka on nimetty samalla tavalla. Esimerkiksi,merkkijono
tunnistaa merkkijonoresurssit.tärkein
onint
sisällä ilmoitettu vakiolayout
. Tämä resurssitunnus tunnistaa pääasetteluresurssin. Erityisesti,tärkein
viittaa amain.xml
tiedosto, joka tallentaa päätoiminnan asettelutiedot.tärkein
OnW2A
ainoa asetteluresurssi.
Syöttäminen R.layout.main
että Toiminta
on void setContentView (int layoutResID)
-menetelmä kehottaa Androidia luomaan käyttöliittymänäytön main.xml
. Kulissien takana Android luo käyttöliittymäkomponentit, jotka on kuvattu kohdassa main.xml
ja sijoittaa ne laitteen näytölle main.xml
asettelutiedot.
Näyttö perustuu näkymät (käyttöliittymäkomponenttien abstraktit) ja katseluryhmät (näkymiä, jotka ryhmittävät käyttöliittymäkomponentit). Näkymät ovat luokkien esiintymiä, jotka android.view.Näytä
-luokan ja ovat analogisia AWT / Swing-komponenttien kanssa. Näytä ryhmät ovat luokkien esiintymiä, jotka luokittelevat abstraktin android.view.ViewGroup
luokan ja ovat analogisia AWT / Swing-astioiden kanssa. Android viittaa tiettyihin näkymiin (kuten napeihin tai kiekkoihin) widgetit.
Jatkuu, onCreate (paketti)
suorittaa ImageView androidImage = (ImageView) findViewById (R.id.android);
. Tämä lausunto vaatii ensin Näytä
on Näytä findViewById (int id)
menetelmä löytää android.widget.ImageView
elementti ilmoitettu main.xml
ja tunnistetaan android
. Se välittää ImageView
ja alustaa sen arvoissa ilmoitettuihin arvoihin main.xml
tiedosto. Sitten lause tallentaa tämän objektin viitteen paikalliseen muuttujaan androidImage
.
ImageView ja AnimationDrawable
Seuraavaksi androidImage.setBackgroundResource (R.drawable.android_animate);
lause käynnistää ImageView
on perinyt ( Näytä
) void setBackgroundResource (int resID)
menetelmä, asettamalla näkymän tausta resurssille, jonka tunnistaa resID
. R.drawable.android_animate
argumentti tunnistaa XML-tiedoston nimeltä android_animate.xml
(esitetty myöhemmin), joka tallentaa tietoja animaatiosta ja joka on tallennettu res
on vedettävä
alihakemisto. setBackgroundResource ()
puhelulinkit androidImage
näkymä kuvasekvenssille, jonka on kuvannut android_animate.xml
, joka piirretään tähän näkemykseen. Alkuperäinen kuva piirretään tämän menetelmän kutsun tuloksena.
ImageView
antaa sovelluksen animoida piirrettävän sarjan soittamalla AnimaatioPiirrettävissä
menetelmiä. Ennen kuin sovellus voi tehdä tämän, sen on hankittava ImageView
on AnimaatioPiirrettävissä
. androidAnimation = (AnimationDrawable) androidImage.getBackground ();
seuraava tehtävälauseke suorittaa tämän tehtävän kutsumalla ImageView
on perinyt ( Näytä
) Piirrettävä getBackground ()
menetelmä. Tämä menetelmä palauttaa AnimaatioPiirrettävissä
tietylle ImageView
, joka myöhemmin osoitetaan androidAnimaatio
ala. AnimaatioPiirrettävissä
esimerkkiä käytetään animaation käynnistämiseen ja lopettamiseen, prosessin, jonka kuvaan pian.
Lopuksi, onCreate (paketti)
luo Animoi -painiketta. Se vetoaa findByViewId (int)
saada painikkeen tiedot osoitteesta main.xml
, ja sen jälkeen heti android.widget.Button
luokassa.
Sitten se käyttää Näytä
luokan sisäkkäiset onClickListener
käyttöliittymä kuuntelijaobjektin luomiseen. Tämä esine on void onClick (Näytä v)
-menetelmää käytetään aina, kun käyttäjä napsauttaa painiketta. Kuuntelija on rekisteröity siihen Painike
vastustaa soittamalla Näytä
on void setOnClickListener (AdapterView.OnClickListener-kuuntelija)
menetelmä.
Lopeta ja käynnistä sitten animaatio, Animoinapsautusten kuuntelija käynnistää androidAnimation.stop ();
jonka jälkeen androidAnimation.start ();
. lopettaa()
menetelmää kutsutaan aiemmin alkaa()
varmistaa, että seuraava napsautus Animoi -painike saa uuden animaation alkamaan.
Päivitä ja tallenna koodi
Ennen kuin jatkamme, vaihda luurankokoodi W2A.java välilehti, jonka koodi on luettelossa 1. Tallenna tämän ikkunan sisältö painamalla Ctrl + Stai valitse Tallenna kaikki alkaen Tiedosto valikossa.
Koodaa Android-sovelluksen main.xml
Sovelluksen päätoiminta liittyy XML-pohjaiseen asetteluun, joka tallennetaan tiedostoon main.xml
ja joka on esitetty luettelossa 2.
Listaus 2. main.xml
XML-ilmoituksen jälkeen Listing 2 ilmoittaa a Lineaarinen asettelu
elementti, joka määrittää a layout (näkymäryhmä, joka järjestää sisällytettyjä näkymiä Android-laitteen näytöllä jollain tavalla) järjestämään sisältyvät widgetit (sisäkkäiset asettelut mukaan lukien) joko vaaka- tai pystysuunnassa ruudun poikki.
tag määrittää useita ominaisuuksia tämän lineaarisen asettelun hallitsemiseksi. Nämä määritteet sisältävät seuraavat:
suuntautuminen
tunnistaa lineaarisen asettelun vaaka- tai pystysuunnaksi. Sisältyvät widgetit on sijoitettu vaaka- tai pystysuunnassa ja oletussuunta on vaakasuora."vaaka"
ja"pystysuora"
ovat ainoat oikeudelliset arvot, jotka voidaan osoittaa tälle määritteelle.layout_width
tunnistaa asettelun leveyden. Oikeudellisiin arvoihin sisältyy"fill_parent"
(olla yhtä leveä kuin vanhempi) ja"kääri sisältö"
(riittävän leveä sisällön sulkemiseksi). (Ota huomioon, ettäfill_parent
nimettiin uudelleenmatch_parent
Android 2.2: ssa, mutta sitä tuetaan ja käytetään edelleen laajasti.)layout_height
tunnistaa asettelun korkeuden. Oikeudellisiin arvoihin sisältyy"fill_parent"
(olla yhtä pitkä kuin vanhempi) ja"kääri sisältö"
(olla riittävän pitkä sisällön sulkemiseksi).painovoima
tunnistaa asettelun sijoittumisen näyttöön nähden. Esimerkiksi,"keskusta"
määrittää, että asettelun tulee olla keskellä vaaka- ja pystysuunnassa näytöllä.tausta
tunnistaa taustakuvan, kaltevuuden tai yksivärisen. Yksinkertaisuuden vuoksi olen kova koodannut heksadesimaalisen väritunnisteen merkitsemään yhtenäistä valkoista taustaa (#ffffff
). (Värit tallennettaisiin normaalistivärit.xml
ja viitattu tästä tiedostosta.)
Lineaarinen asettelu
elementti kapseloi ImageView
ja Painike
elementtejä. Jokainen näistä elementeistä määrittää id
attribuutti, joka tunnistaa elementin siten, että siihen voidaan viitata koodista. resurssitunniste (erityinen syntakse, joka alkaa @
), määritetty tälle määritteelle, alkaa @ + id
etuliite. Esimerkiksi, @ + id / android
tunnistaa ImageView
elementti android
; tähän elementtiin viitataan koodista määrittämällä R.id. Android
.
Nämä elementit myös määrittelevät layout_width
ja layout_height
määritteet niiden sisällön asettamisen määrittämiseksi. Jokainen attribuutti on määritetty kääri sisältö
niin, että elementti näkyy luonnollisessa koossaan.
ImageView
määrittelee a layout_marginBottom
attribuutti tunnistaa välilyönnin itsensä ja pystysuoraan seuraavan painikkeen välillä. Tilaksi määritetään 10 pulahtaatai tiheydestä riippumattomat pikselit. Nämä ovat virtuaalisia pikseleitä, joita sovellukset voivat käyttää ulkoasun mittojen / sijaintien ilmaisemiseen näytön tiheydestä riippumattomalla tavalla.
Tiheydestä riippumattomat pikselit
A tiheydestä riippumaton pikseli (dip) vastaa yhtä fyysistä pikseliä 160 dpi: n näytöllä, perustason tiheyden olettaa Android. Suorituksen aikana Android käsittelee läpinäkyvästi vaadittujen mittayksiköiden skaalauksen käytetyn näytön todellisen tiheyden perusteella. Dip-yksiköt muunnetaan näytön pikseleiksi yhtälön avulla: pikseliä = dips * (tiheys / 160). Esimerkiksi 240 dpi: n näytöllä yksi upotus on 1,5 fyysistä pikseliä. Google suosittelee dip-yksiköiden käyttämistä sovelluksesi käyttöliittymän määrittelemiseen, jotta käyttöliittymä näytetään oikein laitteen eri näytöissä.