SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Downloaden Sie, um offline zu lesen
Programování pro Android
        - úvod
        Tomáš Kypta
          @TomasKypta
Obsah
1. OS Android
2. Android ekosystém
3. Specifika platformy
4. Android SDK a vývojové nástroje
5. Základní stavební kameny aplikací, manifest
6. Hello World
7. Aktivity, intenty, UI
8. Menu, toast, dialog, notifikace
OS Android

založen na Linuxu
open-source - http://source.android.com/
telefony, tablety, Google TV
stovky různých zařízení
Historie

 2003 založeno Android inc.
 2005 koupeni Googlem
 2008 první Android telefon - T-Mobile G1
 nyní přes 700 mil. aktivovaných zařízení
Verze Androidu
září 2008 Android 1.0
prosinec 2010 Android 2.3 Gingerbread
únor 2011 Android 3.0 Honeycomb
říjen 2011 Android 4.0 Ice Cream Sandwich
červen 2012 Android 4.1 JellyBean
aktuálně poslední verze Android 4.2.2
Aktuální podíl verzí Androidu
Android ekosystém


světově nejpopulárnější platforma
Google Play - http://play.google.com
> 800 000 aplikací
Google Play


25 mld nainstalovaných aplikací (září 2012)
~ 70% aplikací zdarma
obsahuje také hudbu a knihy (v ČR a SR zatím
nedostupné)
Publikace v Google Play


registrační poplatek $25
vracení aplikací do 15 minut
monetizace - placené aplikace, in-app billing, reklamy
Problémy Androidu

fragmentace
“vylepšení” výrobců a operátorů
podpora a aktualizace
otevřenost Google Play
malware - uživatelé
Systémová oprávnění


uživatelé akceptují při instalaci
aplikace lze nainstalovat i přímo z balíčku (.apk)
Vývoj
programuje se v jazyce “Java”
lze vytvářet také nativní aplikace
vývojové nástroje pro všechny platformy
   Windows, Mac OS X, Linux
podpora vývojových prostředí
   oficiální ADT plugin pro Eclipse
   IntelliJ IDEA (Community Edition)
   plugin pro Netbeans
vývoj na zařízeních není omezen
Android SDK
android - Android SDK and AVD Manager
adb - Android Debug Bridge
ddms - Dalvik Debug Monitor
emulator
aapt, jarsigner, zipalign
logcat, lint, hierarchyviewer, traceview, systrace
ProGuard
Android SDK
dokumentace
ukázkové aplikace
knihovny
  compatibility libraries - support-v4
  AdMob
  Google Analytics
  billing, licensing
Další knihovny

 ActionBarSherlock - http://actionbarsherlock.com/
 NineOldAndroids - http://nineoldandroids.com/
 SlidingMenu - https://github.com/jfeinstein10/SlidingMenu
 Flurry Analytics, Crittercism
Základy vývoje
aplikace jsou složeny komponent
  aktivity
  služby
  content providery
  broadcast receivery
AndroidManifest.xml definuje komponenty aplikace
resourcy
Activity
 obrazovka aplikace obsahujicí UI prvky
 jediná vizuální komponenta
 příklady
   seznam emailů
   detail emailu
   psaní emailu
   nastavení aplikace
Service
nemá UI
dlouhotrvající tasky
lze startovat jednorázově nebo se připojovat k
dlouhoběžící službě
příklady
  služba pro přehrávání hudby
  služba pro stahování dat
Content Provider

poskuje přístup k datům
uložiště dat může být jakékoliv - databáze, web,
soubory na disku
skrz content provider lze data získávat i měnit
příklady
  všechny systémové databáze - kontakty, SMS
Broadcast Receiver
reaguje na broadcast
broadcasty jsou posílání napříč systémem
lze registrovat staticky i dynamicky (nemusí být v manifestu)
systémové i vlastní broadcasty
broadcasty lze i vysílat
příklady
   příchozí SMS, volání
   odpojení SD karty
   vypnutí obrazovky
AndroidManifest.xml
komponenty aplikace
definuje přístupové body aplikace
rozsah kompatibilních verzí systému
oprávnění - vyžadovaná i definovaná
vyžadované hardware a software vlastnosti
vyžadovanou konfiguraci
Intent

 asynchronní zpráva
 propojuje komponenty (vyjma Content Providerů)
 startuje aktivity
 startuje servicy a vyváří spojení
 zasílání broadcastů
