Java týden Předvánoční slevová akce
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Lekce 4 - Android programování - První aplikace, návrh kalkulačky

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Android programování - Životní cyklus a nový projekt, jsme se dozvěděli co je to API, jak vytvořit projekt a základní informace o životním cyklu aktivity.

V dnešním tutoriálu si vytvoříme jednoduchou kalkulačku. Programátorsky nepůjde o nic složitého, řešení jsem koncipoval tak, aby nám stačilo několik metod v jedné třídě. Složitější aplikace nás čekají až v následujících lekcích.

Úvod

Nyní se konečně pustíme do tvorby naší první aplikace. Co bychom byli za programátory, kdyby naší první aplikací nebyla kalkulačka? Na této naší první Android aplikaci se naučíme jak pracovat s XML.

Požadavky

Vytvoříme kalkulačku, která:

  • Bude operovat maximálně s 9 místy. (tzn. včetně desetinné tečky, popř. mínusu)
  • bude umět alespoň 4 základní operace (+, -, *, /)
  • dokáže zobrazit čísla, se kterými počítáme

Analýza a návrh aplikace

V tomto bodě je třeba vytvořit podklady pro programování, to znamená, že si sepíšeme co a jak budeme jako programátoři dělat.

Pro aplikaci, jakou je kalkulačka, bohatě stačí jedna třída, do které přidáme jednotlivé metody. Metody budeme tedy přidávat do třídy, která je vygenerovaná Android Studiem (Při nastavení Android je to ve struktuře projektu soubor app -> java -> jmeno.naseho.pro­jektu -> jmenoAktivity.java)

zapisCislo()

Hlavní metoda nastavena na tlačítkách 0 až 9, bude připisovat číslo na obrazovku. Konkrétní číslo načte ze své vlastnosti text metodou getText(). Zde musíme ošetřit, aby se nám nestalo, že dostaneme na obrazovku řetězec čísel delší než 9 znaků. K tomu nám poslouží několik podmínek a jedna instanční proměnná.

Diagram připisování čísel v Android aplikaci

zapisCarku()

Metoda pro zápis desetinné čárky. Zde musíme ošetřit, abychom nedostali na obrazovku dvě čárky. Pro zjištění, zda se už tečka v řetězci vyskytuje, lze použít metodu indexOf().

vymazVse()

Další důležitá metoda bude pro vymazání a vynulování všech proměnných včetně obrazovky.

vymazJeden()

Zodpovídá za odstranění pouze posledního čísla na obrazovce metodou substring(). Parametrem bude 0, neboli začátek řetězce a délka řetězce -1.

zapor()

Tato metoda přepíše znaménko zapsaného čísla. Pokud je na obrazovce zápor, přepíše číslo na kladnou hodnotu. Pokud je na obrazovce kladné číslo, přepíše ho na záporné. Toho docílíme tak, že vložíme před řetězec čísel mínus. Pokud se mínus už v řetězci vyskytuje, odstraníme ho metodou substring().

odmocni()

Navíc přidáme metodu pro odmocnění čísla, sqrt().

secti(), odecti(), vynasob(), vydel()

Dále musíme vytvořit čtyři metody pro operace +, -, *, /. Metoda z obrazovky načte první číslo, se kterým bude kalkulačka počítat. Poté do instanční proměnné uloží informaci o tom, jakou operaci jsme zvolili. Další důležitý krok je zobrazení uloženého čísla a zvolené operace do TextView v horní části obrazovky, abychom zvýšili přehlednost.

vypocti()

Poslední metoda v aplikaci načte z obrazovky druhé číslo, se kterým bude počítat. Pokud jsou splněny všechny nezbytné požadavky, jako uložení prvního čísla a nepřesáhnutí devíti znaků, můžeme počítat podle toho, jakou jsme zvolili operaci. Použijeme konstrukci switch. Dále musíme ošetřit, abychom na obrazovku nedostali číslo, které bude delší než devět znaků. K tomu použijeme podmínky a DecimalFormat.

Další úpravy

Dále je třeba zajistit to, aby se aplikace zobrazovala bez tzv. app baru, kvůli úspoře místa a zakázat změny orientace obrazovky.

