Programmēšana

Android Studio iesācējiem, 2. daļa: Izpētiet un kodējiet lietotni

Atjaunināts: 2020. gada janvāris.

Šī iesācēja Android Studio ievaddaļas 1. daļā jūs savā attīstības vidē iestatījāt Android Studio un iepazinās ar lietotāja saskarni. Tagad 2. daļā jūs kodēsiet savu pirmo lietotni.

Animētā mobilā lietotne sastāv no vienas darbības, kurā tiek parādīts Google Android robota raksturs un poga rakstzīmes animēšanai. Noklikšķinot uz pogas, raksturs pamazām maina krāsu no zaļas uz sarkanu līdz zilai, pēc tam atkal uz zaļu. Kaut arī lietotne nav īpaši noderīga, tās rakstīšana palīdzēs jums ērti izmantot Android Studio. 3. daļā jūs izveidosiet un palaidīsit lietotni, izmantojot Android ierīces emulatoru un Kindle Fire planšetdatoru.

Ņemiet vērā, ka šī sērija ir atjaunināta operētājsistēmas Android Studio 3.2.1 versijai, kas ir pašreizējais stabilais laidiens šī raksta laikā.

Android Studio projekta un redaktora logi

Es iepazīstināju ar Android Studio galveno logu 1. daļas beigās. Šis logs ir sadalīts vairākās jomās, tostarp projekta logā, kurā jūs identificējat lietotnes resursu failus, un dažādos redaktora logos, kur jūs rakstīsit kodu un norādīsit mobilo lietotņu resursus. Android studijā. Projekta logs un redaktora logs ir parādīti 1. attēlā.

Džefs Frīzens

Tiek izcelts logs Projekts W2A, kas ir lietotnes nosaukums W2A.java avota fails (lai gan .java faila paplašinājums nav parādīts). Kas atbilst W2A ir redaktora logs, kuru sasniedz, veicot dubultklikšķi W2A logā Projekts. Redaktora logā tiek parādīts faila pašreizējais saturs, šajā gadījumā Java skeleta pamatkods lietotnes galvenajai darbībai.

Katrs redaktora logs ir saistīts ar cilni. Piemēram, W2Aredaktora logs ir saistīts ar W2A.java cilni. Otrā cilne ir identificēta kā main.xml (tiek parādīts arī noklusējuma XML bāzes izkārtojums lietotnes galvenajai darbībai). Jūs pārvietojaties no viena redaktora loga uz citu, noklikšķinot uz loga cilnes.

lejupielādēt Iegūstiet kodu Lejupielādējiet Android parauga lietotnes avota kodu: W2A.java. Izveidoja Jeff Friesen JavaWorld.

Android lietotnes piemērs

Lietotnes piemērs (W2A.java) sastāv no galvenās darbības, kurā tiek parādīts Android robota raksturs, un pogas. Kad lietotājs nospiež pogu, robots animē, izmantojot virkni krāsu. Šajā sadaļā mēs izpētīsim aktivitātes pirmkodu un resursus.

Izpētiet un kodējiet Android lietotnes piemēru

Darbības avota kods tiek saglabāts failā W2A.java, kas parādīts 1. sarakstā.

Saraksts 1. W2A.java

 pakete ca.javajeff.w2a; importēt android.app.Activity; importēt android.graphics.drawable.AnimationDrawable; importēt android.os.Bundle; importēt android.view.View; importēt android.widget.Button; importēt android.widget.ImageView; publiskā klase W2A paplašina aktivitāti {AnimationDrawable androidAnimation; @Orride public void onCreate (Pakete 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 (); galīgā poga btnAnimate = (poga) findViewById (R.id.animate); Skats.OnClickListener ocl; ocl = new View.OnClickListener () {@Orride public void onClick (View v) {androidAnimation.stop (); androidAnimation.start (); }}; btnAnimate.setOnClickListener (okt); }} 

The W2A.java fails sākas ar a paketes izraksts, kas nosauc paketi (ca.javajeff.w2a), kurā glabājas W2A klasē. Pēc tam seko importa pārskatu sērija dažādiem Android API veidiem. Tālāk kods apraksta W2A klase, kas paplašinās android.app.Activity.

W2A vispirms paziņo androidAnimācija veida lauka gadījums android.graphics.drawable.AnimationDrawable. Tipa objekti AnimācijaZīmējama aprakstiet kadru pa kadram animācijas, kurās pašreizējais zīmējamais tiek aizstāts ar nākamo zīmējamo animācijas secībā.

Kas ir zīmējams?

A zīmējams ir kaut kas, ko var uzzīmēt, piemēram, attēls. AnimācijaZīmējama netieši paplašina abstraktu android.graphics.drawable.Drawable klase, kas ir vispārēja abstrakcija zīmējamam.

OnCreate () metode

Viss lietotnes darbs notiek W2Air svarīgāks onCreate (pakete) metode: nav nepieciešamas citas metodes, kas palīdz uzturēt šo lietotni vienkāršu.

