Android - Jednoduché kreslení prstem #1

Java Android Android - Jednoduché kreslení prstem #1

Ukážeme si jak vytvořit jednoduchou aplikaci pro kreslení. Která se nám může hodit, když budeme chtít něco načrtnout a někomu ukázat (například při vysvětlování) nebo jen tak pro chvilky nudy.

Úvod - Instalace a nastavení IDE pro Android, Nastavení a příprava projektu

Důležité stáhněte si prosím novou verzi Eclipse 4.2 a Android SDK 20.0.3. U Eclipse je třeba smazat původní složku. A nejlépe stáhnout Eclipse for Java EE developers. Tedy tu první zde: http://www.eclipse.org/downloads/ protože obsahuje nějaké pluginy navíc, které nová verze Android SDK postrádá. SDK poté najdete zde: http://developer.android.com/sdk/index.html

Po spuštění Eclipse klepněte na Help/Install New Software... Zvolte Add a přidejte odkaz na plugin Android ADT:

https://dl-ssl.google.com/android/eclipse/

Vyberte vše a nainstalujte. Po restartu IDE ve Window/Preferen­ces klepněte na Android a pokud nebude vyplněná cesta k SDK vyberte ji. V Android SDK manager, který nyní můžete přes Eclipse spustit tlačítem s ikonkou droidu si stáhněte verzi vašeho a nejnovějšího Androidu a případně nějaké drivery na USB debugging a další co uznáte za vhodné. V Android Virtual Device Manager pak zkontrolujte zda jsou nějaké Emulátory pokud ne alespoň ty dva si přidejte. Ať je jak odlazovat, když nebude mobil po ruce.

Začneme jako vždy vytvořením projektu. Zvolíme Android Application project.

Application Name a Project Name slouží jak je zřejmé k pojmenování projektu. Já použil AEPaint (Android Easy Paint).
Zajímavější je Package Name. IDE nám hlásí, že si je máme přejmanovat. Jedná se vlastně o podsložku, která je na mobilu umístěna v interní paměti (pokud si nevynutíte její přesunutí), ve které jsou uloženy data aplikace. Pro zajímavost se nachází v /data/data/pac­kage.name. Píše se v lowercase a jednotlivá slova se oddělují tečkou. První se uvádí koncovka webu, na kterém je aplikace umístěna nebo pokud jej nemá tak doménová koncovka pro danou zemi. Slouží to k rozlišení aplikací, má se tak předejít kolizi jmen.

Já osobně jsem si stáhnul spoustu SDK a snažím se zkoušet co nejvíce pracovat a objevovat to nejnovější. Ovšem momentálně používám Android 4.0.3 a 2.3.3. V nové verzi 4.1 nejsou z hlediska vývojářského až tak velké změny. Nevětší zlom je někdy ve verzi 3.3 a 4.0 je možné využívat nové prvky a přepracované aktivní prvky. Musí se ovšem zvýšit verze minimální SDK.

Nám pro naše potřeby stačí jako minimum 2.3.3 a na jaké verzi to chcete odlaďovat a pro kterou to má být to si vyberte podle svého telefonu nebo emulátoru.

V další fázy lze nastavit ikonu. Můžete buď z předpřipravených klipartů nebo použít text či si nějakou stáhnout například z www.iconarchive.com a tu pak použít. Ostatní možnosti stojí spíše za vyzkoušení než za obkecávání :)

Na další stránce výběru si můžeme vybrat přednastavenou šablonu activity. Pro náš projekt ponecháme výchozí BlankActivity

Poslední nastavení projektu můžeme také nechat výchozí. Jedná se o nastavení activity. Vlastně layoutu a hlavní třídy programu. Můžete si proklikat Navigation Type, tady zjistíte, že tyto "vychytávky" lze použít právě pouze v nových verzích Android OS. Pokud ji budete chtít přejmenovat, je vhodné zachovat klíčové slovo main označující, že je hlavní

Po odklepnutí Finish nám IDE vytvoří základní rozložení activity a ve složce src hlavní třída.

activity_main.xml je soubor, ve kterém se nechází XML tagy nastavující pozici a vlastnosti viditelných a aktivních prvků aplikace. MainActivity.java je hlavní třída aplikace. Ve vložce values je soubor string.xml kam je zvykem psát texty, které se pak zobrazují v aplikaci. Když už jsme v tomto souboru tak hodnotu title_activity_ma­in změníme na název naší aplikace. Tyto soubory si otevřeme, protože s nimi budeme nejčastěji pracovat.

Nyní si preventivně zkusíme aplikace debuggovat, abychom si ověřili, že nám live debugging nebo emulátor správně funguje. Klepneme proto na tlačítko play a při dotazu zvolíme, že buildujeme Android Application. Ohledně logování klidně nechte povolené.

Beru, že je všechno v pohodě :) Případně pište do fóra a pošéfíme :)

Pro info a shrnutí:

Layout, přidávání aktivních prvků atd. se provádí v activity_main.xml souboru.
Kód, logika, události, metody aj. na co jste zvyklí z Javy je v MainActivity.java souboru.
A všechny texty se píší do string.xml souboru. Pak se v návrhu layoutu - v tom xml volají jako @string/jmeno_strin­gu a v kódu .java souboru getString(R.strin­g.jmeno_strin­gu)