XML - návrh

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Nyní se seznámíme se základními komponentami. Pokud jsme v souboru activity_JMENOAPLIKACE.xml (složka layout), máme na výběr dvě záložky: Design a Text. Doporučuji při začátcích používat hlavně Design.

Layouts

Layouty si můžeme představit jako "kontejnery" pro komponenty. Před každým layoutem je miniatura, která napoví, jak se komponenty "skládají" do daného layoutu. Bez problémů je můžeme kombinovat.

RelativeLayout je výchozí a máme ho "nasazený" již v Hello world aplikaci. Umožní nám umisťovat komponenty tam, kam chceme.

Při návrhu je nejlepší uzavírat různé komponenty do layoutů, které skládáme na původní RelativeLayout.

Návrh UI kalkulačky

V Android Studiu funguje systém drag and drop. V Component Tree na pravé části obrazovky vidíme hierarchii použitých komponent. Na levé části obrazovky vidíme všechny komponenty, které můžeme použít.

Vytvořme tedy nyní požadovaný vzhled aplikace kalkulačka za pomocí layoutů a základních komponent TextView a tlačítek.

Komentáře

Komentáře se zde zapisují následovně:

<!-- komentář -->

Nesmí být uvnitř tagu.

Tlačítka

Pokud chceme design na co nejlepší úrovni, můžeme použít systém oddělených XML návrhů pro jednotlivé komponenty. V našem případě tlačítka a pozadí. Pro návrh tlačítek nám může pomoci http://angrytools.com/android/button/, vřele tento online nástroj doporučuji. Podle zadaných hodnot vytvoří jak kód pro tlačítko, tak XML kód pro shape, neboli pozadí a tvar tlačítka.

Příklad kódu tlačítka (soubor jméno_naší_aktivity.xml):

<Button
    android:id="@+id/tlacSmazJeden"
    android:layout_width="60dp"
    android:layout_height="55dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:background="@drawable/buttonshape"
    android:onClick="vymazJeden"
    android:shadowColor="#ffffffff"
    android:shadowDx="0"
    android:shadowDy="0"
    android:shadowRadius="10"
    android:text="Del"
    android:textColor="#FFFFFF"
    android:textSize="30sp" />

Pojďme si popsat jeho jednotlivé části.

<Button
   android:layout_width="65dp"
   android:layout_height="60dp"

Vidíme nastavení výšky a šířky dané komponenty. Jednotka DP neboli density-independent pixel je jednotka, která odpovídá matematickému vztahu 1dp=160px/dpi. Velikost se tedy v jisté míře přizpůsobuje fyzické velikosti displeje daného zařízení.

android:text="Del"

Text zobrazený na tlačítku.

android:id="@+id/tlacSmazJeden"

ID tlačítka.

android:layout_marginRight="4dp"
android:layout_marginLeft="4dp"

Vnější ohraničení.

android:textColor="#FFFFFF"

Barva textu.

android:textSize="30sp"

Velikost textu, jako jednotka je použit sp. Jedná se o obdobnou jednotku jakou je DP. Tato jednotka je určená pro nastavení velikosti textů.

android:onClick="vymazJeden"

Jméno metody, která se volá po kliknutí na tlačítko.

android:background="@drawable/buttonshape"

Odkaz na pozadí.

android:shadowColor="#A8A8A8"

Barva stínu (odrazu).

android:shadowDx="18"
android:shadowDy="-12"

Pozice stínu

android:shadowRadius="10"

Stupeň "rozmazání" stínu.

/>

Jak si můžeme všimnout, pozadí tlačítka nás odkazuje na soubor buttonshape. Ten ovšem nemáme vytvořen.

Vytvoříme ho pravým klikem na složku drawable/, New -> Drawable resources file. Bude se jmenovat buttonshape.xml a vložíme do něj následující kód, který definuje tvar a pozadí tlačítka:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!-- rectangle je defaultní tvar -->
    <!-- zaoblení tlačítka -->
    <corners android:radius="20dp" />
    <!-- android:angle - úhel v jakém přechází barvy
    android:centerX - v procentech udává polohu prostředí barvy
    android:centerColor - barva ve středu tlačítka
    android:startColor - barva na levé straně tlačítka
    android:endColor - barva na pravé straně tlačítka
    android:type - metoda přechodu barev -->
    <gradient
        android:angle="45"
        android:centerColor="#7995A8"
        android:centerX="30%"
        android:endColor="#000000"
        android:startColor="#E8E8E8"
        android:type="linear" />
    <padding
        android:bottom="0dp"
        android:left="4dp"
        android:right="4dp"
        android:top="0dp" />
    <size
        android:width="160dp"
        android:height="60dp" />
    <!-- nastavení ohraničení, width je tloušťka a color barva -->
    <stroke
        android:width="3dp"
        android:color="#878787" />
