Android - Náhodné číslo

Java Android Android - Náhodné číslo

Než se pustíme do tvorby generátoru náhodných čísel pro android, nejprve se samy sebe zeptejte zda jste již nainstalovali Android SDK a funguje Vám ladění přes USB nebo přes emulátor.
Pokud ne, nevadí, vemte očkem tento článek http://www.itnetwork.cz/…ych-predstav

No a teď, když už jste připravení tak se pustíme do samotného kódění.

Pozn. použité IDE - Eclipse

Nejprve založíme Android project (New/Project/An­droid Project), jelikož nový android 4 není zatím hojně rozšířený vytvoříme program pro verzi 2.3.3 Verze určují minimální potřebné jádro.

Po založení projektu se nám vytvoří základ třídy resp. Activity

package random.number;

import android.app.Activity;

public class RandomNumberActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        }
}

Nejprve si však poskládáme komponenty a nastavíme jim základní vlastnosti.
Rozklepnutím složky res a následně otevřením main.xml nacházející se v layout.

Ze záložky layouts přidáme nejprve tableLayout, do kterého umístíme postupně do prvního řádku 2x textView (z FormWidgets), které roztáhneme, tak aby každý zaujímal půl řádku. Do druhého řádku vložíme 2x editText (z textFields) typu number Signed (celé číslo se znaménkem). Ostatní řádky můžeme smazat.

Pod tableLayout vložíme verticalLinear­Layout a do něj tlačítko (Button z formWidgets) a largeTextView ze stejné záložky.

V souboru strings.xml ve složce values vytvoříme pro tlačítko a popisky text. Jednoduše přidáme rozumně pojmenované stringy s příslušným textem. Ty poté přiřadíme klepnutím na komponentu pravým tlačítkem/Edit text - vybrání textu.

Když se přepnete z grafického sestavování na textové (dole Graphical Layout|main.xml) můžete se podívat na zdrojový kód. Vypadá nějak takto:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TableLayout
        android:id="@+id/tableLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.94"
                <!-- pomocí @string přistupujeme k souboru string.xml, kde se nacházejí popisky -->
                android:text="@string/min" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.93"
                android:text="@string/max" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <EditText
                android:id="@+id/editText1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.23"
                android:inputType="numberSigned" />

            <EditText
                android:id="@+id/editText2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                android:inputType="numberSigned" />
        </TableRow>


    </TableLayout>

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >


        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/generate" />


        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            <!-- grafity upravuje zarovnání (v tomto případě vystředění textu) -->
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceLarge" />

    </LinearLayout>

</LinearLayout>

Vyzkoušejte si zadat "android:", stisknout ctrl+space a podívat se na nějaké zajímavé příkazy.

Pokud tedy máme layout naangažovaný dle svých představ můžeme se vrhnout na kódění (v praxi pak jen naházíte komponenty, naprogramujete a zaobírat se tím dále budete až na konci, ale my to bereme raději postupně ať v tom není guláš :))

Budeme tedy operovat s daty z textových polí, pomocí tlačítka se vykoná akce a na textview se vypíše náhodné číslo.
Takže si nadeklarujeme základní proměnné.

Do třídy activity (hned zkraje) přidáme násladující proměnné:

public class RandomNumberActivity extends Activity
{
        private Button generate;// bude volat generování náhodného čísla
        private int min;// z textového pole se vyparsuje číselná hodnota minima a maxima
        private int max;
        private TextView rand_num;// textview kde se bude zobrazovat vygenerované číslo

        Random rand = new Random();

...

Teď si vezmeme do parády metodu onCreate

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

                // proměnným přiřadíme jednotlivé komponenty najítím objektu pomocí *findViewById* kde jako parametr zadáme *R.* (přístup k layoutu) *id.* (obsahuje jednotlivé komponenty), vybereme příslušnou komponentu a přetypujeme ji
        this.rand_num = (TextView)this.findViewById(R.id.textView1);

        this.generate = (Button)this.findViewById(R.id.button1);
                // při stisku tlačítka
        this.generate.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {

                        try
                        {
                                        // najde objekt editText1|2 přetypuje jej na EditText získá z něj data a z těch poté vyparsuje číslo
                                min = Integer.parseInt(((EditText)findViewById(R.id.editText1)).getText().toString());
                                max = Integer.parseInt(((EditText)findViewById(R.id.editText2)).getText().toString());

                                        // dočasná proměnná pro náhodné číslo
                                int random = rand.nextInt(max - min + 1) + min;
                                rand_num.setText(String.valueOf(random));
                        }
                        catch (Exception e)// při nezadaných hodnotách nebo při zadání hodnoty maxima menší než je hodnota minima se vypíše chyba (ošetření vyjímky, pádu programu)
                        {
                                rand_num.setText("chyba");
                        }

                        }
                });
    }

