Programavimas

„Android Studio“ pradedantiesiems, 2 dalis. Naršykite ir užkoduokite programą

Atnaujinta: 2020 m. Sausio mėn.

Šio pradedančiojo „Android Studio“ įvado 1 dalyje jūs sukūrėte „Android Studio“ savo kūrimo aplinkoje ir susipažinote su vartotojo sąsaja. Dabar 2 dalyje užkoduosite savo pirmąją programą.

Animacinę programą mobiliesiems sudaro viena veikla, kurioje pateikiamas „Google“ „Android“ roboto simbolis ir mygtukas, skirtas simboliui animuoti. Spustelėjus mygtuką, simbolis palaipsniui keičia spalvą iš žalios į raudoną į mėlyną, tada vėl į žalią. Nors programa nėra ypač naudinga, jos rašymas padės patogiau naudotis „Android Studio“. 3 dalyje sukursite ir paleisite programą naudodami „Android“ įrenginio emuliatorių ir „Kindle Fire“ planšetinį kompiuterį.

Atminkite, kad ši serija buvo atnaujinta „Android Studio 3.2.1“, šiuo metu stabiliai išleidžiamam šio rašymo metu.

„Android Studio“ projekto ir redaktoriaus langai

Aš pristatiau „Android Studio“ pagrindinį langą 1 dalies pabaigoje. Šis langas yra padalintas į kelias sritis, įskaitant „Project“ langą, kuriame nurodote programos išteklių failus, ir įvairius redaktoriaus langus, kuriuose rašysite kodą ir nurodysite mobiliųjų programų išteklius. „Android Studio“. Projekto langas ir redaktoriaus langas parodyti 1 paveiksle.

Jeffas Friesenas

Paryškinamas projekto langas W2A, kuris yra programos pavadinimas W2A.java šaltinio failas (nors .java failo plėtinys nerodomas). Atitinkantis W2A yra redaktoriaus langas, pasiekiamas dukart spustelėjus W2A projekto lange. Redaktoriaus lange rodomas dabartinis failo turinys, šiuo atveju pagrindinės programos pagrindinės programos Java šaltinio kodas.

Kiekvienas redaktoriaus langas susietas su skirtuku. Pavyzdžiui, W2Aredaktoriaus langas susietas su a W2A.java skirtuką. Antrasis skirtukas identifikuotas kaip main.xml (numatytasis XML pagrįstas programos pagrindinės veiklos išdėstymas) taip pat rodomas. Norėdami pereiti iš vieno redaktoriaus lango į kitą, spustelėkite lango skirtuką.

atsisiųsti Gauti kodą Atsisiųskite „Android“ pavyzdinės programos šaltinio kodą: W2A.java. Sukūrė Jeffas Friesenas, skirtas „JavaWorld“.

„Android“ programos pavyzdys

Programos pavyzdys (W2A.java) susideda iš pagrindinės veiklos, kurioje rodomas „Android“ roboto simbolis, ir mygtuko. Kai vartotojas paspaudžia mygtuką, robotas animuoja per daugybę spalvų. Šiame skyriuje ištirsime veiklos šaltinio kodą ir išteklius.

Naršykite ir užkoduokite „Android“ programos pavyzdį

Veiklos šaltinio kodas saugomas faile W2A.java, pateiktas 1 sąraše.

1 sąrašas. W2A.java

 paketas ca.javajeff.w2a; importuoti android.app.Activity; importuoti android.graphics.drawable.AnimationDrawable; importuoti android.os.Bundle; importuoti android.view.View; importuoti android.widget.Button; importuoti android.widget.ImageView; viešoji W2A klasė pratęsia veiklą {AnimationDrawable androidAnimation; @Paisyti viešą negaliojimą onCreate (paketas išsaugotasInstanceState) {super.onCreate (išsaugotasInstanceState); setContentView (R.layout.main); ImageView androidImage = (ImageView) findViewById (R.id.android); androidImage.setBackgroundResource (R.drawable.android_animate); androidAnimation = (AnimationDrawable) androidImage.getBackground (); galutinis mygtukas btnAnimate = (mygtukas) findViewById (R.id.animate); View.OnClickListener ocl; ocl = new View.OnClickListener () {@Paisyti viešą negaliojančią onClick (View v) {androidAnimation.stop (); androidAnimation.start (); }}; btnAnimate.setOnClickListener (ocl); }} 