</shape>

Barvy můžete vkládat do souboru colours.xml ve složce values/ stejným způsobem jako textové řetězce do souboru strings.xml.

Pozadí aplikace

Pro změnu pozadí přidáme do složky drawable/ soubor prechodne_pozadi.xml. Zde nadefinujeme vzhled pozadí. Na stránkách http://developer.android.com/…esource.html najdeme spousty příkladů, ukázek a syntaxí. Pokud někomu dělá problém zápis barev, tak doporučuji stránku: http://www.color-hex.com/

Pro pozadí jsem použil kód:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="45"
        android:centerColor="#262626"
        android:centerX="40%"
        android:endColor="#000000"
        android:startColor="#4c4c4c" />

    <padding
        android:bottom="7dp"
        android:left="7dp"
        android:right="7dp"
        android:top="7dp" />

</shape>

Výhodou Android Studio je, že při práci s XML soubory nám zobrazuje náhled aplikace.

Výsledný návrh

Výsledný návrh kalkulačky v Android Studio

Z obrázku vyplývá, že jsme zvolili rozvržení aplikace na dva Layouty. Do prvního jsme vložili dva řádky tabulky. V jednom jsou tři malé TextView pro zobrazení čísla 1, operace a čísla 2. Ve druhém řádku je pouze jeden TextView a to hlavní obrazovka.

Druhý Layout obsahuje 6 řádků tabulky. V každém z nich je vyskládáno několik tlačítek. Jakmile budeme spokojeni s návrhem UI, bude vhodné pojmenovat všechny použité komponenty podle jejich charakteru.

Příště, v lekci Android programování - Implementace Java kódu kalkulačky, se podíváme na implementaci Java kódu aplikace.


 

 

Článek pro vás napsal Jiří Frank
Avatar
Jak se ti líbí článek?
17 hlasů
Autor se věnuje programování v C# a vývoji aplikací pro platformu Android a dalším věcem spojeným s Android OS
Předchozí článek
Android programování - Životní cyklus a nový projekt
Všechny články v sekci
Programování Android aplikací v Javě
Miniatura
Následující článek
Android programování - Implementace Java kódu kalkulačky
Aktivity (4)

 

 

Komentáře

Avatar
paja
Člen
Avatar
paja:28.6.2015 18:24

Ahoj, pekny navrh tlacitek a rozvrzeni layoutu, diky...;)

 
Odpovědět
28.6.2015 18:24
Avatar
David Šimák:3.8.2015 20:13

Nevím proč, ale nejdou mi v android studiu přidávat objekty. Pomůže mi někdo?

 
Odpovědět
3.8.2015 20:13
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na David Šimák
Jiří Frank:3.8.2015 21:08

Ahoj, trošku víc popiš svůj problém, popř. mě rovnou kontaktuj :D (viz. kontakty na mém profilu)

 
Odpovědět
3.8.2015 21:08
Avatar
David Šimák:4.8.2015 10:25

Když vezmu komponent a chci ho vložit do komponent tree nebo na obrazovku zařízení tak se mi ukáže symbol, který je označený na obrázku.

 
Odpovědět
4.8.2015 10:25
Avatar
Odpovídá na Jiří Frank
David Šimák:4.8.2015 10:33

Když vezmu komponent a chci ho vložit do komponent tree nebo na obrazovku zařízení tak se mi ukáže symbol, který je označený na obrázku.

 
Odpovědět
4.8.2015 10:33
Avatar
Odpovídá na Jiří Frank
David Šimák:4.8.2015 10:50

Už je to v pohodě, jede to.

 
Odpovědět
4.8.2015 10:50
Avatar
Štěpán Bunda:17.1.2016 9:50

Když to nejde bez různých zbytečných triků jako prechodne_poza-di.xml atd. - tak jenom 3 hvězdičky.
Jinak perfect. Sorry.

 
Odpovědět
17.1.2016 9:50
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na Štěpán Bunda
Jiří Frank:19.1.2016 15:56

