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

1,373 views

Published on

Introductory lecture to Android development. Faculty of Informatics, Masaryk University, 2013.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,373
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Programování pro Android - úvod Tomáš Kypta @TomasKypta
  2. 2. Obsah1. OS Android2. Android ekosystém3. Specifika platformy4. Android SDK a vývojové nástroje5. Základní stavební kameny aplikací, manifest6. Hello World7. Aktivity, intenty, UI8. Menu, toast, dialog, notifikace
  3. 3. OS Androidzaložen na Linuxuopen-source - http://source.android.com/telefony, tablety, Google TVstovky různých zařízení
  4. 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. 5. Verze Androiduzáří 2008 Android 1.0prosinec 2010 Android 2.3 Gingerbreadúnor 2011 Android 3.0 Honeycombříjen 2011 Android 4.0 Ice Cream Sandwichčerven 2012 Android 4.1 JellyBeanaktuálně poslední verze Android 4.2.2
  6. 6. Aktuální podíl verzí Androidu
  7. 7. Android ekosystémsvětově nejpopulárnější platformaGoogle Play - http://play.google.com> 800 000 aplikací
  8. 8. Google Play25 mld nainstalovaných aplikací (září 2012)~ 70% aplikací zdarmaobsahuje také hudbu a knihy (v ČR a SR zatímnedostupné)
  9. 9. Publikace v Google Playregistrační poplatek $25vracení aplikací do 15 minutmonetizace - placené aplikace, in-app billing, reklamy
  10. 10. Problémy Androidufragmentace“vylepšení” výrobců a operátorůpodpora a aktualizaceotevřenost Google Playmalware - uživatelé
  11. 11. Systémová oprávněníuživatelé akceptují při instalaciaplikace lze nainstalovat i přímo z balíčku (.apk)
  12. 12. Vývojprogramuje se v jazyce “Java”lze vytvářet také nativní aplikacevývojové nástroje pro všechny platformy Windows, Mac OS X, Linuxpodpora vývojových prostředí oficiální ADT plugin pro Eclipse IntelliJ IDEA (Community Edition) plugin pro Netbeansvývoj na zařízeních není omezen
  13. 13. Android SDKandroid - Android SDK and AVD Manageradb - Android Debug Bridgeddms - Dalvik Debug Monitoremulatoraapt, jarsigner, zipalignlogcat, lint, hierarchyviewer, traceview, systraceProGuard
  14. 14. Android SDKdokumentaceukázkové aplikaceknihovny compatibility libraries - support-v4 AdMob Google Analytics billing, licensing
  15. 15. Další knihovny ActionBarSherlock - http://actionbarsherlock.com/ NineOldAndroids - http://nineoldandroids.com/ SlidingMenu - https://github.com/jfeinstein10/SlidingMenu Flurry Analytics, Crittercism
  16. 16. Základy vývojeaplikace jsou složeny komponent aktivity služby content providery broadcast receiveryAndroidManifest.xml definuje komponenty aplikaceresourcy
  17. 17. Activity obrazovka aplikace obsahujicí UI prvky jediná vizuální komponenta příklady seznam emailů detail emailu psaní emailu nastavení aplikace
  18. 18. Servicenemá UIdlouhotrvající taskylze startovat jednorázově nebo se připojovat kdlouhoběžící služběpříklady služba pro přehrávání hudby služba pro stahování dat
  19. 19. Content Providerposkuje přístup k datůmuložiště dat může být jakékoliv - databáze, web,soubory na diskuskrz content provider lze data získávat i měnitpříklady všechny systémové databáze - kontakty, SMS
  20. 20. Broadcast Receiverreaguje na broadcastbroadcasty jsou posílání napříč systémemlze registrovat staticky i dynamicky (nemusí být v manifestu)systémové i vlastní broadcastybroadcasty lze i vysílatpříklady příchozí SMS, volání odpojení SD karty vypnutí obrazovky
  21. 21. AndroidManifest.xmlkomponenty aplikacedefinuje přístupové body aplikacerozsah kompatibilních verzí systémuoprávnění - vyžadovaná i definovanávyžadované hardware a software vlastnostivyžadovanou konfiguraci
  22. 22. Intent asynchronní zpráva propojuje komponenty (vyjma Content Providerů) startuje aktivity startuje servicy a vyváří spojení zasílání broadcastů
  23. 23. Hello Worldukoly si stáhněte z http://goo.gl/icA8x
  24. 24. Sestavení
  25. 25. Build
  26. 26. Build
  27. 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. 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
  29. 29. Životní cyklus aktivit
  30. 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. 31. Změny konfiguracepři změně konfigurace jsou aktivity zabity a znovuvytvořenyzměny konfigurace - rotace, otevření hw klávesnicenutné správně ošetřit uložit stav v onSaveInstanceState() načíst stav v onCreate() nebo onRestoreInstanceState()
  32. 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. 33. UI - seznamyzobrazují seznam prvkůprvků může být obrovské množství recyklace viewsvyužívají adaptery - most mezi daty a views
  34. 34. Aplikační resourcy obrázky (drawables) layouty lokalizační řetězce barvy menu rozměry animace binární (raw) pole, identifikátory, ...
  35. 35. Optimalizace vzhledunutné ř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. 36. Optimalizace vzhledurůzné velikosti displeje small normal large xlarge - ošetřit scrollování obrazovky ScrollView ListView, GridView
  37. 37. Optimalizace vzhleduaktuální stav
  38. 38. Resourcy - jednotkydp - density-independent pixelsp - scale-independent pixelnepoužívat px
  39. 39. Resourcyv kódu přístupné skrz R.java před své identifikátorysprávná verze resourcu je zvolena za běhu podleaktuální konfigurace
  40. 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. 41. Fragmentace verzí OSaplikaci překládám vůči build targetu project.properties - target=android-17aplikaci lze pustit na zařízeních v rozmezí definovanémv manifestu <uses-sdkAndroidManifest.xml android:minSdkVersion="8" android:targetSdkVersion="17" />
  42. 42. Fragmentace verzí OSif (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. 43. Fragmentykousky aplikačního UIs příchodem tabletů je nutné řešit rozdílné dělení doobrazovek
  44. 44. Fragmentyfragment != aktivitaje to část aktivityod Androidu 3.0support knihovna v4 backportuje do Androidu 1.6+díky fragmentům lze vytvořit jednu aplikaci pro telefony itabletylze měnit za běhu, ukládat na backstacklze vytvářet fragmenty bez UI - worker fragment
  45. 45. Vláknahlavní vlákno = UI vláknoneblokujte hlavní vláknopro časově náročné oprace nutné vytvářet backgroundvláknak UI nutné vždy přistupovat pouze v hlavním vlákněnetworking a IO operace je třeba dělat v backgroundvláknědetaily v příští přednášce
  46. 46. ActionBarUI a navigační prvek moderníchaplikacíod Androidu 3.0knihovna ActionBarSherlockbackportuje do Androidu 2.x
  47. 47. Menupro < Android 3.0 schováno pod menu tlačítkemAndroid 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
  48. 48. Logovánítřída android.util.Logzobrazeny v ddms nebo IDE
  49. 49. Toast nemodální informace pro uživateleToast.makeText(MainActivity.this, R.string.my_toast_text, Toast.LENGTH_SHORT).show();
  50. 50. Dialogyplovoucí okno aplikace standardní dialogy ProgressDialog AlertDialog vlastní dialogynyní používat s pomocí DialogFragmentu
  51. 51. Notifikacezpráva pro uživatele zobrazená vestatus baruuživatel může otevřít notificationdrawer pro detaillze definovat UI a click akciNotificationCompat.Builder
  52. 52. PreferencesSharedPreferences 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();
  53. 53. Odkazyhttp://developer.android.comhttp://android-developers.blogspot.comhttp://source.android.comhttp://stackoverflow.com/questions/tagged/androidhttp://www.youtube.com/androiddevelopers
  54. 54. ... to be continued

×