W2A.java failas prasideda a paketo išrašas, kuris pavadina pakuotę (ca.javajeff.w2a), kuriame saugomi W2A klasė. Po to pateikiama įvairių tipų „Android“ API importavimo ataskaitų serija. Toliau kodas apibūdina W2A klasė, kuri tęsiasi android.app.Activity.

W2A pirmiausia pareiškia an androidAnimacija tipo lauko laukas android.graphics.drawable.AnimationDrawable. Tipo objektai AnimacijaPiešiama apibūdinkite animaciją kadre po kadro, kuriame dabartinis piešiamasis pakeičiamas kitu piešiamuoju animacijos sekoje.

Kas yra piešiama?

A ištraukiamas yra kažkas, ką galima nupiešti, pavyzdžiui, vaizdas. AnimacijaPiešiama netiesiogiai pratęsia abstraktą android.graphics.drawable.Drawable klasė, kuri yra bendra piešimo abstrakcija.

OnCreate () metodas

Visas programos darbas vyksta W2Ayra svarbesnis „onCreate“ (paketas) metodas: nereikia jokių kitų metodų, o tai padeda paprastą šią programą.

„onCreate“ (paketas) pirmiausia remiasi tuo pačiu pavadintu superklasės metodu - taisykle, kurios turi laikytis visi svarbesni veiklos metodai.

Šis metodas tada vykdomas „setContentView“ (R.layout.main) nustatyti programos vartotojo sąsają. R.layout.main yra programos ištekliaus, kuris yra atskirame faile, identifikatorius (ID). Šį ID aiškinate taip:

  • R yra klasės, sugeneruotos kuriant programą, pavadinimas. Ši klasė pavadinta R nes jo turinys identifikuoja įvairius programų išteklius, įskaitant maketus, vaizdus, ​​eilutes ir spalvas.
  • išdėstymas yra klasės, kurioje įdėta, pavadinimas R. Programos išteklius, kurio ID saugomas šioje klasėje, apibūdina konkretų išdėstymo šaltinį. Kiekviena programų išteklių rūšis yra susieta su įdėta klase, kuri pavadinta panašiai. Pavyzdžiui, stygos nustato eilutės išteklius.
  • pagrindinis yra vardas tarptpagrindu deklaruojama konstanta išdėstymas. Šis šaltinio ID identifikuoja pagrindinį išdėstymo šaltinį. Tiksliau, pagrindinis reiškia a main.xml failas, kuriame saugoma pagrindinės veiklos išdėstymo informacija. pagrindinis yra W2Avienintelis maketo šaltinis.

Praeina R.layout.main į Veikla's void setContentView (int layoutResID) metodas nurodo „Android“ sukurti vartotojo sąsajos ekraną, naudodamasis saugoma išdėstymo informacija main.xml. Užkulisiuose „Android“ sukuria vartotojo sąsajos komponentus, aprašytus main.xml ir padeda juos prietaiso ekrane, kaip nurodyta main.xmlmaketo duomenys.

Ekrano pagrindas yra Peržiūrų (vartotojo sąsajos komponentų abstrakcijos) ir nuomonių grupės (peržiūri grupuojamus vartotojo sąsajos komponentus). Peržiūrų yra klasių, kurios subklasė android.view.View klasės ir yra analogiški AWT / Swing komponentams. Peržiūrėti grupes yra klasių, klasifikuojamų abstrakčiai, atvejai android.view.ViewGroup klasės ir yra analogiški AWT / Swing konteineriams. „Android“ nurodo konkrečius rodinius (pvz., Mygtukus ar suktukus) kaip raštai.