Ahoj Štěpáne, ty "zbytečné triky" mi musíš objasnit. Tím jsem ukázal, že je možnost definovat libovolné pozadí v xml, což rozhodně u žádné aplikace není zbytečnost. Samozřejmě, že můžeš na pozadí dát třeba čistě jen barvu.

 
Odpovědět
19.1.2016 15:56
Avatar
Odpovídá na Jiří Frank
Štěpán Bunda:19.1.2016 23:07

Jirko, nejde o podstatu kódu, algoritmy nebo definice. Odpovím do osobní schránky.

 
Odpovědět
19.1.2016 23:07
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Štěpán Bunda
vajkuba1234:20.1.2016 9:23

Napis to zde, take me to zajima.

Odpovědět
20.1.2016 9:23
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Jiří Frank
Redaktor
Avatar
Jiří Frank:20.1.2016 10:15

Ani z osobní schránky moc nechápu co přesně ti vadí.. Jediné čeho jsem si všiml, bylo že:
"specifikuje verzi a kódování"
nemám v "komentáři" xD

 
Odpovědět
20.1.2016 10:15
Avatar
Štěpán Bunda:20.1.2016 12:54

Tak se tím netrapte.
Na jedné stráně: "Začneme na úplných základech". Na druhé stráně záměrné zamlžování jednoduchých cest, což, a to chápu, je spíš pravidlem a pravděpodobně není způsobeno jakoby nepozornosti autora článku. Pro mě osobně po skoro 20 let zkušeností programování v různých jazycích to není překážkou. Jenom jsem podotkl, že je zde spousta triků, které mohou odradit začátečníky. A začátečníkům jsem naznačil, že ať si nedělají iluze o "úplných základech" a dřou, protože před sebou máji skvělý článek s množstvím záměrných chyb, které ale oni musí odhalit sami.

 
Odpovědět
20.1.2016 12:54
Avatar
Jiří Frank
Redaktor
Avatar
Jiří Frank:20.1.2016 22:09

Děkuji za odpověď Štěpáne, ovšem byl bych moc rád, kdyby jsi psal konkrétně ;). Třeba ten článek můžu upravit či doplnit.
PS: Chybu v tom komentáři jsem již poslal k "editaci", předpokládám že by to mělo každou chvíli být opravené. A tím přechodným pozadím nic asi nekazím.. alespoň si to myslím :D Není přece problém nechat na pozadí čistou barvu, čili není potřeba přidávat xml soubor.... Pokud je ovšem to pozadí jediná věc, která tě zarazila.

 
Odpovědět
20.1.2016 22:09
Avatar
Odpovídá na Jiří Frank
Štěpán Bunda:21.1.2016 12:18

Nejde o obsah souboru prechodne_poza­di.xml, ale jde o to, že při kopírování názvu souboru z článku (Copy) do AS (Paste) tam se objeví ČÁRKA (prechodne_poza-di.xml), která mě pobavila, až jsem ji odhalil, ale jelikož jsem tak trochu krátkozraký, tak dlouho jsem nemohl pochopit, na co ten kompilátor se stěžuje, a málem jsem to nevzdal kvůli takové prkotině. Netrvám na tom, že mám pravdu, ale já si myslím své, že ta čárka tam není náhodou, a je tam pravě proto, aby odradila půlku lidí, kterých programátoři považuji za lamy. Tak trochu jsem se zastal těch lam, v kůži kterých byl jsem někdy dost dávno i já, když skoro před 20 lety jsem začínal s programováním, a to mi už tehdy bylo za třicet.

Editováno 21.1.2016 12:20
 
Odpovědět
21.1.2016 12:18
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na Štěpán Bunda
Jiří Frank:27.1.2016 14:17

Dlouho jsem nad tím přemýšlel a kopíroval a kopíroval.. pořád nic :D
Ovšem pokud vložím prechodne_poza­di.xml přímo do AS, do kolonky "File name", opravdu se tam objeví čárka, nejsem schopný si to vysvětlit.

Ovšem garantuji všem, že nemám nic společného s tím, že se po překopírování názvu do AS objeví čárka v názvu.. :D Opravdu mě nenapadlo to zkoušet.