Hello World
ukoly si stáhněte z http://goo.gl/icA8x
Sestavení
Build
Build
Aktivity podrobněji

 podtřída android.app.Activity
 aplikace mají typicky spoustu aktivit
 aktivity jsou interně drženy v zásobníku aktivit
   lze se vracet k předchozím obrazovkám
Životní cyklus aktivit
 aktivity se vyskytují v různých stavech během svého
 života
   na popředí
   viditelné
   zastavené
   zabité
 systém volá callbacky při přechodu mezi aktivitami
Životní cyklus aktivit
Intenty a aktivity
 vytváření aktivit explicitně
 Intent intent = new Intent(MainActivity.this, OtherActivity.class);
 startActivity(intent);



 vytváření aktivit implicitně
 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(video.getUrl()));
 startActivity(intent);



 vytváření aktivit pro výsledek
 Intent intent = new Intent(MainActivity.this, OtherActivity.class);
 startActivityForResult(intent, REQUEST_USER);
Změny konfigurace

při změně konfigurace jsou aktivity zabity a znovu
vytvořeny
změny konfigurace - rotace, otevření hw klávesnice
nutné správně ošetřit
  uložit stav v onSaveInstanceState()
  načíst stav v onCreate() nebo onRestoreInstanceState()
Uživatelské rozhraní
 definováno hierarchií views
 jednoduchá views (widgety)
   Button, TextView, EditText, ProgressBar, ...
   WebView, MapView
 layouty - kontejnery
   LinearLayout, RelativeLayout, FrameLayout
 seznamy - využívají adaptery
   ListView, GridView, Spinner, Gallery
UI - seznamy

zobrazují seznam prvků
prvků může být obrovské množství
  recyklace views
využívají adaptery - most mezi daty a views
Aplikační resourcy
 obrázky (drawables)
 layouty
 lokalizační řetězce
 barvy
 menu
 rozměry
 animace
 binární (raw)
 pole, identifikátory, ...
Optimalizace vzhledu

nutné řešit různá rozlišení   MyProject/
                                  res/
                                       drawable-xhdpi/
  ldpi - 0.75x                             awesomeimage.png
                                       drawable-hdpi/
  mdpi - 1.0x                              awesomeimage.png
                                       drawable-mdpi/
                                           awesomeimage.png
  hdpi - 1.5x                          drawable-ldpi/
                                           awesomeimage.png
  xhdpi - 2.0x
Optimalizace vzhledu
různé velikosti displeje
   small
   normal
   large
   xlarge
 - ošetřit scrollování obrazovky
   ScrollView

   ListView, GridView
Optimalizace vzhledu
aktuální stav
Resourcy - jednotky


dp - density-independent pixel
sp - scale-independent pixel
nepoužívat px
Resourcy


v kódu přístupné skrz R.java před své identifikátory
správná verze resourcu je zvolena za běhu podle
aktuální konfigurace
Resource kvalifikátory
 koncovky složek resourců, které určují k jaké konfiguraci se obsah vstahuje
 en, cs, fr, en-rUS
 small, normal, large, xlarge
 port, land
 ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
 v4, v11
 sw<N>dp - sw600dp
 w<N>dp - w720dp
 h<N>dp - h480dp
 lze kombinovat
Fragmentace verzí OS

aplikaci překládám vůči build targetu
  project.properties - target=android-17
aplikaci lze pustit na zařízeních v rozmezí definovaném
v manifestu
                        <uses-sdk
AndroidManifest.xml             android:minSdkVersion="8"
                                android:targetSdkVersion="17" />
Fragmentace verzí OS
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {
     // pouze na novějším OS než Android 2.3
}



private static boolean fragmentsSupported = false;

private static void checkFragmentsSupported() throws NoClassDefFoundError {
    fragmentsSupported = android.app.Fragment.class != null;
}