Tęsiant, „onCreate“ (paketas) vykdo ImageView androidImage = (ImageView) findViewById (R.id.android);. Šis pareiškimas pirmiausia ragina Vaizdas's Peržiūrėti „findViewById“ (int id) metodas rasti android.widget.ImageView deklaruotas elementas main.xml ir identifikuota kaip androidas. Tai akimirksniu „ImageView“ ir inicializuoja jį į main.xml failą. Tada sakinys išsaugo šio objekto nuorodą vietiniame kintamajame androidImage.

„ImageView“ ir „AnimationDrawable“

Kitas, androidImage.setBackgroundResource (R.drawable.android_animate); pareiškimas kviečia „ImageView“paveldėtas (iš Vaizdas) void setBackgroundResource (int resID) metodas, nustatant rodinio foną pagal išteklius, kuriuos identifikuoja resID. R.piešiamas.android_animinas argumentas identifikuoja XML failą pavadinimu android_animate.xml (pateikiama vėliau), kurioje saugoma informacija apie animaciją ir kuri saugoma res's ištraukiamas pakatalogis. setBackgroundResource () skambučio nuorodos androidImage peržiūrėti vaizdų seką, aprašytą android_animate.xml, kuri bus parengta pagal šį vaizdą. Pradinis vaizdas yra nupieštas dėl šio metodo iškvietimo.

„ImageView“ leidžia programai animuoti mokamų sekų skaičių skambinant AnimacijaPiešiama metodai. Kad programa galėtų tai padaryti, ji turi ją gauti „ImageView“'s AnimacijaPiešiama. androidAnimation = (AnimationDrawable) androidImage.getBackground (); paskesnis priskyrimo sakinys įvykdo šią užduotį iškviesdamas „ImageView“paveldėtas (iš Vaizdas) Piešiamas „getBackground“ () metodas. Šis metodas pateikia AnimacijaPiešiama duotam „ImageView“, kuris vėliau priskiriamas androidAnimacija srityje. AnimacijaPiešiama egzempliorius naudojamas pradėti ir sustabdyti animaciją, procesą aprašysiu netrukus.

Pagaliau, „onCreate“ (paketas) sukuria Animuoti mygtuką. Tai kviečia „findByViewId“ (int) gauti mygtuko informaciją iš main.xml, tada akimirksniu android.widget.Button klasė.

Tada jis naudoja Vaizdas klasės lizdai „onClickListener“ sąsaja sukurti klausytojo objektą. Šis objektas yra void onClick (Peržiūrėti v) metodas yra naudojamas, kai vartotojas paspaudžia mygtuką. Klausytojas yra užregistruotas jo Mygtukas prieštarauti skambinant Vaizdas's void setOnClickListener („AdapterView.OnClickListener“ klausytojas) metodas.

Norėdami sustabdyti, tada paleiskite animaciją, Animuotipaspaudimų klausytojas iškviečia androidAnimation.stop (); paskui androidAnimation.start ();. sustabdyti() metodas vadinamas anksčiau pradžia () užtikrinti, kad paskesnis Animuoti mygtukas sukelia naujos animacijos pradžią.

Atnaujinkite ir išsaugokite kodą

Prieš tęsdami, pakeiskite skeleto kodą savo W2A.java skirtuką su kodu iš sąrašo 1. Išsaugokite šio lango turinį paspausdami „Ctrl“ + Sarba pasirinkite Išsaugoti viską nuo Failas Meniu.

Koduojamas „Android“ programos main.xml

Pagrindinė programos veikla yra susieta su XML pagrindu sukurtu išdėstymu, kuris saugomas faile main.xmlir kuris pateiktas 2 sąraše.

2 sąrašas. main.xml

Po XML deklaracijos 2 sąraše skelbiama a Linijinis išdėstymas elementas, nurodantis a išdėstymas (peržiūros grupė, kuri tam tikru būdu sutvarko uždaras peržiūras „Android“ įrenginio ekrane), kad būtų galima išdėstyti ribotus valdiklius (įskaitant įdėtus maketus) horizontaliai arba vertikaliai visame ekrane.