Nehledej v tom žádný záměr z mojí strany, žádné "kurvítka" jsem nikam nevkládal, nikoho odrazovat od ničeho nechci :D, články jsem se snažil psát tak aby to bylo srozumitelné a všechno snadno použitelné, dokonce by měly být vždy přiloženy zdrojové soubory jednotlivých projektíků.

edit: Díky moc, že jsi to sem napsal.

Editováno 27.1.2016 14:18
 
Odpovědět
27.1.2016 14:17
Avatar
Odpovídá na Jiří Frank
Štěpán Bunda:28.1.2016 21:33

Tak fain. Nemám důvod ti nevěřit. A to, že článek je skvělý bez ohledu na tá "kurvítka", to těž jsem zdůrazňoval. A jako cizinec přiučil jsem se i nové české slůvko. Kdy bych ho znal hned od začátku, snadněji bych zde tlumočil své myšlenky. Vše nejlepší, a ať se dáři. ;)

 
Odpovědět
28.1.2016 21:33
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na Štěpán Bunda
Jiří Frank:29.1.2016 9:03

Taky přeji ať se daří :D, každopádně jestli budeš potřebovat s něčím pomoc, klidně mi piš (na mém profilu najdeš další kontakty na mě, v podobě skype a nebo FB).

 
Odpovědět
29.1.2016 9:03
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jiří Frank
vajkuba1234:29.1.2016 10:23

+1 za ta "kurvítka". :-D :-D

Odpovědět
29.1.2016 10:23
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
prochy132
Člen
Avatar
prochy132:20.2.2016 17:11

ahoj nechybí ti v příkladu buttonshape.xml

<shape xmlns:android="http://s­chemas.android­.com/apk/res/an­droid"
android:shape="rec­tangle">

protože v pozadi.xml to máš a v buttonshape.xml ne a bez toho mi to hází errory.
Tj. chyba je v tom vzorovém příkladu, nebo jsem to špatně pochopil a mám to pročíst znova ? :-)

 
Odpovědět
20.2.2016 17:11
Avatar
Michal Vlasák:28.3.2016 15:11

Ahoj, moc se mi ten návod nelíbí. Jsem v androidu a Android Studiu opravdu začátečník a chybí mi tu například, jakě mají rozměry ty layouty a table row a taky vysvětlení toho, co znamenají ty vykřičníky u table row a layout. Píše mi to tu This table row layout is useless...

Jsem opravdu začátečník a přijde mi, že se tady už počítá s tím, že uživatel s Android Studiem umí.

 
Odpovědět
28.3.2016 15:11
Avatar
Odpovídá na Michal Vlasák
Josef Kuchař - Pepa489:28.3.2016 15:17

Tohle totiš vyžaduje alespoň základní znalosti "desktopové" javy ;)

Odpovědět
28.3.2016 15:17
2x piš, jednou debuguj
Avatar
Odpovídá na Josef Kuchař - Pepa489
Michal Vlasák:28.3.2016 15:21

A je tu někde tady návod na desktopovou javu?

 
Odpovědět
28.3.2016 15:21
Avatar
Odpovědět
28.3.2016 18:30
2x piš, jednou debuguj
Avatar
filiptartott
Člen
Avatar
filiptartott:27.4.2016 15:17

Čo znamená "root element"? Vyskočí to v okienku keď zadávam New Drawable Resource File. Iba tak pre info

 
Odpovědět
27.4.2016 15:17
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na filiptartott
Jiří Frank:18.8.2016 19:05

Ahoj, odmluv, že odpovídám tak pozdě.. ale třeba se to bude ještě někomu hodit.. Doufám že teď nebudu mystifikovat..:
Root element může být ViewGroup nebo čistý View, může být jen jeden a musí obsahovat atribut XMLNS:ANDROID
Využití? Možná kvůli hierarchii view? Nevím co víc k tomu napsat, budu rád jestli se najde někdo více znalý a doplní/upraví informace.

 
Odpovědět
18.8.2016 19:05
Avatar
Erik Báča
Člen
Avatar
Erik Báča:22.10.2016 12:21

Ahoj, potřeboval bych poradit, nejde mi poskládat tlačítka atd. jako máš ty, dělá mi to tohle (obrázky v příloze)

