(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Android projekt. Manifest. Activity. Uživatelské rozhraní (základy)

Podobné dokumenty
Začínáme s vývojem pro Android

Uživatelské rozhraní. Layouty FrameLayout LinearLayout RelativeLayout TableLayout ScrollView Taby Dialogy ViewFlipper 11/29/11

ANDROID. Ing. Ladislav Pešička

JAVA Android Java, letní semestr

4. UŽIVATELSKÉ ROZHRANÍ

KMI / TMA. Tvorba mobilních aplikací. 3. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

KMI / TMA Tvorba mobilních aplikací. 3. seminář ZS 2016/2017 Středa 13:15-15:45

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ Přednáška. PreferenceActivity. Intenty (pokročilé) Vývojářské nástroje

JAVA. Real-Time Java

JAVA. Real-Time Java

Obsah. LayoutInflater. UI model KeyEvent View Tvorba vlastních komponent Canvas Matrix Vlastní EditText

Příklad zobrazení toastu s vlastním designem

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 12. Přednáška. Zjišťování polohy Google Mapy OverlayItem Zálohování.

Klient Stagu pro Android

KMI / TMA Tvorba mobilních aplikací. 2. seminář ZS 2016/2017 Středa 13:15-15:45

Obsah. Úvod 11. Vytvoření emulátoru 20 Vytvoření emulátoru platformy Android 4.4 Wearable 22 Spouštění aplikací na reálném zařízení 23

KMI / TMA Tvorba mobilních aplikací

Android 100% Java telefon. Petr Musil

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

KMI / TMA Tvorba mobilních aplikací

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA ELEKTROTECHNICKÁ

Obsah. Menu. ListView ListActivity Adapter. Ikonkové Rozšířené Submenu Kontextové. BaseAdapter ArrayAdapter CursorAdapter SimpleCursorAdapter 11/29/11

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 11. Přednáška. Broadcast receiver Timer Alarmy Widgety

Obsah. Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem. Toast. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant

Diplomová práce. Rozvrh hodin pro

KAPITOLA 7. Widgety nabídek. V této kapitole:

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE. Parametry okolních buněk

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA ELEKTROTECHNICKÁ KATEDRA TECHNOLOGIÍ A MĚŘENÍ BAKALÁŘSKÁ PRÁCE

ZADÁNÍ BAKALÁŘSKÉ PRÁCE

MATURITNÍ PRÁCE dokumentace

Mobilní aplikace pro ovládání laboratorního napájecího zdroje

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Mobilní aplikace pro podporu učení

3. ŽIVOTNÍ CYKLUS ACTIVITY

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA EKONOMICKÁ

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Aplikovaná informatika

Mobilní malware na platformě Android Přednáška 2. Ing. Milan Oulehla

Jazyk C# (seminář 9)

5. LISTVIEW BI-AND. Programování pro operační systém Android (BI-AND) (c) Autor a garant: M. Havryluk, Spolupráce: M. Balík, O. Kroupa, M.

Logování zaznamenávání informací o průběhu programu, ladících a chybových informací

KMI / TMA Tvorba mobilních aplikací. 9. seminář ZS 2016/2017 Středa 13:15-15:45

Mobilní malware na platformě Android Přednáška 1. Ing. Milan Oulehla

Vývoj SW pro mobilní zařízení s Androidem. Ing. Jan Kaláb, IPEX a.s.,

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

PROGRAMOVÁNÍ PRO MOBILNÍ PLATFORMY

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Aplikace s grafickým uživatelským rozhraním

Úvod do programovacích jazyků (Java)

5. přednáška. Stylování a themování Themování Android Interface Definition Language Data Sdílení dat 11/29/11

Java a XML. 10/26/09 1/7 Java a XML

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

1. Úvod do obsluhy AutoCADu

Nastavení Mobilní banky 2 MojeBanka a MojeBanka Business

Programování v Javě I. Únor 2009

Android za hranicemi Hello World

Android. Programujeme pro. Jiří Vávrů, Miroslav Ujbányai. DRUHÉ, rozší řené v ydání

Pedagogická fakulta. Katedra informatiky. Tvorba responzivních mobilních aplikací v Android Studiu

První kapitola úvod do problematiky

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Programování v Javě I. Leden 2008

Využití ArcGIS Runtime SDK for Android při vývoji mapových aplikací

Středoškolská odborná činnost. Baby-friendly Map

NAS 242 Aplikace AiMaster pro mobilní zařízení

Sem vložte zadání Vaší práce.

Aplikace pro zkoušení slovní zásoby na platformě Android

Apache Cordova (PhoneGap 3)

České vysoké učení technické v Praze. Fakulta Elektrotechniky XD39NUR. Semestrální práce. Ovládání videokonferencí pomocí mobilního telefonu

Tvorba informačních systémů

ROZŠÍŘENÁ REALITA PRO PLATFORMU ANDROID

UJO Framework. revoluční architektura beans. verze

QI klient pro operační systém Android

XML Práce s řídicím souborem miniaplikace

Výčtový typ strana 67

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Mobilní aplikace pro vyhledání nejbližší recyklační stanice Roman Holomek

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

GUI. JavaFX. Java UI, letní semestr 2017/2018 1

Příloha 6. Palety nástrojů

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY ANDROID APLIKACE PRO VÝUKU SLOVNÍ ZÁSOBY ANDROID APPLICATION FOR LEARNING VOCABULARY

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Práce na pozadí. Služby. Notifikace

Vývoj multiplatformní aplikace v Qt

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

7 Jazyk UML (Unified Modeling Language)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Algoritmizace a programování

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

CTUGuide (XXX-KOS) D1

KMI / TMA. Tvorba mobilních aplikací. 5. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

Vývoj mobilní aplikace pro Android na testování internetového připojení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

10 Balíčky, grafické znázornění tříd, základy zapozdření

Úvodem 17. Začínáme 21. Výzvy vývoje aplikací pro chytré telefony 22 Z čeho se aplikace pro systém Android skládají 23 Co máte k dispozici 24

Téma 11: Instalace a práva programů. Téma 11: Instalace a práva programů

1. Programování proti rozhraní

Transkript:

2. přednáška Android projekt Manifest Activity Uživatelské rozhraní (základy) 2

Android Projekt - src Zdrojový kód v Javě Unikátní jméno balíčku Konvence: [země].[autor].[jméno aplikace] např.: cz.cvut.helloworld 4

5 Android Projekt - res Konfigurace přípony upřesnění Jazyk -en -cs Velikost obrazovky -small -normal -large -xlarge Rozlišení obrazovky -ldpi -mdpi -hdpi -xhdpi -nodpi 120dpi 160dpi 240dpi 320dpi Pro bitmapy, které se nebudou roztahovat Orientace zařízení -land -port Poloha na šířku Poloha na výšku API level -v11 -v10 -v9 Pro Android 3.0 a vyšší Pro Android 2.3.3 a vyšší Pro Android 2.3 a vyšší

Android Projekt - res místo pro uložení zdrojů generované ID ve statické třídě R přístup přes Context.getResources() např.: String s = getresources().getstring(r.string.app_name); Obsah složek: drawable - grafika aplikace (.png,.9.png,.jpg,.gif nebo XML) layout - XML soubory s uživatelským rozhraním values - XML s definovanými hodnoty (řetězce,čísla,styly,barvy) menu - XML s položkami menu xml - libovolné XML raw - libovolné soubory 6

Android Projekt - assets Nezávislé zdroje Android negeneruje ID obsahu této složky Přístup přes Context.getAssets(); např.: InputStream is = getassets().open("folder/sample.txt"); 7

AndroidManifest Specifikuje parametry aplikace Komponenty (Activity) Systémová práva (internetové připojení, GPS ) Informace o aplikaci Ikona Jméno a verze Požadovaná verze Androida Jaké velikosti displejů podporuje Umístění aplikace (vnítřní paměť telefonu, paměťová karta) 8

9 Příklad AndroidManifest.xml 1. <?xml version="1.0" encoding="utf-8"?> 2. <manifest 3. xmlns:android="http://schemas.android.com/apk/res/android" 4. package="cz.cvut.hello.world" 5. android:versioncode="5" 6. android:versionname="1.4"> 7. <application> 8. <activity 9. android:name=".mainactivity" 10. android:label="hello world"> 11. <intent-filter> 12. <action 13. android:name="android.intent.action.main" /> 14. <category 15. android:name="android.intent.category.launcher" /> 16. </intent-filter> 17. </activity> 18. </application> 19. <uses-sdk 20. android:minsdkversion="7" 21. android:targetsdkversion="10" /> 22. <supports-screens 23. android:smallscreens="true" 24. android:xlargescreens="false" 25. android:anydensity="true" /> 26. <uses-permission 27. android:name="android.permission.internet" /> 28.</manifest>

Grafické komponenty (widgety) Slouží k interakci s uživatelem Výška a šířka se nastavuje pomocí match_parent Roztáhne se přes celou velikost rodiče wrap_content Přizpůsobí svou velikost podle obsahu Nejpoužívanější widgety: Button CheckBox RadioButton TextView EditText ImageView ListView WebView 10

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. <Button android:text="button" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <CheckBox android:text="checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:text="radiobutton" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="textview" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:text="edittext" android:layout_height="wrap_content" android:layout_width="match_parent" /> <ImageView android:src="@drawable/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ListView android:layout_width="wrap_content" android:layout_height="fill_parent" android:entries="@array/listview" /> 11

Layouty (rozvržení) Kontejner pro widgety a jiné layouty Vychází z java.awt layoutů XML soubory umístěny ve složce res/layout Nastavení šířky a výšky stejné jako u widgetů Typy: FrameLayout LinearLayout RelativeLayout TableLayout 12

Složitější LinearLayout 1. <?xml version="1.0" encoding="utf-8"?> 2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" 4. android:layout_height="fill_parent" 5. android:orientation="vertical" 6. android:gravity="center" 7. android:layout_gravity="center"> 8. <LinearLayout android:orientation="horizontal" 9. android:layout_width="fill_parent" 10. android:layout_height="wrap_content" 11. android:layout_margin="15dp"> 12. <Button android:text="hello" 13. android:layout_width="fill_parent" 14. android:layout_height="wrap_content" 15. android:layout_weight="1" /> 16. <Button android:text="world" 17. android:layout_width="fill_parent" 18. android:layout_height="wrap_content" 19. android:layout_weight="3" /> 20. </LinearLayout> 21. <ImageView android:src="@drawable/android" 22. android:layout_width="wrap_content" 23. android:layout_height="wrap_content" 24. android:id="@+id/imageview1" /> 25. </LinearLayout> 3. 14

15 Activity Prezentační vrstva jednoho okna aplikace Vytváří se podědením od objektu Activity Každá je samostaný proces Mohou se navzájem spouštět a ovlivňovat Každá musí být definována v AndroidManifestu Ukládájí se do zásobníku v rámci aplikace Pozn.: Při změně orientace se aktivita znovu vytvoří - znovu se zavolá metoda oncreate()

16 Hello World Ve složce res/layout vytvoříme soubor main.xml s layoutem, textem a dvěma tlačítky 1. <?xml version="1.0" encoding="utf-8"?> 2. <LinearLayout 3. xmlns:android="http://schemas.android.com/apk/res/android" 4. android:orientation="vertical" 5. android:layout_width="fill_parent" 6. android:layout_height="fill_parent"> 7. 8. <TextView 9. android:id="@+id/mytextview" 10. android:layout_width="wrap_content" 11. android:layout_height="wrap_content" 12. android:textsize="50sp" /> 13. <Button 14. android:text="click me" 15. android:id="@+id/mybutton" 16. android:layout_width="wrap_content" 17. android:layout_height="wrap_content" /> 18. 19. </LinearLayout>

17 Vytvoření actvity MainActivity.java: 1. public class MainActivity extends Activity { 2. @Override 3. public void oncreate(bundle savedinstancestate) { 4. super.oncreate(savedinstancestate); 5. setcontentview(r.layout.main); 6. } A7.nezapomeneme zavést v AndroiManifest.xml: } cz.cvut.hello.world.mainactivity.java 1. <activity 2. android:name=".mainactivity" 3. android:label="@string/app_name"> 4. </activity>

18 Ikonka v app launcheru Pro přidání ikonky do app launcheru je zapotřebí přidat příslušný intent-filter 1. <activity 2. android:name=".mainactivity" 3. android:label="fit Checker" 4. <intent-filter> 5. <action 6. android:name="android.intent.action.main" /> 7. <category 8. android:name="android.intent.category.launcher" /> 9. </intent-filter> 10.</activity>

19 MainActivity.java Nastavíme activitě layout res/layout/main.xml setcontentview(r.layout.main); Získáme reference na widgety, s kterými chceme pracovat TextView mytextview = (TextView) findviewbyid(r.id.mytextview); Button mybutton = (Button) findviewbyid(r.id.mybutton);

20 Nastavení události Změna textu v TextView: mytextview.settext("hello World"); Nastavíme tlačítku událost (View.OnClickListener) 1. mybutton.setonclicklistener(new View.OnClickListener() { 2. @Override 3. public void onclick(view v) { 4. mytextview.settext("android FTW!!!"); 5. mybutton.setvisibility(view.invisible); 6. } 7. });

21 Activity interakce s widgety MainActivity.java 1. public class MainActivity extends Activity { 2. private TextView mytextview; 3. private Button mybutton; 4. 5. @Override 6. public void oncreate(bundle savedinstancestate) { 7. super.oncreate(savedinstancestate); 8. setcontentview(r.layout.main); 9. mytextview = (TextView) findviewbyid(r.id.mytextview); 10. mybutton = (Button) findviewbyid(r.id.mybutton); 11. mytextview.settext("hello World"); 12. mybutton.setonclicklistener(new OnClickListener() { 13. @Override 14. public void onclick(view v) { 15. mytextview.settext("android FTW!!!"); 16. mybutton.setvisibility(view.invisible); 17. } 18. }); 19. } 20. }

Activity interakce s widgety Click 22

23 Log android.util.log Základní debugovací nástroj Typy ASSERT DEBUG ERROR INFO VERBOSE WARN Při release buildu by se mělo odstranit použití VERBOSE logu Výpis logu na v příkazové řádce na PC adb logcat Je nutné mít povolené Ladění USB Konvence: private static final String TAG = "MyActivity"; Log.v(TAG, "index=" + i);