static {
    try {
       checkFragmentsSupported();
    } catch (NoClassDefFoundError e) {
       fragmentsSupported = false;
    }
}
Fragmenty
kousky aplikačního UI
s příchodem tabletů je nutné řešit rozdílné dělení do
obrazovek
Fragmenty
fragment != aktivita
je to část aktivity
od Androidu 3.0
support knihovna v4 backportuje do Androidu 1.6+
díky fragmentům lze vytvořit jednu aplikaci pro telefony i
tablety
lze měnit za běhu, ukládat na backstack
lze vytvářet fragmenty bez UI - worker fragment
Vlákna
hlavní vlákno = UI vlákno
neblokujte hlavní vlákno
pro časově náročné oprace nutné vytvářet background
vlákna
k UI nutné vždy přistupovat pouze v hlavním vlákně
networking a IO operace je třeba dělat v background
vlákně
detaily v příští přednášce
ActionBar
UI a navigační prvek moderních
aplikací
od Androidu 3.0
knihovna ActionBarSherlock
backportuje do Androidu 2.x
Menu
pro < Android 3.0 schováno pod menu tlačítkem
Android 3.0+ v ActionBaru
  položky mohou být zobrazeny v ActionBaru
  při nedostatku místa se zobrazují v overflow menu v
  ActionBaru nebo pod hw menu tlačítkem (pokud ho
  zařízení má)
menu resource
Logování
třída android.util.Log
zobrazeny v ddms nebo IDE
Toast
   nemodální informace pro uživatele
Toast.makeText(MainActivity.this, R.string.my_toast_text, Toast.LENGTH_SHORT).show();
Dialogy
plovoucí okno aplikace
  standardní dialogy
    ProgressDialog
    AlertDialog
  vlastní dialogy
nyní používat s pomocí DialogFragmentu
Notifikace
zpráva pro uživatele zobrazená ve
status baru
uživatel může otevřít notification
drawer pro detail
lze definovat UI a click akci
NotificationCompat.Builder
Preferences
SharedPreferences prefs =
    PreferenceManager.getDefaultSharedPreferences(context);

SharedPreferences prefs =
    config.getSharedPreferences(PREFS_FILE_NAME,
                                Activity.MODE_PRIVATE);


int storedValue = prefs.getInt(SOME_KEY, defaultValue);


 SharedPreferences.Editor editor = prefs.edit();
 editor.putInt(SOME_KEY, storedValue);
 editor.commit();
Odkazy
http://developer.android.com
http://android-developers.blogspot.com
http://source.android.com
http://stackoverflow.com/questions/tagged/android
http://www.youtube.com/androiddevelopers
... to be continued

Weitere ähnliche Inhalte

Ähnlich wie Programování pro Android - úvod, FI MUNI, 2013

Android nálevna (Czech / Android for beginners)
Android nálevna (Czech / Android for beginners)Android nálevna (Czech / Android for beginners)
Android nálevna (Czech / Android for beginners)
pavelpetrek
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
Jiří Mareš
 
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Lex Vjatkin + Ondřej procházka: Jak to děláme ve WikidiLex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Develcz
 
Moderni trendy ve_vyvoji_aplikaci
Moderni trendy ve_vyvoji_aplikaciModerni trendy ve_vyvoji_aplikaci
Moderni trendy ve_vyvoji_aplikaci
RENESTEIN
 
Strasti a slasti vývoje wp7 aplikací
Strasti a slasti vývoje wp7 aplikacíStrasti a slasti vývoje wp7 aplikací
Strasti a slasti vývoje wp7 aplikací
René Stein
 
Vývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročiléVývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročilé
René Stein
 

Ähnlich wie Programování pro Android - úvod, FI MUNI, 2013 (20)

Android nálevna (Czech / Android for beginners)
Android nálevna (Czech / Android for beginners)Android nálevna (Czech / Android for beginners)
Android nálevna (Czech / Android for beginners)
 
View5 technicka 2011
View5 technicka 2011View5 technicka 2011
View5 technicka 2011
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
 
Lotus Notes 7
Lotus Notes 7Lotus Notes 7
Lotus Notes 7
 
Stream Circle - Cloud based NDI playout a CG
Stream Circle - Cloud based NDI playout a CGStream Circle - Cloud based NDI playout a CG
Stream Circle - Cloud based NDI playout a CG
 
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!
 
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Lex Vjatkin + Ondřej procházka: Jak to děláme ve WikidiLex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
 
06 Cvičení.pptx
06 Cvičení.pptx06 Cvičení.pptx
06 Cvičení.pptx
 
Přechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítíchPřechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítích
 
Ivan Kutil: Google Apps pro firmy
Ivan Kutil: Google Apps pro firmyIvan Kutil: Google Apps pro firmy
Ivan Kutil: Google Apps pro firmy
 
