Programovanie

Android Studio pre začiatočníkov, 2. časť: Preskúmajte a kódujte aplikáciu

Aktualizované: január 2020.

V 1. časti úvodu tohto článku pre začiatočníkov k Android Studio ste si nastavili Android Studio vo svojom vývojovom prostredí a oboznámili ste sa s používateľským rozhraním. Teraz v časti 2 kódujete svoju prvú aplikáciu.

Animovaná mobilná aplikácia pozostáva z jednej aktivity, ktorá predstavuje robotickú postavu Androidu spoločnosti Google a tlačidlo na animáciu postavy. Kliknutie na tlačidlo spôsobí, že znak postupne zmení farbu zo zelenej na červenú na modrú a potom späť na zelenú. Aj keď táto aplikácia nie je zvlášť užitočná, jej napísanie vám pomôže pohodlne používať Android Studio. V časti 3 vytvoríte a spustíte aplikáciu pomocou emulátora zariadenia s Androidom a tabletu Kindle Fire.

Upozorňujeme, že táto séria bola od tohto písania aktualizovaná pre Android Studio 3.2.1, aktuálne stabilné vydanie.

Okná Projekt a editor Android Studio

Hlavné okno aplikácie Android Studio som predstavil na konci časti 1. Toto okno je rozdelené do niekoľkých oblastí, vrátane okna projektu, kde identifikujete súbory zdrojov aplikácie, a rôznych okien editora, do ktorých napíšete kód a zadáte zdroje pre mobilné aplikácie. v Android Studio. Okno Projekt a okno editora sú zobrazené na obrázku 1.

Jeff Friesen

Zvýrazní sa okno Projekt W2A, čo je názov aplikácie W2A.java zdrojový súbor (hoci .java prípona súboru nie je zobrazená). Zodpovedajúce W2A je okno editora, do ktorého sa dostanete dvojitým kliknutím W2A v okne Projekt. Okno editora odhaľuje aktuálny obsah súboru, v tomto prípade hlavný zdrojový kód Java pre hlavnú činnosť aplikácie.

Každé okno editora je spojené s kartou. Napríklad, W2AOkno editora je spojené s W2A.java tab. Druhá záložka označená ako main.xml (predvolené rozloženie pre hlavnú činnosť aplikácie založené na XML). Kliknutím z okna editora prechádzate z jedného okna editora do druhého.

stiahnuť Získajte kód Stiahnite si zdrojový kód ukážkovej aplikácie pre Android: W2A.java. Vytvoril Jeff Friesen pre JavaWorld.

Ukážková aplikácia pre Android

Ukážka aplikácie (W2A.java) pozostáva z hlavnej aktivity, ktorá zobrazuje znak robota Android, a tlačidla. Keď používateľ stlačí tlačidlo, robot animuje prostredníctvom série farieb. V tejto časti preskúmame zdrojový kód a zdroje aktivity.

Preskúmajte a kódujte ukážkovú aplikáciu pre Android

Zdrojový kód aktivity je uložený v súbore W2A.java, uvedený v zozname 1.

Zoznam 1. W2A.java

 balíček ca.javajeff.w2a; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; importovať android.os.Bundle; import android.view.View; importovať android.widget.Button; import android.widget.ImageView; verejná trieda W2A rozširuje aktivitu {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 (); final Button btnAnimate = (Button) findViewById (R.id.animate); View.OnClickListener ocl; ocl = nový View.OnClickListener () {@Override public void onClick (View v) {androidAnimation.stop (); androidAnimation.start (); }}; btnAnimate.setOnClickListener (ocl); }} 

The W2A.java súbor začína a vyhlásenie o balíku, ktorý pomenuje balík (ca.javajeff.w2a), v ktorom je uložený W2A trieda. Nasleduje séria príkazov na import pre rôzne typy API systému Android. Ďalej kód popisuje W2A triedy, ktorá sa rozširuje android.app.Activity.

W2A najskôr vyhlasuje androidAnimation inštančné pole typu android.graphics.drawable.AnimationDrawable. Predmety typu AnimationDrawable opísať animácie po jednotlivých snímkach, v ktorých je aktuálna kresba nahradená nasledujúcou kresbou v sekvencii animácií.

Čo je kresba?

A vyťahovateľný je niečo, čo sa dá nakresliť, napríklad obrázok. AnimationDrawable nepriamo rozširuje abstrakt android.graphics.drawable.Drawable triedy, čo je všeobecná abstrakcia pre výkres.

Metóda onCreate ()

Celá práca aplikácie sa odohráva v W2Aje prvoradý onCreate (balík) metóda: nie sú potrebné žiadne ďalšie metódy, čo pomáha udržiavať túto aplikáciu jednoduchú.

onCreate (balík) prvý vyvolá svoju metódu nadtriedy s rovnakým názvom, čo je pravidlo, ktoré musia dodržiavať všetky metódy prevažujúcej aktivity.

