SlideShare a Scribd company logo
Android Development
- the basics
Tomáš Kypta
Agenda
• Android platform and ecosystem	

• Android SDK and development tools	

• Hello World	

• building blocks of Android apps & the
manifest file	


• activities, widgets, intents
Agenda
• dialogs, toasts, notifications	

• fragments
Android platform
• Linux-based operating system	

• open-source (http://source.android.com/)	

• originally phone OS	

• tablet support (since Honeycomb, Android
3.0)	


• Google TV
History
• 2003, Android inc.	

• 2005, acquired by Google	

• Sep 2008, the first Android phone	

• T-Mobile G1	

• May 2010, Froyo (Android 2.2)	

• Feb 2011, Honeycomb (Android 3.0)
History
• Oct 2011, Ice Cream Sandwich (Android
4.0)	


• July 2012, Jelly Bean (Android 4.1)	

• July 2013, Jelly Bean (Android 4.3)	

• Oct 2013, KitKat (Android 4.4)
Platform Versions
Android ecosystem
• thousands of devices	

• the most popular mobile platform	

• 1.5 million new devices activated every day	

• September 3, 2013, 1 billion Android
devices have been activated	


• most devices made by Samsung
Google Play
• app can be acquired by app stores	

• Google Play, http://play.google.com	

• other stores	

• > 50 billion apps have been installed from
Google Play	


• July 2013, 1 million apps
Google Play
• purchasing	

• selling	

• Play Music, Play Books, ...
Google Play
• selling apps	

• 15 min return period	

• ads	

• AdMob, ...	

• in-app billing
Android “problems”
• fragmentation	

• manufacturer/carrier enhancements	

• updates & support	

• openness - low quality apps in Google Play	

• malware	

• users
Android security
• app can be installed directly	

• .apk file	

• user accepts app permissions when
installing or updating the app
Android security
• Verify Apps (Android 2.3+)	

• checks every app install	

• Google Play can remotely uninstall harmful
app
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
Development
• programming in “Java”	

• native apps possible (C++)	

• development tools platform friendly	

• Windows, Linux, Mac OS X
Development
• IDE support	

• Android Studio, IntelliJ IDEA, ADT plugin
for Eclispse, Netbeans	


• you can freely develop on any device
Android SDK
• android - Android SDK and AVD Manager	

• adb - Android Debug Bridge	

• monitor - (ddms & hierarchyviewer)	

• emulator	

• lint, Traceview, ProGuard	

• docs, samples
Libraries
• compatibility libraries	

• v4 - backports lots of newer functionality
to Android 1.6+	


• Google Play In-app Billing
Libraries
• Google Play Services	

• Google Maps	

• Games	

• Google+	

• Authorization
Libraries
• AdMob	

• Google Analytics, Flurry, Crittercism	

• Google Cloud Messaging
Android development - the basics, MFF UK, 2013
Hello World
Build
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
Android building blocks
• Activity	

• Service	

• Content provider	

• Broadcast receiver	

• AndroidManifest.xml
Activity
• screen with user interface	

• the only visual component	

• example - an email app	

• list of emails	

• details of an email	

• email composition
Service
• has no UI	

• long-running tasks	

• examples	

• music playback service	

• download service	

• sync service
Content Provider
• managers and shares application data	

• data storage doesn’t matter (db, web,
filesystem)	


• apps can query and modify data through
content provider	


• r/w permissions can be defined	

• examples - all system dbs (SMS, contacts, ...)
Broadcast Receiver
• responds to broadcasts	

• broadcasts are system wide	

• can be registered statically or dynamically	

• system or custom messages	

• examples - incoming SMS, incoming call,

screen turned off, low baterry, removed SD
card, BT device available, ...
AndroidManifest.xml
• defines what parts the app have	

• defines which endpoints are exposed	

• minimum/maximum API level	

• permissions	

• declare hardware and software features	

• require configuration
Intent
• asynchronous message	

• binds components together (all except
Content Provider)	


• starting activities	

• starting services and binding to services	

• sending broadcasts
Activity
• a subclass of android.app.Activity	

• app usually has many activities	

• activities managed in activity stack	

• newly started activity is placed on the top
of the stack
Activity Lifecycle
• activity can be in different states during its
lifecycle	


• foreground, visible, stopped, killed	


• when activity state changes a system
callback is called
Activity callbacks
• onCreate() - activity created	

• onStart() - activity visible for the user	

• onResume() - activity gains user focus	

• onPause() - system resuming another
activity	


• onStop() - activity becoming invisible to
the user
Activity callbacks
• onDestroy() - before activity is
destroyed	


• onRestart() - called if activity was

previously stopped, called prior to onStart()
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
Configuration changes
• when configuration changes, activities are
destroyed and recreated	


• default behaviour, can be changed	


• properly handle config changes	

•

onSaveInstanceState(Bundle)
Intent & Activity
• starting activity explicitly	

•

new Intent(context, MyActivity.class)!

•

new Intent(Intent.ACTION_VIEW, Uri.parse(“http://
developer.android.com”))!

• starting activity implicitly	

• starting activity for result
User Interface
• defined by a hierarchy of views	

• layouts = containers	

•

LinearLayout, RelativeLayout, FrameLayout, ...
User Interface
• widgets	

• UI objects	

• Button, TextView, EditText,
RadioButton, ...	


• WebView
User Interface
• list widgets	

• subclasses of AdapterView	

• display a list of items	

• use adapter to bind list do data	

•

ListView, GridView, Spinner, ...
Resources
• drawables	

• bitmaps	

• 9-patch png	

• state lists	

• layer lists	

• shape drawables
Resources
• layout	

• strings	

• colors	

• menus	

• dimensions	

• animations
Resources
• arrays	

• ids	

• raw	

• xml	

• ...
Screen sizes and
densities
Screen sizes and
densities
• How to handle different screen sizes and
densities?
Resources
• resources can be created in several
versions	


• the best version is selected according to
current device configuration in runtime	


• resource units	

• dp - density-independent pixel	

• sp - scale-independent pixel (for fonts)
Resource qualifiers
• suffixes for resource folders	

• drawables, drawable-mdpi, ...	

• values, values-cs	

• layout, layout-sw640dp	

• drawable-hdpi-v11
Resource qualifiers
• screen density - ldpi, mdpi, hdpi, xhdpi, ...	

• screen size - small, normal, large, xlarge	

• screen orientation - port, land	

• language - en, cs, sk, ...	

• version - v11, v14, ...
Resource qualifiers
• since Android 3.2	

• w<N>dp - available screen width, w600dp	

• h<N>dp - available screen heights, h720dp	

• sw<N>dp - smallest width (does not
change with orientation)
Resources
• accessed from code via generated R.java file
and resource ids	

• view.findViewById(R.id.txt_name)!
• txtName.setText(R.string.txt_name_label)
Android version
fragmentation
• How to handle different API levels available
on different devices?
Android version
fragmentation
• build target	

• API level the app is compiled against	

• AndroidManifest.xml	

•

<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="16" />
Android version
fragmentation
• handling versions in code	

if (Build.VERSION.SDK_INT <
Build.VERSION_CODES.GINGERBREAD) {!
// code for Android < 2.3!
}
Android version
fragmentation
private boolean functionalitySupported = false;!

!
static {!
try {!
checkFunctionalitySupported();!
} catch (NoClassDefFoundError e) {!
!

functionalitySupported = false;!

}!
}!

!
private static void checkFunctionalitySupported() throws !
!

!

!

!

!

!

NoClassDefFoundError {!

!
functionalitySupported = android.app.Fragment.class != null;!
}!
Fragments
• a piece of application UI	

• introduced to support more flexible UI	

• phones and tablets together in one app	

• fragment != activity	

• fragments are used within activities
Fragments
• since Android 3.0	

• support library v4 backports them to
Android 1.6+
Threads
• main thread = UI thread	

• do not ever block the UI thread!!!	

• use worker threads for time consuming
operations	


• UI toolkit not thread safe - never

manipulate UI from a worker thread
Menu
• menu resource	

• Android < 3.0 the whole menu hidden
under menu button	


• ActionBar since Android 3.0	

• items can be displayed in the action bar
Menu
• behaviour for items that don’t fit in the
action bar	


• hidden under menu button (if the device
has one)	


• system overflow icon in the action bar
Dialogs
• floating window screen
Dialogs
• standard dialogs	

• custom dialogs	

• activity with dialog style	

• since fragments used via DialogFragment
Dialogs
• might be tedious to create	

• difficult to style	

• StyledDialogs	

•

https://github.com/inmite/android-styled-dialogs	


• the library makes styling and using dialogs
a piece of cake
Toast
• simple non-modal information	

• displayed for a short period of time	

• doesn’t have user focus
Notifications
• a message that can be displayed to the user
outside your normal UI	


• displayed in notification area
Notifications
• user can open notification drawer to see
the details	


• app can define UI and click action	

•

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();
Sources
• developer.android.com	

• android-developers.blogspot.com	

• source.android.com	

• stackoverflow.com	

• youtube.com/androiddevelopers	

• svetandroida.cz
THE END

More Related Content

What's hot (20)

PDF
Android Presentation
Bram Vandeputte
 
PPTX
Tehran's 1st Android bootcamp - Part1
Mohsen Mirhoseini
 
PPTX
Android
BVP GTUG
 
PPTX
Android Apps Development Basic
Monir Zzaman
 
PPTX
What’s new in aNdroid [Google I/O Extended Bangkok 2016]
Sittiphol Phanvilai
 
PPTX
Basics of Android
sabi_123
 
PPTX
Android terminologies
jerry vasoya
 
PPTX
Arduino - Android Workshop Presentation
Hem Shrestha
 
PPTX
Android basic principles
Henk Laracker
 
PPT
Android Application Development Using Java
amaankhan
 
PDF
Android Development Workshop
Peter Robinett
 
PPTX
Android Development Basics
Prajakta Dharmpurikar
 
PDF
Introduction to Android Development
Aly Abdelkareem
 
PPTX
Android Development Made Easy - With Sample Project
Joemarie Amparo
 
PPTX
Android overview
Ahmed M. Abed
 
PDF
Android fundamentals and tutorial for beginners
Boom Shukla
 
PPT
Android application development
MadhuprakashR1
 
PPTX
Basic android-ppt
Srijib Roy
 
PDF
Android Development Tutorial V3
Diego Torres Milano
 
PPT
Introduction to Android, Architecture & Components
Vijay Rastogi
 
Android Presentation
Bram Vandeputte
 
Tehran's 1st Android bootcamp - Part1
Mohsen Mirhoseini
 
Android
BVP GTUG
 
Android Apps Development Basic
Monir Zzaman
 
What’s new in aNdroid [Google I/O Extended Bangkok 2016]
Sittiphol Phanvilai
 
Basics of Android
sabi_123
 
Android terminologies
jerry vasoya
 
Arduino - Android Workshop Presentation
Hem Shrestha
 
Android basic principles
Henk Laracker
 
Android Application Development Using Java
amaankhan
 
Android Development Workshop
Peter Robinett
 
Android Development Basics
Prajakta Dharmpurikar
 
Introduction to Android Development
Aly Abdelkareem
 
Android Development Made Easy - With Sample Project
Joemarie Amparo
 
Android overview
Ahmed M. Abed
 
Android fundamentals and tutorial for beginners
Boom Shukla
 
Android application development
MadhuprakashR1
 
Basic android-ppt
Srijib Roy
 
Android Development Tutorial V3
Diego Torres Milano
 
Introduction to Android, Architecture & Components
Vijay Rastogi
 

Similar to Android development - the basics, MFF UK, 2013 (20)

PPTX
Android quick talk
SenthilKumar Selvaraj
 
ODP
Java Meetup - 12-03-15 - Android Development Workshop
Kasun Dananjaya Delgolla
 
PPTX
Android Applications Development: A Quick Start Guide
Sergii Zhuk
 
PPT
Google android os
Faiq Ali Sayed
 
PPTX
Android v 1.1
Ravi Vyas
 
PPTX
Introduction to Android (before 2015)
Chien-Ming Chou
 
PDF
Android development first steps
christoforosnalmpantis
 
PDF
Android Training in Delhi NCR by Ducat
Shri Prakash Pandey
 
PPT
LA_FUNDAMENTALS OF Android_Unit I ONE.ppt
JeevaMCSEKIOT
 
PDF
Android Application Development Presentation
Mukesh Green Develoepr
 
PPTX
Android Technology
Omkar Tembe
 
PPTX
Android development orientation for starters v2
Joemarie Amparo
 
PPTX
Seminar on android app development
AbhishekKumar4779
 
PPT
AndroidOverview
stevenindands
 
PPTX
Introduction to android mobile app development.pptx
ridzah12
 
PPTX
Android a glimpse by kishan phadte(BCA, Third Year undergraduate at DM's Col...
DM's College, Assagao Goa
 
PPTX
ch1introduction about android development.pptx
Tekle12
 
PPTX
Introduction to android basics
Hasam Panezai
 
PPT
Google android os
Kirti Choudhary
 
PDF
Android Workshop_1
Purvik Rana
 
Android quick talk
SenthilKumar Selvaraj
 
Java Meetup - 12-03-15 - Android Development Workshop
Kasun Dananjaya Delgolla
 
Android Applications Development: A Quick Start Guide
Sergii Zhuk
 
Google android os
Faiq Ali Sayed
 
Android v 1.1
Ravi Vyas
 
Introduction to Android (before 2015)
Chien-Ming Chou
 
Android development first steps
christoforosnalmpantis
 
Android Training in Delhi NCR by Ducat
Shri Prakash Pandey
 
LA_FUNDAMENTALS OF Android_Unit I ONE.ppt
JeevaMCSEKIOT
 
Android Application Development Presentation
Mukesh Green Develoepr
 
Android Technology
Omkar Tembe
 
Android development orientation for starters v2
Joemarie Amparo
 
Seminar on android app development
AbhishekKumar4779
 
AndroidOverview
stevenindands
 
Introduction to android mobile app development.pptx
ridzah12
 
Android a glimpse by kishan phadte(BCA, Third Year undergraduate at DM's Col...
DM's College, Assagao Goa
 
ch1introduction about android development.pptx
Tekle12
 
Introduction to android basics
Hasam Panezai
 
Google android os
Kirti Choudhary
 
Android Workshop_1
Purvik Rana
 
Ad

More from Tomáš Kypta (18)

PDF
Modern Android app library stack
Tomáš Kypta
 
PDF
Guide to the jungle of testing frameworks
Tomáš Kypta
 
PDF
Guide to the jungle of testing frameworks
Tomáš Kypta
 
PDF
Practical RxJava for Android
Tomáš Kypta
 
PDF
Practical RxJava for Android
Tomáš Kypta
 
PDF
Reactive programming on Android
Tomáš Kypta
 
PDF
Android Develpment vol. 3, MFF UK, 2015
Tomáš Kypta
 
PDF
Writing testable Android apps
Tomáš Kypta
 
PDF
Android Develpment vol. 2, MFF UK, 2015
Tomáš Kypta
 
PDF
ProGuard
Tomáš Kypta
 
PDF
Unit testing and Android
Tomáš Kypta
 
PDF
Android Development for Phone and Tablet
Tomáš Kypta
 
PDF
Reactive programming on Android
Tomáš Kypta
 
PDF
Android Libraries
Tomáš Kypta
 
PDF
Android Development 201
Tomáš Kypta
 
PDF
Užitečné Android knihovny pro vývoj a testování
Tomáš Kypta
 
PDF
Programování pro Android - úvod, FI MUNI, 2013
Tomáš Kypta
 
PDF
Stylování ActionBaru
Tomáš Kypta
 
Modern Android app library stack
Tomáš Kypta
 
Guide to the jungle of testing frameworks
Tomáš Kypta
 
Guide to the jungle of testing frameworks
Tomáš Kypta
 
Practical RxJava for Android
Tomáš Kypta
 
Practical RxJava for Android
Tomáš Kypta
 
Reactive programming on Android
Tomáš Kypta
 
Android Develpment vol. 3, MFF UK, 2015
Tomáš Kypta
 
Writing testable Android apps
Tomáš Kypta
 
Android Develpment vol. 2, MFF UK, 2015
Tomáš Kypta
 
ProGuard
Tomáš Kypta
 
Unit testing and Android
Tomáš Kypta
 
Android Development for Phone and Tablet
Tomáš Kypta
 
Reactive programming on Android
Tomáš Kypta
 
Android Libraries
Tomáš Kypta
 
Android Development 201
Tomáš Kypta
 
Užitečné Android knihovny pro vývoj a testování
Tomáš Kypta
 
Programování pro Android - úvod, FI MUNI, 2013
Tomáš Kypta
 
Stylování ActionBaru
Tomáš Kypta
 
Ad

Recently uploaded (20)

PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Python basic programing language for automation
DanialHabibi2
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 

Android development - the basics, MFF UK, 2013

  • 1. Android Development - the basics Tomáš Kypta
  • 2. Agenda • Android platform and ecosystem • Android SDK and development tools • Hello World • building blocks of Android apps & the manifest file • activities, widgets, intents
  • 3. Agenda • dialogs, toasts, notifications • fragments
  • 4. Android platform • Linux-based operating system • open-source (http://source.android.com/) • originally phone OS • tablet support (since Honeycomb, Android 3.0) • Google TV
  • 5. History • 2003, Android inc. • 2005, acquired by Google • Sep 2008, the first Android phone • T-Mobile G1 • May 2010, Froyo (Android 2.2) • Feb 2011, Honeycomb (Android 3.0)
  • 6. History • Oct 2011, Ice Cream Sandwich (Android 4.0) • July 2012, Jelly Bean (Android 4.1) • July 2013, Jelly Bean (Android 4.3) • Oct 2013, KitKat (Android 4.4)
  • 8. Android ecosystem • thousands of devices • the most popular mobile platform • 1.5 million new devices activated every day • September 3, 2013, 1 billion Android devices have been activated • most devices made by Samsung
  • 9. Google Play • app can be acquired by app stores • Google Play, http://play.google.com • other stores • > 50 billion apps have been installed from Google Play • July 2013, 1 million apps
  • 10. Google Play • purchasing • selling • Play Music, Play Books, ...
  • 11. Google Play • selling apps • 15 min return period • ads • AdMob, ... • in-app billing
  • 12. Android “problems” • fragmentation • manufacturer/carrier enhancements • updates & support • openness - low quality apps in Google Play • malware • users
  • 13. Android security • app can be installed directly • .apk file • user accepts app permissions when installing or updating the app
  • 14. Android security • Verify Apps (Android 2.3+) • checks every app install • Google Play can remotely uninstall harmful app
  • 17. Development • programming in “Java” • native apps possible (C++) • development tools platform friendly • Windows, Linux, Mac OS X
  • 18. Development • IDE support • Android Studio, IntelliJ IDEA, ADT plugin for Eclispse, Netbeans • you can freely develop on any device
  • 19. Android SDK • android - Android SDK and AVD Manager • adb - Android Debug Bridge • monitor - (ddms & hierarchyviewer) • emulator • lint, Traceview, ProGuard • docs, samples
  • 20. Libraries • compatibility libraries • v4 - backports lots of newer functionality to Android 1.6+ • Google Play In-app Billing
  • 21. Libraries • Google Play Services • Google Maps • Games • Google+ • Authorization
  • 22. Libraries • AdMob • Google Analytics, Flurry, Crittercism • Google Cloud Messaging
  • 25. Build
  • 28. Android building blocks • Activity • Service • Content provider • Broadcast receiver • AndroidManifest.xml
  • 29. Activity • screen with user interface • the only visual component • example - an email app • list of emails • details of an email • email composition
  • 30. Service • has no UI • long-running tasks • examples • music playback service • download service • sync service
  • 31. Content Provider • managers and shares application data • data storage doesn’t matter (db, web, filesystem) • apps can query and modify data through content provider • r/w permissions can be defined • examples - all system dbs (SMS, contacts, ...)
  • 32. Broadcast Receiver • responds to broadcasts • broadcasts are system wide • can be registered statically or dynamically • system or custom messages • examples - incoming SMS, incoming call, screen turned off, low baterry, removed SD card, BT device available, ...
  • 33. AndroidManifest.xml • defines what parts the app have • defines which endpoints are exposed • minimum/maximum API level • permissions • declare hardware and software features • require configuration
  • 34. Intent • asynchronous message • binds components together (all except Content Provider) • starting activities • starting services and binding to services • sending broadcasts
  • 35. Activity • a subclass of android.app.Activity • app usually has many activities • activities managed in activity stack • newly started activity is placed on the top of the stack
  • 36. Activity Lifecycle • activity can be in different states during its lifecycle • foreground, visible, stopped, killed • when activity state changes a system callback is called
  • 37. Activity callbacks • onCreate() - activity created • onStart() - activity visible for the user • onResume() - activity gains user focus • onPause() - system resuming another activity • onStop() - activity becoming invisible to the user
  • 38. Activity callbacks • onDestroy() - before activity is destroyed • onRestart() - called if activity was previously stopped, called prior to onStart()
  • 41. Configuration changes • when configuration changes, activities are destroyed and recreated • default behaviour, can be changed • properly handle config changes • onSaveInstanceState(Bundle)
  • 42. Intent & Activity • starting activity explicitly • new Intent(context, MyActivity.class)! • new Intent(Intent.ACTION_VIEW, Uri.parse(“http:// developer.android.com”))! • starting activity implicitly • starting activity for result
  • 43. User Interface • defined by a hierarchy of views • layouts = containers • LinearLayout, RelativeLayout, FrameLayout, ...
  • 44. User Interface • widgets • UI objects • Button, TextView, EditText, RadioButton, ... • WebView
  • 45. User Interface • list widgets • subclasses of AdapterView • display a list of items • use adapter to bind list do data • ListView, GridView, Spinner, ...
  • 46. Resources • drawables • bitmaps • 9-patch png • state lists • layer lists • shape drawables
  • 47. Resources • layout • strings • colors • menus • dimensions • animations
  • 48. Resources • arrays • ids • raw • xml • ...
  • 50. Screen sizes and densities • How to handle different screen sizes and densities?
  • 51. Resources • resources can be created in several versions • the best version is selected according to current device configuration in runtime • resource units • dp - density-independent pixel • sp - scale-independent pixel (for fonts)
  • 52. Resource qualifiers • suffixes for resource folders • drawables, drawable-mdpi, ... • values, values-cs • layout, layout-sw640dp • drawable-hdpi-v11
  • 53. Resource qualifiers • screen density - ldpi, mdpi, hdpi, xhdpi, ... • screen size - small, normal, large, xlarge • screen orientation - port, land • language - en, cs, sk, ... • version - v11, v14, ...
  • 54. Resource qualifiers • since Android 3.2 • w<N>dp - available screen width, w600dp • h<N>dp - available screen heights, h720dp • sw<N>dp - smallest width (does not change with orientation)
  • 55. Resources • accessed from code via generated R.java file and resource ids • view.findViewById(R.id.txt_name)! • txtName.setText(R.string.txt_name_label)
  • 56. Android version fragmentation • How to handle different API levels available on different devices?
  • 57. Android version fragmentation • build target • API level the app is compiled against • AndroidManifest.xml • <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />
  • 58. Android version fragmentation • handling versions in code if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {! // code for Android < 2.3! }
  • 59. Android version fragmentation private boolean functionalitySupported = false;! ! static {! try {! checkFunctionalitySupported();! } catch (NoClassDefFoundError e) {! ! functionalitySupported = false;! }! }! ! private static void checkFunctionalitySupported() throws ! ! ! ! ! ! ! NoClassDefFoundError {! ! functionalitySupported = android.app.Fragment.class != null;! }!
  • 60. Fragments • a piece of application UI • introduced to support more flexible UI • phones and tablets together in one app • fragment != activity • fragments are used within activities
  • 61. Fragments • since Android 3.0 • support library v4 backports them to Android 1.6+
  • 62. Threads • main thread = UI thread • do not ever block the UI thread!!! • use worker threads for time consuming operations • UI toolkit not thread safe - never manipulate UI from a worker thread
  • 63. Menu • menu resource • Android < 3.0 the whole menu hidden under menu button • ActionBar since Android 3.0 • items can be displayed in the action bar
  • 64. Menu • behaviour for items that don’t fit in the action bar • hidden under menu button (if the device has one) • system overflow icon in the action bar
  • 66. Dialogs • standard dialogs • custom dialogs • activity with dialog style • since fragments used via DialogFragment
  • 67. Dialogs • might be tedious to create • difficult to style • StyledDialogs • https://github.com/inmite/android-styled-dialogs • the library makes styling and using dialogs a piece of cake
  • 68. Toast • simple non-modal information • displayed for a short period of time • doesn’t have user focus
  • 69. Notifications • a message that can be displayed to the user outside your normal UI • displayed in notification area
  • 70. Notifications • user can open notification drawer to see the details • app can define UI and click action • NotificationCompat.Builder
  • 71. 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();
  • 72. Sources • developer.android.com • android-developers.blogspot.com • source.android.com • stackoverflow.com • youtube.com/androiddevelopers • svetandroida.cz