Ohjelmointi

Android Studio aloittelijoille, osa 2: Tutki ja koodaa sovellus

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.

Jeff Friesen

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 W2Aon 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 nimetty R koska sen sisältö tunnistaa erilaiset sovellusresurssit, mukaan lukien ulkoasut, kuvat, merkkijonot ja värit.
  • layout on luokan sisäkkäinen nimi R. 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 on intsisällä ilmoitettu vakio layout. Tämä resurssitunnus tunnistaa pääasetteluresurssin. Erityisesti, tärkein viittaa a main.xml tiedosto, joka tallentaa päätoiminnan asettelutiedot. tärkein On W2Aainoa asetteluresurssi.

Syöttäminen R.layout.main että Toimintaon 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.xmlasettelutiedot.

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ää ImageViewon 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 reson 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 ImageViewon AnimaatioPiirrettävissä. androidAnimation = (AnimationDrawable) androidImage.getBackground (); seuraava tehtävälauseke suorittaa tämän tehtävän kutsumalla ImageViewon 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.xmlja 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 uudelleen match_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 normaalisti vä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ä.

Uuden asettelun valitseminen ja tallentaminen

$config[zx-auto] not found$config[zx-overlay] not found