Táto metóda sa potom vykoná setContentView (R.layout.main) na vytvorenie používateľského rozhrania aplikácie. R.layout.main je identifikátor (ID) prostriedku aplikácie, ktorý sa nachádza v samostatnom súbore. Toto ID interpretujete nasledovne:

  • R je názov triedy, ktorá sa generuje pri vytváraní aplikácie. Táto trieda je pomenovaná R pretože jeho obsah identifikuje rôzne druhy zdrojov aplikácie vrátane rozložení, obrázkov, reťazcov a farieb.
  • rozloženie je názov triedy, ktorá je vnorená do R. Zdroj aplikácie, ktorého ID je uložené v tejto triede, popisuje konkrétny prostriedok rozloženia. Každý druh prostriedku aplikácie je priradený k vnorenej triede, ktorá je pomenovaná podobným spôsobom. Napríklad, struna identifikuje prostriedky reťazca.
  • hlavný je názov súboru intkonštanta na základe deklarovaná v rámci rozloženie. Toto ID prostriedku identifikuje hlavný prostriedok rozloženia. Konkrétne hlavný označuje a main.xml súbor, ktorý ukladá informácie o rozložení hlavnej aktivity. hlavný je W2Ajediný zdroj rozloženia.

Prihrávka R.layout.main do Činnosťje void setContentView (int layoutResID) metóda dáva pokyn systému Android, aby vytvoril obrazovku používateľského rozhrania pomocou informácií o rozložení uložených v priečinku main.xml. V zákulisí Android vytvára komponenty používateľského rozhrania opísané v main.xml a umiestni ich na obrazovku zariadenia podľa špecifikácie main.xmlúdaje o rozložení.

Obrazovka je založená na názory (abstrakcie komponentov používateľského rozhrania) a zobraziť skupiny (zobrazenia, ktoré zoskupujú súvisiace komponenty používateľského rozhrania). Názory sú inštancie tried, ktoré podtriedu android.view.View triedy a sú analogické s komponentami AWT / Swing. Zobraziť skupiny sú inštancie tried, ktoré podtriedia abstrakt android.view.ViewGroup triedy a sú obdobou kontajnerov AWT / Swing. Android označuje konkrétne zobrazenia (napríklad tlačidlá alebo číselník) ako miniaplikácie.

Pokračovanie, onCreate (balík) vykonáva ImageView androidImage = (ImageView) findViewById (R.id.android);. Toto vyhlásenie najskôr volá vyhliadkaje Zobraziť findViewById (int id) metóda na vyhľadanie android.widget.ImageView prvok deklarovaný v main.xml a označené ako Android. Konkretizuje sa ImageView a inicializuje ho na hodnoty deklarované v main.xml spis. Príkaz potom uloží odkaz na tento objekt v lokálnej premennej androidImage.

ImageView a AnimationDrawable

Ďalej androidImage.setBackgroundResource (R.drawable.android_animate); vyhlásenie sa dovoláva ImageViewje zdedený (od vyhliadka) void setBackgroundResource (int resID) metóda, nastavenie pozadia pohľadu na zdroj identifikovaný pomocou resID. The R.drawable.android_animate argument identifikuje súbor XML s názvom android_animate.xml (prezentované neskôr), v ktorom sú uložené informácie o animácii a ktoré sú uložené v priečinku resje vyťahovateľný podadresár. The setBackgroundResource () odkazy na volanie androidImage pohľad na postupnosť obrázkov popísaných v android_animate.xml, ktoré budú zakreslené z tohto pohľadu. Počiatočný obrázok je nakreslený ako výsledok tohto volania metódy.

ImageView umožňuje aplikácii animovať sled výkresov volaním AnimationDrawable metódy. Predtým, ako to aplikácia dokáže, musí získať ImageViewje AnimationDrawable. The androidAnimation = (AnimationDrawable) androidImage.getBackground (); príkaz na priradenie, ktorý nasleduje, splní túto úlohu vyvolaním ImageViewje zdedený (od vyhliadka) Drawable getBackground () metóda. Táto metóda vracia AnimationDrawable za dané ImageView, ktorá je následne pridelená androidAnimation lúka. The AnimationDrawable inštancia sa používa na spustenie a zastavenie animácie, procesu, ktorý v krátkosti popíšem.

Nakoniec onCreate (balík) vytvára Animovať tlačidlo. Vyvoláva to findByViewId (int) na získanie informácií o tlačidle z main.xml, potom vytvorí inštanciu android.widget.Button trieda.

Potom zamestnáva vyhliadka trieda je vnorená onClickListener rozhranie na vytvorenie objektu poslucháča. Tento objekt void onClick (Zobraziť v) metóda sa vyvolá vždy, keď používateľ klikne na tlačidlo. Poslucháč je zaregistrovaný u jeho Tlačidlo objekt zavolaním vyhliadkaje void setOnClickListener (poslucháč AdapterView.OnClickListener) metóda.