Odpovědět
22.10.2016 12:21
Když mi dáš mínus, napiš proč!
Avatar
Erik Báča
Člen
Avatar
Erik Báča:22.10.2016 12:23

taky mi android studio pořád píše tohle:

Odpovědět
22.10.2016 12:23
Když mi dáš mínus, napiš proč!
Avatar
Martin Píštěk (Denir):28.12.2016 23:12

Ahoj, jak se nastavuji ty layouty? Výška řádků a tak.. To mi v clanku trochu chybi

 
Odpovědět
28.12.2016 23:12
Avatar
Odpovídá na Martin Píštěk (Denir)
Filip (animátor/programator):28.6.2017 16:24

Prepáč za neskorú odpoveď ja som to vyriešil takto ikeď tam mám pravdepodobne dáke chybi malo by to fungovať https://www.itnetwork.cz/dev-lighter/941

Editováno 28.6.2017 16:26
Odpovědět
28.6.2017 16:24
Nikdy sa nevzdávaj a choď si za svojim snom.......
Avatar
Radomír Gazda:2.3.2018 15:17

Vůbec to nejsem schopný navrhnout, prvky se umísťují kam chtějí a nejde s nima hýbat a dostat to, kde chci. Nehledě k tomu, že to hlásí hromadu chyb. U RelativeLayout máte ve zdroji id. Jak ho tam mám dostat já?
Na ZX Spectrum jsem programoval v Assembleru i hry, ale z toho dnešního stylu programování jsem naprosto znechucen.

 
Odpovědět
2.3.2018 15:17
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Vít Vohralík:2.9.2018 16:20

Nemůžu se dostat do component tree, protože to píše, že první musí proběhnout úspěšný build. Zde mi to hází mnoho chyb a absolutně si s tím nevím rady. Prosím o pomoc. Předem děkuji.

 
Odpovědět
2.9.2018 16:20
Avatar
Odpovídá na Vít Vohralík
Matúš Olejník:2.9.2018 16:34

Kód medzi <Button a /> vrátane, má byť v .xml súbore, napr. ten buttonshape.xml. Možno si treba prejsť aj základy javy ;)

Odpovědět
2.9.2018 16:34
/* I am not sure why this works but it fixes the problem */
Avatar
Odpovídá na Matúš Olejník
Vít Vohralík:2.9.2018 17:16

aha dik. Já četl ty články základy javy ale tady mě přijde, že to není dostatečně vysvětlený co a jak udělat

 
Odpovědět
2.9.2018 17:16
Avatar
Vít Vohralík:3.9.2018 10:06

Porádíte někdo prosím. Hledal jsem všude a nedokážu to vyřešit. Udělal jsem všechno tak jak má být. Dokonce i předgenorovaný projekt: Hello World mi to hází chybu. Předem děkuji

 
Odpovědět
3.9.2018 10:06
Avatar
Libor Šimo (libcosenior):16.9.2018 15:08

Ahoj, píšeš toto: "Výhodou Android Studio je, že při práci s XML soubory nám zobrazuje náhled aplikace."
Mne to nechce zobrazovať nič.

Odpovědět
16.9.2018 15:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Patrik
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Patrik:16.9.2018 15:24

Mne pomohlo ísť do /res/values/sty­les.xml a tam zmeniť toto:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>

na toto:

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
</style>

Rozoberali sme to pred pár dňami tu:
https://www.itnetwork.cz/…b900cc56f3ec

Editováno 16.9.2018 15:24
 
Odpovědět
16.9.2018 15:24
Avatar
Libor Šimo (libcosenior):16.9.2018 15:35

Díky, už to fachčí,

Odpovědět
16.9.2018 15:35
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jaroslav Konečný:20.9.2018 14:13

V buttonshape.xml je chyba. Aby to fungovalo, tak to musí začínat:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://s­chemas.android­.com/apk/res/an­droid"
android:shape="rec­tangle" >
<!-- rectangle je defaultní tvar -->
<!-- zaoblení tlačítka -->

 
Odpovědět
20.9.2018 14:13
Avatar
Odpovídá na Patrik
Libor Šimo (libcosenior):22.9.2018 13:55

Dnes som to otvoril a zase to nekreslí. Teda okrem pozadia.

Odpovědět
22.9.2018 13:55
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Jaroslav Konečný
Libor Šimo (libcosenior):22.9.2018 13:57

