Aktualizováno: leden 2020.
V části 1 úvodu tohoto článku pro Android Studio pro začátečníky jste ve svém vývojovém prostředí nastavili Android Studio a seznámili se s uživatelským rozhraním. Nyní v části 2 budete kódovat svou první aplikaci.
Animovaná mobilní aplikace se skládá z jedné aktivity, která představuje robotickou postavu Google pro Android a tlačítko pro animaci postavy. Klepnutí na tlačítko způsobí, že postava postupně změní barvu ze zelené na červenou na modrou a poté zpět na zelenou. I když aplikace není nijak zvlášť užitečná, její psaní vám pomůže pohodlně používat Android Studio. V části 3 vytvoříte a spustíte aplikaci pomocí emulátoru zařízení Android a tabletu Kindle Fire.
Všimněte si, že tato řada byla aktualizována pro Android Studio 3.2.1, aktuální stabilní vydání od tohoto psaní.
Okna projektu a editoru Android Studio
Na konci části 1 jsem představil hlavní okno Android Studio. Toto okno je rozděleno do několika oblastí, včetně okna projektu, kde identifikujete zdrojové soubory aplikace, a různých oken editoru, kde napíšete kód a zadáte zdroje pro mobilní aplikace. v Android Studio. Okno Projekt a okno editoru jsou zobrazeny na obrázku 1.
Jeff FriesenZvýrazní se okno projektu W2A, což je název aplikace W2A.java
zdrojový soubor (i když .Jáva
přípona souboru není zobrazena). Souhlasí s W2A je okno editoru, do kterého se dostanete poklepáním W2A v okně Projekt. Okno editoru odhaluje aktuální obsah souboru, v tomto případě základní zdrojový kód Java pro hlavní aktivitu aplikace.
Každé okno editoru je spojeno s kartou. Například, W2AOkno editoru je spojeno s W2A.java záložka. Druhá záložka označená jako main.xml (výchozí rozložení založené na XML pro hlavní aktivitu aplikace) je také zobrazeno. Přesouváte se z jednoho okna editoru do druhého kliknutím na kartu okna.
stáhnout Získat kód Stáhněte si zdrojový kód ukázkové aplikace pro Android: W2A.java. Vytvořil Jeff Friesen pro JavaWorld.Ukázková aplikace pro Android
Ukázková aplikace (W2A.java) se skládá z hlavní aktivity, která zobrazuje znak robota Android a tlačítko. Když uživatel stiskne tlačítko, robot animuje pomocí řady barev. V této části prozkoumáme zdrojový kód a zdroje aktivity.
Prozkoumejte a kódujte ukázkovou aplikaci pro Android
Zdrojový kód aktivity je uložen v souboru W2A.java
, uvedený v seznamu 1.
Výpis 1. W2A.java
balíček ca.javajeff.w2a; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; importovat android.os.Bundle; importovat android.view.View; import android.widget.Button; import android.widget.ImageView; veřejná třída W2A rozšiřuje 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
soubor začíná a výpis balíku, který balíček pojmenuje (ca.javajeff.w2a
), který ukládá W2A
třída. Poté následuje řada příkazů k importu pro různé typy rozhraní Android Android. Dále kód popisuje W2A
třída, která se rozšiřuje android.app.Activity
.
W2A
nejprve deklaruje androidAnimation
instance pole typu android.graphics.drawable.AnimationDrawable
. Objekty typu AnimationDrawable
popsat animace snímek po snímku, ve kterém je aktuální kresba nahrazena další kreslicí v sekvenci animace.
Co je kresba?
A tažný je něco, co lze nakreslit, například obrázek. AnimationDrawable
nepřímo rozšiřuje abstrakt android.graphics.drawable.Drawable
třída, což je obecná abstrakce pro kreslicí.
Metoda onCreate ()
Celá práce aplikace se odehrává v W2A
převažuje onCreate (balíček)
metoda: nejsou vyžadovány žádné další metody, což pomáhá udržovat tuto aplikaci jednoduchou.
onCreate (balíček)
first invokes its same-named superclass method, a rule that must be followed by all overriding activity methods.
Tato metoda se poté provede setContentView (R.layout.main)
k vytvoření uživatelského rozhraní aplikace. R.layout.main
je identifikátor (ID) pro prostředek aplikace, který je umístěn v samostatném souboru. Toto ID interpretujete následovně:
R
je název třídy, která se generuje při vytváření aplikace. Tato třída se jmenujeR
protože jeho obsah identifikuje různé druhy prostředků aplikace, včetně rozvržení, obrázků, řetězců a barev.rozložení
je název třídy, která je vnořená uvnitřR
. Prostředek aplikace, jehož ID je uloženo v této třídě, popisuje konkrétní prostředek rozložení. Každý druh prostředku aplikace je přidružen k vnořené třídě pojmenované podobným způsobem. Například,tětiva
identifikuje prostředky řetězce.hlavní
je jméno uživateleint
konstanta založená na deklaraci uvnitřrozložení
. Toto ID zdroje identifikuje hlavní prostředek rozložení. Konkrétněhlavní
označuje amain.xml
soubor, který ukládá informace o rozložení hlavní aktivity.hlavní
jeW2A
je jediný prostředek rozložení.
Přihrávka R.layout.main
na Aktivita
je void setContentView (int layoutResID)
metoda instruuje Android, aby vytvořil obrazovku uživatelského rozhraní pomocí informací o rozložení uložených v main.xml
. V zákulisí Android vytváří komponenty uživatelského rozhraní popsané v main.xml
a umístí je na obrazovku zařízení podle specifikace main.xml
data rozvržení.
Obrazovka je založena na pohledy (abstrakce komponent uživatelského rozhraní) a zobrazit skupiny (pohledy, které seskupují související součásti uživatelského rozhraní). Pohledy jsou instance tříd, které podtřídu android.view.View
třídy a jsou analogické komponentům AWT / Swing. Zobrazit skupiny jsou instance tříd, které podtřídu abstraktu android.view.ViewGroup
třídy a jsou obdobou kontejnerů AWT / Swing. Android označuje konkrétní zobrazení (například tlačítka nebo číselníky) jako widgety.
Pokračování, onCreate (balíček)
vykonává ImageView androidImage = (ImageView) findViewById (R.id.android);
. Toto prohlášení nejprve volá Pohled
je Zobrazit findViewById (int id)
metoda k nalezení android.widget.ImageView
prvek deklarovaný v main.xml
a označeny jako Android
. Vytváří to instanci ImageView
a inicializuje jej na hodnoty deklarované v main.xml
soubor. Příkaz poté uloží odkaz na tento objekt v místní proměnné androidImage
.
ImageView a AnimationDrawable
Dále androidImage.setBackgroundResource (R.drawable.android_animate);
příkaz vyvolá ImageView
je zděděno (od Pohled
) void setBackgroundResource (int resID)
metoda, nastavení pozadí pohledu na zdroj identifikovaný pomocí resID
. The R.drawable.android_animate
argument identifikuje soubor XML s názvem android_animate.xml
(představeno později), který ukládá informace o animaci a který je uložen v res
je tažný
podadresář. The setBackgroundResource ()
odkazy na volání androidImage
pohled na posloupnost obrázků popsaných uživatelem android_animate.xml
, který bude vykreslen v tomto pohledu. Počáteční obrázek je vykreslen jako výsledek tohoto volání metody.
ImageView
umožňuje aplikaci animovat sekvenci výkresů voláním AnimationDrawable
metody. Než to aplikace dokáže, musí ji získat ImageView
je AnimationDrawable
. The androidAnimation = (AnimationDrawable) androidImage.getBackground ();
následující příkaz přiřazení splní tento úkol vyvoláním ImageView
je zděděno (od Pohled
) Drawable getBackground ()
metoda. Tato metoda vrací AnimationDrawable
pro dané ImageView
, který je následně přidělen k androidAnimation
pole. The AnimationDrawable
instance se používá ke spuštění a zastavení animace, procesu, který krátce popíšu.
Konečně, onCreate (balíček)
vytváří Animovat knoflík. Vyvolává to findByViewId (int)
získat informace o tlačítku z main.xml
, pak vytvoří instanci android.widget.Button
třída.
Poté zaměstnává Pohled
třída je vnořená onClickListener
rozhraní k vytvoření objektu posluchače. Tento objekt void onClick (Zobrazit v)
metoda je vyvolána vždy, když uživatel klikne na tlačítko. Posluchač je registrován u svého Knoflík
objekt voláním Pohled
je void setOnClickListener (posluchač AdapterView.OnClickListener)
metoda.
Chcete-li zastavit a poté spustit animaci, Animovatvyvolá posluchač kliknutí androidAnimation.stop ();
následován androidAnimation.start ();
. The stop()
metoda se volá dříve Start()
zajistit, aby následné kliknutí na Animovat tlačítko způsobí zahájení nové animace.
Aktualizujte a uložte kód
Než budeme pokračovat, nahraďte základní kód ve vašem W2A.java karta s kódem ze seznamu 1. Stisknutím tlačítka uložte obsah tohoto okna Ctrl + S, nebo vyberte Uložit vše z Soubor Jídelní lístek.
Kódování main.xml aplikace pro Android
Hlavní aktivita aplikace je spojena s rozložením založeným na XML, které je uloženo v souboru main.xml
, a který je uveden v seznamu 2.
Výpis 2. main.xml
Po deklaraci XML výpis 2 deklaruje a Lineární rozvržení
prvek, který určuje a. element that specifies a rozložení (skupina zobrazení, která nějakým způsobem uspořádá obsažená zobrazení na obrazovce zařízení Android) pro uspořádání obsažených widgetů (včetně vnořených rozvržení) buď vodorovně nebo svisle přes obrazovku.
The tag určuje několik atributů pro ovládání tohoto lineárního rozvržení. Mezi tyto atributy patří následující:
orientace
identifikuje lineární rozložení jako horizontální nebo vertikální. Obsažené widgety jsou rozloženy vodorovně nebo svisle a výchozí orientace je vodorovná."horizontální"
a"vertikální"
jsou jediné legální hodnoty, které lze tomuto atributu přiřadit.layout_width
identifikuje šířku rozložení. Mezi legální hodnoty patří„fill_parent“
(být tak široký jako rodič) a"obsah zábal"
(aby byla dostatečně široká, aby obsahovala obsah). (Všimněte si, žefill_parent
byl přejmenován namatch_parent
v systému Android 2.2, ale je stále podporován a široce používán.)rozložení_výška
určuje výšku rozvržení. Mezi legální hodnoty patří„fill_parent“
(být stejně vysoký jako rodič) a"obsah zábal"
(aby byla dostatečně vysoká, aby obsahovala obsah).gravitace
identifikuje, jak je rozložení umístěno vzhledem k obrazovce. Například,"centrum"
určuje, že rozložení by mělo být na obrazovce vycentrováno vodorovně a svisle.Pozadí
identifikuje obrázek na pozadí, přechod nebo plnou barvu. Pro zjednodušení jsem napevno zakódoval hexadecimální identifikátor barvy, který označuje pevné bílé pozadí (#ffffff
). (Barvy by byly normálně uloženy vcolors.xml
a odkazováno z tohoto souboru.)
The Lineární rozvržení
prvek zapouzdřuje ImageView
a Knoflík
elementy. Každý z těchto prvků určuje id
atribut, který identifikuje prvek tak, aby na něj bylo možné odkazovat z kódu. The identifikátor zdroje (speciální syntaxe, která začíná na @
) přiřazené k tomuto atributu začíná na @ + id
předpona. Například, @ + id / android
identifikuje ImageView
prvek jako Android
; na tento prvek se odkazuje z kódu zadáním R.id. android
.
Tyto prvky také specifikují layout_width
a rozložení_výška
atributy určující, jak je rozložen jejich obsah. Každý atribut je přiřazen obsah zábal
takže se prvek objeví v jeho přirozené velikosti.
ImageView
specifikuje a layout_marginBottom
atribut k identifikaci oddělovače mezery mezi sebou a tlačítkem, které následuje svisle. Prostor je zadán jako 10 poklesynebo pixely nezávislé na hustotě. Jedná se o virtuální pixely, které aplikace mohou použít k vyjádření rozměrů / pozic rozvržení způsobem nezávislým na hustotě obrazovky.
Pixely nezávislé na hustotě
A pixel nezávislý na hustotě (dip) je ekvivalentní jednomu fyzickému pixelu na obrazovce s rozlišením 160 dpi, což je základní hustota předpokládaná systémem Android. Za běhu Android transparentně zpracovává jakékoli měřítko požadovaných jednotek dip na základě skutečné hustoty používané obrazovky. Dip jednotky jsou převedeny na pixely obrazovky pomocí rovnice: pixely = poklesy * (hustota / 160). Například na obrazovce s rozlišením 240 dpi se 1 pokles rovná 1,5 fyzickým pixelům. Google doporučuje používat dipovací jednotky k definování uživatelského rozhraní vaší aplikace, aby bylo zajištěno správné zobrazení uživatelského rozhraní na různých obrazovkách zařízení.