Ak chcete zastaviť, spustiť animáciu, AnimovaťVyvoláva poslucháč kliknutí androidAnimation.stop (); nasledovaný androidAnimation.start ();. The stop () metóda sa volá skôr štart () aby sa zabezpečilo, že následné kliknutie na ikonu Animovať tlačidlo spôsobí začatie novej animácie.

Aktualizujte a uložte kód

Skôr ako budeme pokračovať, nahraďte hlavný kód vo vašom W2A.java karta s kódom z výpisu 1. Stlačením uložíte obsah tohto okna Ctrl + S, alebo vyberte Uložiť všetko z Súbor Ponuka.

Kóduje aplikáciu main.xml aplikácie pre Android

Hlavná činnosť aplikácie je spojená s rozložením založeným na XML, ktoré je uložené v súbore main.xml, a ktorý je uvedený v zozname 2.

Zoznam 2. main.xml

Po vyhlásení XML zoznam 2 deklaruje a LinearLayout prvok, ktorý určuje a rozloženie (skupina zobrazení, ktorá nejakým spôsobom usporiada obsiahnuté zobrazenia na obrazovke zariadenia Android) na usporiadanie obsiahnutých widgetov (vrátane vnorených rozložení) buď horizontálne alebo vertikálne cez obrazovku.

The Značka určuje niekoľko atribútov pre riadenie tohto lineárneho rozloženia. Medzi tieto atribúty patria:

  • orientácia identifikuje lineárne rozloženie ako horizontálne alebo vertikálne. Obsiahnuté widgety sú rozložené vodorovne alebo zvisle a predvolená orientácia je vodorovná. "horizontálne" a "vertikálne" sú jediné právne hodnoty, ktoré je možné priradiť k tomuto atribútu.
  • layout_width identifikuje šírku rozloženia. Medzi právne hodnoty patrí „fill_parent“ (byť tak široký ako rodič) a „wrap_content“ (aby bola dostatočne široká na to, aby ohraničila obsah). (Poznač si to fill_parent bol premenovaný na match_parent v Androide 2.2, ale stále je podporovaný a široko používaný.)
  • rozloženie_výška určuje výšku rozloženia. Medzi právne hodnoty patrí „fill_parent“ (byť rovnako vysoký ako rodič) a „wrap_content“ (aby bola dostatočne vysoká na to, aby ohraničila obsah).
  • gravitácia identifikuje, ako je rozloženie umiestnené vzhľadom na obrazovku. Napríklad, „stred“ určuje, že rozloženie by malo byť na obrazovke vycentrované horizontálne a vertikálne.
  • pozadie identifikuje obrázok na pozadí, prechod alebo plnú farbu. Pre jednoduchosť som napevno zakódoval hexadecimálny identifikátor farby, ktorý označuje pevné biele pozadie (#ffffff). (Farby by sa normálne skladovali v colors.xml a odkazované z tohto súboru.)

The LinearLayout prvok zapuzdruje ImageView a Tlačidlo prvkov. Každý z týchto prvkov špecifikuje id atribút, ktorý identifikuje prvok tak, aby na neho bolo možné odkazovať z kódu. The identifikátor zdroja (špeciálna syntax, ktorá sa začína na @) priradené k tomuto atribútu začína na @ + id predpona. Napríklad, @ + id / android identifikuje ImageView prvok ako Android; na tento prvok sa odkazuje z kódu zadaním R.id.android.

Tieto prvky tiež určujú layout_width a rozloženie_výška atribúty na určovanie spôsobu ich obsahu. Každý atribút je priradený zabaliť_obsah takže sa prvok objaví v prirodzenej veľkosti.

ImageView špecifikuje a layout_marginBottom atribút na identifikáciu oddeľovača medzery medzi sebou a tlačidlom, ktoré nasleduje vertikálne. Miesto je určené ako 10 poklesyalebo pixely nezávislé od hustoty. Toto sú virtuálne pixely, ktoré aplikácie môžu používať na vyjadrenie rozmerov / pozícií rozloženia spôsobom nezávislým od hustoty obrazovky.

Pixely nezávislé od hustoty

A pixel nezávislý od hustoty (dip) sa rovná jednému fyzickému pixelu na obrazovke s rozlíšením 160 dpi, čo je základná hustota predpokladaná systémom Android. Za behu systému Android transparentne spracováva všetky stupnice požadovaných jednotiek dipu na základe skutočnej hustoty používanej obrazovky. Dip jednotky sa prevádzajú na pixely obrazovky pomocou rovnice: pixely = poklesy * (hustota / 160). Napríklad na obrazovke s rozlíšením 240 dpi sa 1 ponor rovná 1,5 fyzickému pixelu. Spoločnosť Google odporúča používať dipovacie jednotky na definovanie používateľského rozhrania vašej aplikácie, aby sa zabezpečilo správne zobrazenie používateľského rozhrania na rôznych obrazovkách zariadení.

Výber a uloženie nového rozloženia

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