Veď je to to isté. Žiadnu zmenu so nenašiel.

Odpovědět
22.9.2018 13:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Patrik
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Patrik:22.9.2018 20:20

Vyzerá to ako keby ste mali ten LinearLayout, alebo ConstraintLayout nastavený na gone, popr. invisible. Ale nie je to také ľahké ak nevidím xml súbory, alebo zdroják :)

 
Odpovědět
22.9.2018 20:20
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jaroslav Konečný:24.9.2018 9:49

Libore, je potřeba konvertovat view z ConstrantLayout na RelativeLayout (Pravým tlačítkem na to klikneš). Jinak se s tím nedomluvíš. Měl jsem to samé. Potom si postupně natahovat velikost a umístění LinearLayoutů. TableRow nastavit layout_height na wrap_content a výška se bude automaticky natahovat dle výšky tlačítek.

 
Odpovědět
24.9.2018 9:49
Avatar
Libor Šimo (libcosenior):24.9.2018 10:58

Jardo díky. To je presne to, čo som potreboval.

Odpovědět
24.9.2018 10:58
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):5.10.2018 19:04

Ahoj, mám otázku.
Je tam 20 rovnakých tlačidiel a sú okrem android:id a android:text úplne rovnaké. Tým pádom sa ich kód v activity_main.xml opakuje.
Nie je možnosť niekde nadefinovať tlačidlo 1 krát a to použiť opakovane s tým, že sa bude meniť len android:id a android:text?

<Button
    android:id="@+id/button_7"
    android:layout_width="65dp"
    android:layout_height="60dp"
    android:layout_marginRight="5dp"

    android:background="@drawable/buttonshape"
    android:shadowColor="#A8A8A8"
    android:shadowDx="0"
    android:shadowDy="0"
    android:shadowRadius="5"
    android:text="7"
    android:textColor="#FFFFFF"
    android:textSize="30sp" />

Niečo ako:

<Button
    android:id="@+id/button_7"
    android:button="drawable/button" <!-- naradí opakovaný kód -->
    android:text="7"
Odpovědět
5.10.2018 19:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):6.10.2018 16:46

Nikto neodpovedal. Zdá sa, že táto téma veľa členov nezaujíma.
Škoda, je fajn, dá sa krásne pozabávať. :-)

Odpovědět
6.10.2018 16:46
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jiří Frank
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jiří Frank:9.10.2018 12:00

Ahoj, jistým způsobem to určitě půjde. Mohlo by to jít přes Custom View.
https://www.youtube.com/watch?…

Jinak tutoriály jsou pěkně zastaralé a v některých věcech možná i dost mimo :(. Je to už pěkná doba... Slíbil jsem si, že je aktualizuji, nicméně jsem neměl vůbec čas (škola, práce). Čas sice stále nemám ale k Androidu se zase vracím kvůli jednomu projektu a tak hádám, že si někdy najdu jeden nebo dva večery na nějaké to editování :).

 
Odpovědět
9.10.2018 12:00
Avatar
Lukáš Bura
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Lukáš Bura:11.10.2018 14:09

Ahoj,
já to vyřešil přes styly.

  1. do res/values/sty­les.xml

jsem vložil tento styl, tam jsem nasázel všechno, co se opakuje:
<style name="MojeTla­citko">
<item name="android:tex­tColor">#FFFFFF­</item>
<item name="android:tex­tSize">30sp</i­tem>
<item name="android:la­yout_width">wrap_con­tent</item>
<item name="android:la­yout_height">wrap_con­tent</item>
<item name="android:bac­kground">@dra­wable/buttonsha­pe</item>
</style>

  1. samotné tlačítko pak vypadá takto:

<Button
android:id="@+id/­TlacitkoC"
style="@style/Mo­jeTlacitko"
android:text="C" />

<Button
android:id="@+id/­TlacitkoDel"
style="@style/Mo­jeTlacitko"
android:text="Del" />

 
Odpovědět
11.10.2018 14:09
Avatar
Libor Šimo (libcosenior):11.10.2018 14:20

To vyzerá dobre. Otestujem to. Díky.

Odpovědět
11.10.2018 14:20
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Lukáš Bura
Člen
Avatar
Lukáš Bura:11.10.2018 14:21