onCreate (pakete) vispirms izsauc tās pašas nosaukto superklases metodi - likumu, kas jāievēro visām svarīgākajām aktivitāšu metodēm.

Pēc tam šī metode tiek izpildīta setContentView (R.layout.main) lai izveidotu lietotnes lietotāja saskarni. R.layout.main ir lietojumprogrammas resursa identifikators (ID), kas atrodas atsevišķā failā. Jūs interpretējat šo ID šādi:

  • R ir klases nosaukums, kas tiek ģenerēts, veidojot lietotni. Šī klase ir nosaukta R jo tā saturs identificē dažāda veida lietojumprogrammu resursus, tostarp izkārtojumus, attēlus, virknes un krāsas.
  • izkārtojums ir klases ligzdas nosaukums R. Lietojumprogrammas resurss, kura ID ir saglabāts šajā klasē, apraksta noteiktu izkārtojuma resursu. Katrs lietojumprogrammas resursu veids ir saistīts ar ligzdotu klasi, kas nosaukta līdzīgā veidā. Piemēram, virkne identificē virknes resursus.
  • galvenais ir nosaukums intietvaros deklarētā konstante izkārtojums. Šis resursa ID identificē galveno izkārtojuma resursu. Konkrēti, galvenais attiecas uz a main.xml fails, kurā glabājas galvenās darbības izkārtojuma informācija. galvenais ir W2Avienīgais izkārtojuma resurss.

Iet garām R.layout.main uz Aktivitāte's void setContentView (int layoutResID) metode uzdod Android izveidot lietotāja saskarnes ekrānu, izmantojot sistēmā saglabāto izkārtojuma informāciju main.xml. Aizkulisēs Android izveido lietotāja saskarnes komponentus, kas aprakstīti main.xml un novieto tos ierīces ekrānā, kā norādīts main.xmlizkārtojuma dati.

Ekrāna pamatā ir skati (lietotāja saskarnes komponentu abstrakcijas) un skatu grupas (skati, kas grupē saistītos lietotāja interfeisa komponentus). Skati ir klases gadījumi, kas apakšklasē android.view.View klases un ir analogi AWT / Swing komponentiem. Skatīt grupas ir klases gadījumi, kas apakšklasē abstraktu android.view.ViewGroup klases un ir analogi AWT / Swing konteineriem. Android norāda uz konkrētiem skatiem (piemēram, pogām vai vērpējiem) kā logrīki.

Turpinot, onCreate (pakete) izpilda ImageView androidImage = (ImageView) findViewById (R.id.android);. Šis paziņojums vispirms izsauc Skats's Skatīt findViewById (int id) metode, lai atrastu android.widget.ImageView deklarētais elements main.xml un identificēts kā android. Tas momentāni ImageView un inicializē to vērtības, kas deklarētas main.xml failu. Pēc tam paziņojums saglabā šī objekta atsauci lokālajā mainīgajā androidImage.

ImageView un AnimationDrawable

Tālāk androidImage.setBackgroundResource (R.drawable.android_animate); paziņojums izsauc ImageViewir mantots (no Skats) void setBackgroundResource (int resID) metodi, iestatot skata fonu resursam, kuru identificējis rezID. The R.zīmējams.android_anim arguments identificē XML failu ar nosaukumu android_animate.xml (prezentēts vēlāk), kurā tiek glabāta informācija par animāciju un kas tiek saglabāta rez's zīmējams apakšdirektorijs. The setBackgroundResource () zvanu saites androidImage skats uz attēlu aprakstīto secību android_animate.xml, kas tiks zīmēts uz šī skata. Sākotnējais attēls tiek uzzīmēts šīs metodes izsaukuma rezultātā.

ImageView ļauj lietotnei animēt virkni zīmējumu, zvanot AnimācijaZīmējama metodes. Pirms lietotne to var izdarīt, tai ir jāiegūst ImageView's AnimācijaZīmējama. The androidAnimation = (AnimationDrawable) androidImage.getBackground (); Pēc tam piešķirtais paziņojums izpilda šo uzdevumu, izsaucot ImageViewir mantots (no Skats) Zīmējams getBackground () metodi. Šī metode atgriež AnimācijaZīmējama par doto ImageView, kas pēc tam tiek piešķirts androidAnimācija laukā. The AnimācijaZīmējama gadījumu izmanto, lai sāktu un apturētu animāciju, procesu, kuru es aprakstīšu neilgi.

Visbeidzot, onCreate (pakete) rada Animēt pogu. Tas atsaucas findByViewId (int) lai iegūtu informāciju par pogu no main.xml, tad momentāno android.widget.Button klasē.

Tad tas izmanto Skats klases ligzdas onClickListener interfeisu, lai izveidotu klausītāja objektu. Šis objekts ir void onClick (skats v) metode tiek izsaukta ikreiz, kad lietotājs noklikšķina uz pogas. Klausītājs ir reģistrēts tajā Poga iebilst, piezvanot Skats's void setOnClickListener (AdapterView.OnClickListener klausītājs) metodi.