No a to je vlastně vše, je to jednoduché, že?

Teď si pojďme program odzkoušet.
Jsou dvě možnosti:

  1. Připojíme mobilní telefon a zapneme režim ladění přes USB (nastavení/apli­kace/vývoj)
  2. Spustíme jej v emulátoru

Pokud připojíte mobilní telefon automaticky bude aplikace odeslána na něj v opačném případě se spustí emulátor.

Jelikož ladění na mobilu jsme již zkoušeli v článku Android dle svých představ tak si zkusíme onen emulátor.

Pokud chcete, můžete programu přiřadit jednoduše vlastní ikonku - stačí v res/drawable přepsat stávající obrázky (jsou v rozlišeních 78x78, 48x48 a 36x36).
Určitě si s programem dále pohrajte a zkoušejte dále tvořit. Budu se těšit na příspěvky a případné hry/prográmky na tuto platformu ;)

Ke stažení přikládám zdrojový kód a instalační *.apk balíček aplikace (složka bin).


 

Stáhnout

Staženo 862x (39.67 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 (4 hlasů) :
55555


 



 

 

Komentáře
Zobrazit starší komentáře (1)

Avatar
David Jančík [sczdavos]:

Ahoj,
tak si jen změň verzi Androidu na nižší, postup je pak stejný ;)

Co konkrétně ti není jasné nebo co by jsi ocenil?
Úplný základ - instalace SDK + práce s IDE je zde: http://www.itnetwork.cz/index.php?…

Předpokládám základní znalost programování (logika a lehkou znalost syntaxe Javy).

Pokud ti něco nejde, potřebuješ cokoliv dovysvětlit nebo chceš program vylepšit o něco a nevíš jak: kdykoliv napiš do fóra ;)

Odpovědět  +1 12.4.2012 20:41
Čím více času dostaneš, tím méně ho máš.
Avatar
Vojta Pšenák
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Vojta Pšenák:

No, základy umím, zvládl jsem i lehkou aplikaci-hodiny. Ale nejde přepnutí na jinou obrazovku a další složitější věci, tak bych ten tutoriál ocenil ;)

 
Odpovědět 13.4.2012 13:11
Avatar
Odpovídá na Vojta Pšenák
David Jančík [sczdavos]:

Já sem si Androida pořídil nedávno, teprve po kousíčkách objevuji jeho taje. Všechny své poznatky, aplikace a jejich zdrojové kódy zde budu publikovat.
Tutoriál je teprve v začátcích. Mimochodem, můžeš se zde podělit o své programy :) Třebas i přiložit zdrojový kód, ať mají ostatní vývojáři inspiraci :)

Odpovědět 14.4.2012 11:00
Čím více času dostaneš, tím méně ho máš.
Avatar
Vojta Pšenák
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Vojta Pšenák:

Aplikaci bych rád publikoval, dal by jsi mi redaktorská práva ? Už jsem o ně žádal

 
Odpovědět 15.4.2012 15:38
Avatar
Vojta Pšenák
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Vojta Pšenák:

Díky za ty práva, posláno i se zdrojovým kódem

 
Odpovědět 15.4.2012 16:20
Avatar
Mike
Člen
Avatar
Mike:

Mohl bych se zeptat, kde je ta metoda OnCreate? Já ji totiž opravdu nemohu najít. Předem děkuji :(

 
Odpovědět 5.5.2013 13:05
Avatar
Ori
Člen
Avatar
Odpovídá na Mike
Ori:

no tak metodu on create najdes v (pokial sa jedna o tento projekt) src/random.num­ber/RandomNum­berActivity.ja­va ... riadok 29 :) snad si myslel toto

 
Odpovědět 5.5.2013 13:22
Avatar
Mike
Člen
Avatar
 
Odpovědět 5.5.2013 14:46
Avatar
krocino
Člen
Avatar
krocino:

Ahoj ,
mohl by jsi mi poslat zdrojový kód i k tomu Xamarinu ?
krocino@seznam.cz
Díky moc

Editováno 11.12.2013 16:34
 
Odpovědět 11.12.2013 16:34
Avatar
O.S.DV.F
Člen
Avatar
O.S.DV.F:

Tak mně, když skusím přidat komponentu do Table Layout, tak se textové pole editText vždycky roztáhne tak asi přes 70% jednoho řádku a to druhé, které má být vedle něj je potom malé. Nevíte proč to tak je? Používám upravenou verzi Eclipse pro vývoj na Androidy, přímo od tvůrců Android SDK, byla přiložena k Android SDK. Je to v podstatě Eclipse se změněným názvem a ikonou, jinak je vše stejné.

Odpovědět 14.3.2014 19:43
Jo! Zkompilovalo se to!
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 10 zpráv z 11. Zobrazit vše