The world of open source libraries and tools is vast for Android developers. Writing apps using solely Android SDK is impractical. Libraries can help you in many ways. They can speed up your development, save you creating boilerplate code and dealing with platform fragmentation, simplify your code and make it more readable and maintainable. In the talk I’m showing how several truly useful libraries can help a developer.
Presented at MobCon Europe 2017.
Guide to the jungle of testing frameworksTomáš Kypta
There are many tools, libraries and frameworks available for Android developers to test their applications. The jungle is huge and it's not easy to find the right ones. Some frameworks are good for unit testing, some are good for instrumentation testing, and some can be used for both. Some have great capabilities but annoying weaknesses. Some are good for testing UI, other allow you to make good mocks. We will look at many frameworks, the popular ones like Mockito, Robolectric, Espresso, and some other.
Presented at GDG DevFest Minsk 2016.
More Related Content
Similar to Programování pro Android - úvod, FI MUNI, 2013
The world of open source libraries and tools is vast for Android developers. Writing apps using solely Android SDK is impractical. Libraries can help you in many ways. They can speed up your development, save you creating boilerplate code and dealing with platform fragmentation, simplify your code and make it more readable and maintainable. In the talk I’m showing how several truly useful libraries can help a developer.
Presented at MobCon Europe 2017.
Guide to the jungle of testing frameworksTomáš Kypta
There are many tools, libraries and frameworks available for Android developers to test their applications. The jungle is huge and it's not easy to find the right ones. Some frameworks are good for unit testing, some are good for instrumentation testing, and some can be used for both. Some have great capabilities but annoying weaknesses. Some are good for testing UI, other allow you to make good mocks. We will look at many frameworks, the popular ones like Mockito, Robolectric, Espresso, and some other.
Presented at GDG DevFest Minsk 2016.
Guide to the jungle of testing frameworksTomáš Kypta
There are many tools, libraries and frameworks available for Android developers to test their applications. The jungle is huge and it's not easy to find the right ones. Some frameworks are good for unit testing, some are good for instrumentation testing, and some can be used for both. Some have great capabilities but annoying weaknesses. Some are good for testing UI, other allow you to make good mocks. We will look at many frameworks, the popular ones like Mockito, Robolectric, Espresso, and some other.
Presented at GDG DevFest Pilsen 2016.
A practical guide to using RxJava on Android. Tips for improving your app architecture with reactive programming. What are the advantages and disadvantages of using RxJava over standard architecture? And how to connect with other popular Android libraries?
Presented at GDG DevFest The Netherlands 2016.
A practical guide to using RxJava on Android. Tips for improving your app architecture with reactive programming. What are the advantages and disadvantages of using RxJava over standard architecture? And how to connect with other popular Android libraries?
Presented at Droidcon Greece 2016.
Lecture on Reactive programming on Android, mDevCamp 2016.
A practical guide to using RxJava on Android. Tips for improving your app architecture with reactive programming. What are the advantages and disadvantages of using RxJava over standard architecture? And how to connect with other popular Android libraries?
Lecture on Android unit testing and instrumentation testing, mDevCamp 2015.
Overview of available libraries and frameworks, and their capabilities and drawbacks.
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
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
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
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()
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;
}
}
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