Lai apturētu, pēc tam sāciet animāciju, Animētklikšķu klausītājs izsauc androidAnimation.stop (); sekoja androidAnimation.start ();. The apstāties () metodi sauc iepriekš sākt() lai nodrošinātu, ka nākamais klikšķis Animēt poga liek sākt jaunu animāciju.

Atjauniniet un saglabājiet kodu

Pirms mēs turpinām, nomainiet skeleta kodu savā W2A.java cilne ar kodu no saraksta 1. Saglabājiet šī loga saturu, nospiežot Ctrl + Svai atlasiet Saglabāt visu no Fails izvēlne.

Kodē Android lietotnes main.xml

Lietotnes galvenā darbība ir saistīta ar XML balstītu izkārtojumu, kas tiek saglabāts failā main.xml, un kas ir parādīts 2. sarakstā.

2. saraksts. main.xml

Pēc XML deklarācijas 2. saraksts deklarē a LinearLayout elements, kas norāda a izkārtojums (skatu grupa, kas kaut kādā veidā sakārto ietvertos skatus Android ierīces ekrānā), lai horizontāli vai vertikāli visā ekrānā sakārtotu ietvertos logrīkus (ieskaitot ligzdotos izkārtojumus).

The tags norāda vairākus atribūtus šī lineārā izkārtojuma kontrolei. Šie atribūti ietver sekojošo:

  • orientācija identificē lineāro izkārtojumu kā horizontālu vai vertikālu. Saturie logrīki ir izkārtoti horizontāli vai vertikāli, un noklusējuma orientācija ir horizontāla. "horizontāls" un "vertikāls" ir vienīgās juridiskās vērtības, kuras var piešķirt šim atribūtam.
  • izkārtojums_platums identificē izkārtojuma platumu. Juridiskās vērtības ietver "fill_parent" (lai būtu tikpat plats kā vecāks) un "wrap_content" (lai tas būtu pietiekami plašs, lai ievietotu saturu). (Pieraksti to fill_parent tika pārdēvēts par match_parent operētājsistēmā Android 2.2, taču joprojām tiek atbalstīts un plaši izmantots.)
  • izkārtojums_augstums identificē izkārtojuma augstumu. Juridiskās vērtības ietver "fill_parent" (lai būtu tikpat garš kā vecāks) un "wrap_content" (lai būtu pietiekami garš, lai ievietotu saturu).
  • smagums identificē izkārtojuma izvietojumu attiecībā pret ekrānu. Piemēram, "centrs" norāda, ka izkārtojums ekrānā jākoncentrē horizontāli un vertikāli.
  • fons identificē fona attēlu, gradientu vai vienkrāsainu. Vienkāršības labad esmu stingri kodējis heksadecimālu krāsu identifikatoru, lai apzīmētu vienmērīgu baltu fonu (#ffffff). (Krāsas parasti tiktu saglabātas krāsas.xml un atsauces no šī faila.)

The LinearLayout elements iekapsulējas ImageView un Poga elementi. Katrs no šiem elementiem norāda id atribūts, kas identificē elementu tā, lai uz to varētu atsaukties no koda. The resursa identifikators (īpaša sintakse, kas sākas ar @), kas piešķirts šim atribūtam, sākas ar @ + id priedēklis. Piemēram, @ + id / android identificē ImageView elements kā android; uz šo elementu atsaucas kods, norādot R.id.android.

Šie elementi arī precizē izkārtojums_platums un izkārtojums_augstums atribūti, lai noteiktu to satura izklāstu. Katrs atribūts tiek piešķirts wrap_content tā, lai elements parādītos dabiskā lielumā.

ImageView precizē a layout_marginBottom atribūts, lai identificētu atstarpi starp sevi un pogu, kas seko vertikāli. Vieta ir norādīta kā 10 iemērcvai no blīvuma neatkarīgi pikseļi. Tie ir virtuālie pikseļi, kurus lietotnes var izmantot, lai izkārtojuma izmērus / pozīcijas izteiktu neatkarīgi no ekrāna blīvuma.

No blīvuma neatkarīgi pikseļi

A blīvums neatkarīgi pikseļi (dip) ir vienāds ar vienu fizisko pikseļu 160 dpi ekrānā, bāzes blīvumu pieņem Android. Izpildes laikā Android pārredzami apstrādā jebkuru nepieciešamo iegremdēšanas vienību mērogošanu, pamatojoties uz faktisko izmantotā ekrāna blīvumu. Dip vienības tiek pārveidotas par ekrāna pikseļiem, izmantojot vienādojumu: pikseļi = kritumi * (blīvums / 160). Piemēram, 240 dpi ekrānā 1 iemērkšana ir vienāda ar 1,5 fiziskajiem pikseļiem. Google iesaka izmantot mērīšanas vienības, lai noteiktu lietotnes lietotāja saskarni, lai nodrošinātu lietotāja saskarnes pareizu parādīšanu dažādos ierīces ekrānos.

Jauna izkārtojuma izvēle un saglabāšana

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