žymoje nurodomi keli atributai, skirti valdyti šį tiesinį išdėstymą. Šie atributai apima:

  • orientacija identifikuoja linijinį išdėstymą horizontaliu arba vertikaliu. Sudėtiniai valdikliai yra išdėstyti horizontaliai arba vertikaliai, o numatytoji orientacija yra horizontali. „horizontalus“ ir „vertikalus“ yra vienintelės teisinės vertės, kurias galima priskirti šiam atributui.
  • išdėstymo_ plotis identifikuoja maketo plotį. Teisinės vertybės apima „fill_parent“ (kad būtų toks pat platus kaip ir tėvas) ir „wrap_content“ (kad būtų pakankamai platus, kad būtų galima uždėti turinį). (Prisimink tai užpildyti_tėvą buvo pervadinta į match_parent „Android 2.2“, bet vis tiek palaikoma ir plačiai naudojama.)
  • išdėstymas_aukštis nustato maketo aukštį. Teisinės vertybės apima „fill_parent“ (kad būtų toks pat aukštas kaip ir tėvas) ir „wrap_content“ (kad būtų pakankamai aukštas, kad uždarytų turinį).
  • gravitacija identifikuoja, kaip išdėstymas išdėstomas ekrano atžvilgiu. Pavyzdžiui, „centras“ nurodo, kad maketas ekrane turėtų būti sutelktas horizontaliai ir vertikaliai.
  • fonas identifikuoja fono vaizdą, gradientą arba vientisą spalvą. Paprastumo dėlei aš sunkiai užkodavau šešioliktainį spalvų identifikatorių, kad pažymėčiau vientisą baltą foną (#ffffff). (Spalvos paprastai būtų saugomos spalvos.xml ir nurodytas iš šio failo.)

Linijinis išdėstymas elementas susikaupia „ImageView“ ir Mygtukas elementai. Kiekvienas iš šių elementų nurodo id atributas, kuris identifikuoja elementą, kad jį būtų galima nurodyti iš kodo. išteklių identifikatorius (speciali sintaksė, prasidedanti @), priskirtas šiam atributui, prasideda @ + id priešdėlis. Pavyzdžiui, @ + id / android identifikuoja „ImageView“ elementas kaip androidas; šis elementas nurodomas iš kodo nurodant R.id.androidas.

Šie elementai taip pat nurodo išdėstymo_ plotis ir išdėstymas_aukštis atributus, nustatančius, kaip išdėstomas jų turinys. Kiekvienas atributas yra priskirtas wrap_content kad elementas atrodytų natūralaus dydžio.

„ImageView“ nurodo a layout_marginBottom atributas identifikuoja tarpų tarp vertikaliai einančio mygtuko. Vieta nurodyta kaip 10 panirimasarba nuo tankio nepriklausomi pikseliai. Tai yra virtualūs pikseliai, kuriuos programos gali naudoti išdėstymo matmenims / pozicijoms išreikšti nepriklausomai nuo ekrano tankio.

Nuo tankio nepriklausomi pikseliai

A nuo tankio nepriklausomas pikselis (dip) prilygsta vienam fiziniam pikseliui 160 dpi ekrane, kurio bazinis tankis laikomas „Android“. Vykdymo metu „Android“ skaidriai tvarko bet kokių reikiamų panardinimo vienetų mastelius, atsižvelgdama į faktinį naudojamo ekrano tankį. Dip vienetai konvertuojami į ekrano taškus pagal lygtį: pikseliai = kritimai * (tankis / 160). Pavyzdžiui, 240 taškų colio ekrane 1 kritimas yra lygus 1,5 fizinio taško. „Google“ rekomenduoja naudoti programos vienetus, kad apibrėžtų jūsų programos vartotojo sąsają, kad būtų užtikrintas tinkamas vartotojo sąsajos rodymas skirtinguose įrenginio ekranuose.

Naujo išdėstymo pasirinkimas ir išsaugojimas

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