TNPW2-2011-06
TNPW2-2011-06TNPW2-2011-06
TNPW2-2011-06
 
Interaktivní 3D služby v cloudu
Interaktivní 3D služby v clouduInteraktivní 3D služby v cloudu
Interaktivní 3D služby v cloudu
 
Zaverecny ukol
Zaverecny ukolZaverecny ukol
Zaverecny ukol
 
Moderni trendy ve_vyvoji_aplikaci
Moderni trendy ve_vyvoji_aplikaciModerni trendy ve_vyvoji_aplikaci
Moderni trendy ve_vyvoji_aplikaci
 
Strasti a slasti vývoje wp7 aplikací
Strasti a slasti vývoje wp7 aplikacíStrasti a slasti vývoje wp7 aplikací
Strasti a slasti vývoje wp7 aplikací
 
Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2
 
TNPW2-2011-08
TNPW2-2011-08TNPW2-2011-08
TNPW2-2011-08
 
Mojo SP Obhajoba
Mojo SP ObhajobaMojo SP Obhajoba
Mojo SP Obhajoba
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
Vývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročiléVývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročilé
 

Mehr von Tomáš Kypta

Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012
Tomáš Kypta
 

Mehr von Tomáš Kypta (20)

Modern Android app library stack
Modern Android app library stackModern Android app library stack
Modern Android app library stack
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworksGuide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
 
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworksGuide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
 
Practical RxJava for Android
Practical RxJava for AndroidPractical RxJava for Android
Practical RxJava for Android
 
Practical RxJava for Android
Practical RxJava for AndroidPractical RxJava for Android
Practical RxJava for Android
 
Reactive programming on Android
Reactive programming on AndroidReactive programming on Android
Reactive programming on Android
 
Android Develpment vol. 3, MFF UK, 2015
Android Develpment vol. 3, MFF UK, 2015Android Develpment vol. 3, MFF UK, 2015
Android Develpment vol. 3, MFF UK, 2015
 
Writing testable Android apps
Writing testable Android appsWriting testable Android apps
Writing testable Android apps
 
Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015
 
ProGuard
ProGuardProGuard
ProGuard
 
Unit testing and Android
Unit testing and AndroidUnit testing and Android
Unit testing and Android
 
Reactive programming on Android
Reactive programming on AndroidReactive programming on Android
Reactive programming on Android
 
Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014Android development - the basics, MFF UK, 2014
Android development - the basics, MFF UK, 2014
 
Android Libraries
Android LibrariesAndroid Libraries
Android Libraries
 
Android Development 201
Android Development 201Android Development 201
Android Development 201
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
 
Užitečné Android knihovny pro vývoj a testování
Užitečné Android knihovny pro vývoj a testováníUžitečné Android knihovny pro vývoj a testování
Užitečné Android knihovny pro vývoj a testování
 
Stylování ActionBaru
Stylování ActionBaruStylování ActionBaru
Stylování ActionBaru
 
Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012Android development - the basics, MFF UK, 2012
Android development - the basics, MFF UK, 2012
 
Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012Android development - the basics, FI MUNI, 2012
Android development - the basics, FI MUNI, 2012
 