ještě k samotnému activity_main.xml. Zkuste to takto. Měl potíže s tím, že na každém zařízení se mi to zobrazovalo jinak. Celkem dlouho mi trvalo, než jsem přišel na tyto parametry, třeba se bude hodit :)

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://s­chemas.android­.com/apk/res/an­droid"
xmlns:tools="http://sc­hemas.android­.com/tools"
android:layou­t_width="match_pa­rent"
android:layou­t_height="mat­ch_parent"
android:stret­chColumns=""
android:shrin­kColumns="
"

android:backgrou­nd="@drawable/prechod­ne_pozadi"
tools:context="­.MainActivity">

<TableRow
android:layou­t_width="match_pa­rent"
android:layou­t_height="mat­ch_parent" >

<Button
android:id="@+id/­TlacitkoC"
style="@style/Mo­jeTlacitko"
android:text="C" />

</TableRow>

</TableLayout>

 
Odpovědět
11.10.2018 14:21
Avatar
Lukáš Bura
Člen
Avatar
Odpovídá na Lukáš Bura
Lukáš Bura:11.10.2018 14:22

v tom shrink, v těch uvozovkách má být hvězdička, nějak se nezkopírovalo

 
Odpovědět
11.10.2018 14:22
Avatar
Odpovídá na Lukáš Bura
Libor Šimo (libcosenior):12.10.2018 13:00

Ahoj Lukáš, postni sem prosím obrázok tvojho dizajnu. Môj je v prílohe.

Editováno 12.10.2018 13:02
Odpovědět
12.10.2018 13:00
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovědět
12.10.2018 13:06
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Lukáš Bura
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Lukáš Bura:12.10.2018 13:45

já mám design identický až na ten vršek :). Ten předělávám na víceřádkový displej, aby bylo možno zadávat více operací najednou. Zrovna teď si s tím hraju :) Když tak pak můžeme porovnat výsledky po mailu :)

 
Odpovědět
12.10.2018 13:45
Avatar
Odpovídá na Lukáš Bura
Libor Šimo (libcosenior):12.10.2018 13:52

Vrchnú časť riešim tak, že sa zadáva výraz, teda napr. 45,54 * 0,12. Ten sa potom rozdelí na jednotlivé časti, teda čísla 45.54 a 0.12 a operácia *. Následne sa vypíše výsledok.
Ale skúšal som tie tlačítka cez style a nejde mi to. Robím v prostredí Andoid Studio.

Odpovědět
12.10.2018 13:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):26.10.2018 9:31

Ahoj, ak bude mať niekto problém so spustením virtual device ako ja. Pri inštalácii C:\Users\PC\Ap­pData\Local\An­droid\Sdk\extras\in­tel\Hardware_Ac­celerated_Exe­cution_Manager\in­telhaxm-android.exe
mi to vypísalo hlášku (príloha).
Riešením bolo upraviť nastavenie v BIOS-e.
https://www.intel.com/…roducts.html

Odpovědět
26.10.2018 9:31
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):26.10.2018 11:49

Ešte jedna poznámka.
Asi vám AVD manager ponúkne virtuálnu mašinu Nexus 5, nepoužite ju.. Odporúčam Nexus 4 API 23, pretože na testovanie stačí a zaberá podstatne menej pamäti.

Odpovědět
26.10.2018 11:49
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):26.10.2018 17:36

No nádhera.
Preinštaľoval som android studio a zase mi virtual device nefunguje. Nech robím, čo robím.
Ale nevzdávam to, skúšam ďalej.

Odpovědět
26.10.2018 17:36
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):26.10.2018 20:46

A už to zase funguje ako má. Takže sa zdá, že je všetko, ako má byť. No SUPER. :-)

Odpovědět
26.10.2018 20:46
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):26.10.2018 20:47

Môj záver.
Ak mi náhodou niekto napíše, aby som mu poradil, nemám šancu, lebo sám neviem, ako sa mi to podarilo. :-`

Odpovědět
26.10.2018 20:47
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):28.10.2018 11:20

Tak mením názor.
Najlepšie skúsenosti mám s testovaním na mojom mobile, teda na konkrétnom zariadení, :-)

Odpovědět
28.10.2018 11:20
Aj tisícmíľová cesta musí začať jednoduchým krokom.
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 60 zpráv z 60.