Teď označením a stiskem delete smažeme z layoutu nápis Hello World A vrhneme se na naši aplikaci.

Kódění - Získání a zobrazení souřadnic dotyku

V prvním kroku si vyzkoušíme zobrazit souřadnice stisku. Přidáme do layoutu z palety Form Widgets prvek TextView. Napravo si můžete projet jeho vlastnosti a podívat se do čistého XML co nám to vytvořilo. Poté jej někam umístěte (například do spodní části) a přepněte se do hlavní třídy.

Vytvoříme třídní proměnnou reprezentující objekt TextView, který jsme si práve přidali a ve kterém zobrazíme dané souřadnice.

private TextView coords;

Vždy když uvidíte vykřičníček tak klepnutím na něj naimportuje IDE automaticky potřebnou součást. V tomto případě nám přibude:

import android.widget.TextView;

Poté do metody onCreate přidáme deklaraci.

this.coords = (TextView)this.findViewById(R.id.textView1);

Nyní přidáme událost stisku. Je to samostatná metoda, umístíme ji například pod metodu onCreateOption­sMenu, která je v dané třídě poslední. Pozn. @Override indikuje, že přepisujeme existující metodu.

@Override
public boolean onTouchEvent(MotionEvent event) {
        // Získání souřadnic
        float xPos = event.getX();
        float yPos = event.getY();

        // Zobrazení na textView
        this.coords.setText(getString(R.string.coords) + (int)xPos + "x" + (int)yPos);

        return true;
}

Souřadnice jsou dat. typu float, nezkoumal jsem proč. Při výpisu je lepší je pro lepší vzhled je přetypovat.

Pro ukázku použití textu jsem vytvořil ve string.xml nový prvek s názvem coords a hodnotou "Souřadnice: ". V layoutu jsem použil android:text="@strin­g/coords"

Nyní si opět spustíme a vyzkoušíme jezdit prstem a sledovat souřadnice.

Pokud vše funguje jak má, tedy při pohybu po obrazovce mobilu prstem se mění souřadnice, pak můžeme přejít k malování.

Pokračování zde: http://www.itnetwork.cz/…rstem-kodeni


 

Stáhnout

Staženo 830x (641.5 kB)
Aplikace je včetně zdrojových kódů v jazyce Android Java

 

  Aktivity (1)

Článek pro vás napsal David Jančík [sczdavos]
Avatar
Autor je vášnivý programátor v .NET C# a PHP. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.

Jak se ti líbí článek?
Celkem (2 hlasů) :
55555


 


Miniatura
Předchozí článek
Android - Náhodné číslo
Miniatura
Všechny články v sekci
Programování Android aplikací v Javě

 

 

Komentáře

Avatar
rainbof
Člen
Avatar
rainbof:

zmatene a nevysvetlene. Chtelo by to přidat teorii o tom co a proč jak dělá. například já s Javou začínám a trošku vysvětlení by se hodilo

Editováno 7.4.2013 13:54
 
Odpovědět 7.4.2013 13:53
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na rainbof
David Čápka:

Tutoriál není určený pro začátečníky, začátky Javy máš podrobně vysvětlené v sekci Java :)

Odpovědět  +4 7.4.2013 13:55
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
DeamoniX
Člen
Avatar
DeamoniX:

Nefunguje mi @Override mam tam možnost to jen odebrat a když aplikaci spustím, tak to souřadnice nezobrazuje... díky

 
Odpovědět 15.8.2013 20:52
Avatar
Richard Závodný:

To "sdraco" hele mi nejde stáhnout ten eclipse. Pomůžeš mi s tím ?

Už mi to funguje.

Editováno 22.2.2014 16:52
 
Odpovědět 22.2.2014 16:51
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na Richard Závodný
Honza Bittner:

Skoro nikdo nemá čas ani náladu pomoc ti stáhnout Eclipse, natož sdraco...

Odpovědět  +5 22.2.2014 16:53
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
Odpovídá na Honza Bittner
Richard Závodný:

Přečetl jsi už že mi to jede ?

 
Odpovědět 22.2.2014 17:31
Avatar
Daniel Zábojník:

Dobrý den, a kam mám vložit @Override
public boolean onTouchEvent(Mo­tionEvent event) {
// Získání souřadnic
float xPos = event.getX();
float yPos = event.getY();

// Zobrazení na textView
this.coords.set­Text(getStrin­g(R.string.co­ords) + (int)xPos + "x" + (int)yPos);

return true;

A další private TextView coords;
Předem Děkuji..!

Odpovědět 8.3.2014 8:14
Nesnáším psaní { } ale bohužel jsou potřeba a vyhnout se jim nejde!
Avatar
Vilém Zouhar
Redaktor
Avatar
Vilém Zouhar:

Ahoj, proč je nutné psát do layoutu
android:text="@strin­g/coords ?

 
Odpovědět 22.3.2014 15:01
Avatar
polemes
Redaktor
Avatar
Odpovídá na Vilém Zouhar
polemes:

Nauc se nejdriv tutorialy od Jiří Hlavík a pak pochopis :)

Odpovědět  +1 13. ledna 14:50
5 + 5 = 1010
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.