Programování pro Android - úvod, FI MUNI, 2013

  • 1. Programování pro Android - úvod Tomáš Kypta @TomasKypta
  • 2. Obsah 1. OS Android 2. Android ekosystém 3. Specifika platformy 4. Android SDK a vývojové nástroje 5. Základní stavební kameny aplikací, manifest 6. Hello World 7. Aktivity, intenty, UI 8. Menu, toast, dialog, notifikace
  • 3. OS Android založen na Linuxu open-source - http://source.android.com/ telefony, tablety, Google TV stovky různých zařízení
  • 4. Historie 2003 založeno Android inc. 2005 koupeni Googlem 2008 první Android telefon - T-Mobile G1 nyní přes 700 mil. aktivovaných zařízení
  • 5. Verze Androidu září 2008 Android 1.0 prosinec 2010 Android 2.3 Gingerbread únor 2011 Android 3.0 Honeycomb říjen 2011 Android 4.0 Ice Cream Sandwich červen 2012 Android 4.1 JellyBean aktuálně poslední verze Android 4.2.2
  • 7. Android ekosystém světově nejpopulárnější platforma Google Play - http://play.google.com > 800 000 aplikací
  • 8. Google Play 25 mld nainstalovaných aplikací (září 2012) ~ 70% aplikací zdarma obsahuje také hudbu a knihy (v ČR a SR zatím nedostupné)
  • 9. Publikace v Google Play registrační poplatek $25 vracení aplikací do 15 minut monetizace - placené aplikace, in-app billing, reklamy
  • 10. Problémy Androidu fragmentace “vylepšení” výrobců a operátorů podpora a aktualizace otevřenost Google Play malware - uživatelé
  • 11. Systémová oprávnění uživatelé akceptují při instalaci aplikace lze nainstalovat i přímo z balíčku (.apk)
  • 12. Vývoj programuje se v jazyce “Java” lze vytvářet také nativní aplikace vývojové nástroje pro všechny platformy Windows, Mac OS X, Linux podpora vývojových prostředí oficiální ADT plugin pro Eclipse IntelliJ IDEA (Community Edition) plugin pro Netbeans vývoj na zařízeních není omezen
  • 13. Android SDK android - Android SDK and AVD Manager adb - Android Debug Bridge ddms - Dalvik Debug Monitor emulator aapt, jarsigner, zipalign logcat, lint, hierarchyviewer, traceview, systrace ProGuard
  • 14. Android SDK dokumentace ukázkové aplikace knihovny compatibility libraries - support-v4 AdMob Google Analytics billing, licensing
  • 15. Další knihovny ActionBarSherlock - http://actionbarsherlock.com/ NineOldAndroids - http://nineoldandroids.com/ SlidingMenu - https://github.com/jfeinstein10/SlidingMenu Flurry Analytics, Crittercism
  • 16. Základy vývoje aplikace jsou složeny komponent aktivity služby content providery broadcast receivery AndroidManifest.xml definuje komponenty aplikace resourcy
  • 17. Activity obrazovka aplikace obsahujicí UI prvky jediná vizuální komponenta příklady seznam emailů detail emailu psaní emailu nastavení aplikace
  • 18. Service nemá UI dlouhotrvající tasky lze startovat jednorázově nebo se připojovat k dlouhoběžící službě příklady služba pro přehrávání hudby služba pro stahování dat
  • 19. Content Provider poskuje přístup k datům uložiště dat může být jakékoliv - databáze, web, soubory na disku skrz content provider lze data získávat i měnit příklady všechny systémové databáze - kontakty, SMS
  • 20. Broadcast Receiver reaguje na broadcast broadcasty jsou posílání napříč systémem lze registrovat staticky i dynamicky (nemusí být v manifestu) systémové i vlastní broadcasty broadcasty lze i vysílat příklady příchozí SMS, volání odpojení SD karty vypnutí obrazovky
  • 21. AndroidManifest.xml komponenty aplikace definuje přístupové body aplikace rozsah kompatibilních verzí systému oprávnění - vyžadovaná i definovaná vyžadované hardware a software vlastnosti vyžadovanou konfiguraci
  • 22. Intent asynchronní zpráva propojuje komponenty (vyjma Content Providerů) startuje aktivity startuje servicy a vyváří spojení zasílání broadcastů
  • 23. Hello World ukoly si stáhněte z http://goo.gl/icA8x
  • 25. Build
  • 26. Build
  • 27. Aktivity podrobněji podtřída android.app.Activity aplikace mají typicky spoustu aktivit aktivity jsou interně drženy v zásobníku aktivit lze se vracet k předchozím obrazovkám
  • 28. Životní cyklus aktivit aktivity se vyskytují v různých stavech během svého života na popředí viditelné zastavené zabité systém volá callbacky při přechodu mezi aktivitami
  • 30. Intenty a aktivity vytváření aktivit explicitně Intent intent = new Intent(MainActivity.this, OtherActivity.class); startActivity(intent); vytváření aktivit implicitně Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(video.getUrl())); startActivity(intent); vytváření aktivit pro výsledek Intent intent = new Intent(MainActivity.this, OtherActivity.class); startActivityForResult(intent, REQUEST_USER);
  • 31. Změny konfigurace při změně konfigurace jsou aktivity zabity a znovu vytvořeny změny konfigurace - rotace, otevření hw klávesnice nutné správně ošetřit uložit stav v onSaveInstanceState() načíst stav v onCreate() nebo onRestoreInstanceState()
  • 32. Uživatelské rozhraní definováno hierarchií views jednoduchá views (widgety) Button, TextView, EditText, ProgressBar, ... WebView, MapView layouty - kontejnery LinearLayout, RelativeLayout, FrameLayout seznamy - využívají adaptery ListView, GridView, Spinner, Gallery
  • 33. UI - seznamy zobrazují seznam prvků prvků může být obrovské množství recyklace views využívají adaptery - most mezi daty a views
  • 34. Aplikační resourcy obrázky (drawables) layouty lokalizační řetězce barvy menu rozměry animace binární (raw) pole, identifikátory, ...
  • 35. Optimalizace vzhledu nutné řešit různá rozlišení MyProject/ res/ drawable-xhdpi/ ldpi - 0.75x awesomeimage.png drawable-hdpi/ mdpi - 1.0x awesomeimage.png drawable-mdpi/ awesomeimage.png hdpi - 1.5x drawable-ldpi/ awesomeimage.png xhdpi - 2.0x
  • 36. Optimalizace vzhledu různé velikosti displeje small normal large xlarge - ošetřit scrollování obrazovky ScrollView ListView, GridView
  • 38. Resourcy - jednotky dp - density-independent pixel sp - scale-independent pixel nepoužívat px
  • 39. Resourcy v kódu přístupné skrz R.java před své identifikátory správná verze resourcu je zvolena za běhu podle aktuální konfigurace
  • 40. Resource kvalifikátory koncovky složek resourců, které určují k jaké konfiguraci se obsah vstahuje en, cs, fr, en-rUS small, normal, large, xlarge port, land ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi v4, v11 sw<N>dp - sw600dp w<N>dp - w720dp h<N>dp - h480dp lze kombinovat
  • 41. Fragmentace verzí OS aplikaci překládám vůči build targetu project.properties - target=android-17 aplikaci lze pustit na zařízeních v rozmezí definovaném v manifestu <uses-sdk AndroidManifest.xml android:minSdkVersion="8" android:targetSdkVersion="17" />
  • 42. Fragmentace verzí OS if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) { // pouze na novějším OS než Android 2.3 } private static boolean fragmentsSupported = false; private static void checkFragmentsSupported() throws NoClassDefFoundError {     fragmentsSupported = android.app.Fragment.class != null; } static {     try {        checkFragmentsSupported();     } catch (NoClassDefFoundError e) {        fragmentsSupported = false;     } }
  • 43. Fragmenty kousky aplikačního UI s příchodem tabletů je nutné řešit rozdílné dělení do obrazovek
  • 44. Fragmenty fragment != aktivita je to část aktivity od Androidu 3.0 support knihovna v4 backportuje do Androidu 1.6+ díky fragmentům lze vytvořit jednu aplikaci pro telefony i tablety lze měnit za běhu, ukládat na backstack lze vytvářet fragmenty bez UI - worker fragment
  • 45. Vlákna hlavní vlákno = UI vlákno neblokujte hlavní vlákno pro časově náročné oprace nutné vytvářet background vlákna k UI nutné vždy přistupovat pouze v hlavním vlákně networking a IO operace je třeba dělat v background vlákně detaily v příští přednášce
  • 46. ActionBar UI a navigační prvek moderních aplikací od Androidu 3.0 knihovna ActionBarSherlock backportuje do Androidu 2.x
  • 47. Menu pro < Android 3.0 schováno pod menu tlačítkem Android 3.0+ v ActionBaru položky mohou být zobrazeny v ActionBaru při nedostatku místa se zobrazují v overflow menu v ActionBaru nebo pod hw menu tlačítkem (pokud ho zařízení má) menu resource
  • 49. Toast nemodální informace pro uživatele Toast.makeText(MainActivity.this, R.string.my_toast_text, Toast.LENGTH_SHORT).show();
  • 50. Dialogy plovoucí okno aplikace standardní dialogy ProgressDialog AlertDialog vlastní dialogy nyní používat s pomocí DialogFragmentu
  • 51. Notifikace zpráva pro uživatele zobrazená ve status baru uživatel může otevřít notification drawer pro detail lze definovat UI a click akci NotificationCompat.Builder
  • 52. Preferences SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = config.getSharedPreferences(PREFS_FILE_NAME, Activity.MODE_PRIVATE); int storedValue = prefs.getInt(SOME_KEY, defaultValue); SharedPreferences.Editor editor = prefs.edit(); editor.putInt(SOME_KEY, storedValue); editor.commit();
  • 54. ... to be continued