SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
INTRODUCTIONTO
ANDROID DEVELOPMENT
Jim McKeeth
@JimMcKeeth
jim@mckeeth.org
1
Tuesday, August 20, 13
AGENDA
• Hello Android
• Overview of Platform
• PlatformTools
• UI - XML
• Views & Widgets
• Architecture
• Manifest & Permission
• Activities & Intents
• Debugging
• Resources
2
Tuesday, August 20, 13
ABOUT ME
• Live here in Boise - jim@mckeeth.org
• Lead Developer Evangelist for EmbarcaderoTechnologies
• www.embarcadero.com - Delphi for Android coming soon
• Google Developer Group - www.gdgb.org
• Boise Software Developers Group - www.bsdg.org
• Boise Code Camp - www.BoiseCodeCamp.com
Tuesday, August 20, 13
DEMO: HELLO ANDROID
Tuesday, August 20, 13
GOOD PLACESTO KNOW
• developer.android.com - Official developer site
• developers.google.com/android/ - Google on Android
• developers.google.com/events/io/ - Google I/O Replays
• stackoverflow.com - Great Q&A community
• android.stackexchange.com - End user Q&A
• vogella.com/android.html - Detailed tutorials
5
Tuesday, August 20, 13
ANDROID
6
Tuesday, August 20, 13
ANDROID STACK
• Tweaked Linux 2.6
• Tweaked Java (Dalvik)
• Android OS
• Android Apps
• (Mostly open source)
7
Tuesday, August 20, 13
VERSION HISTORY
• November 5th, 2007 is Android’s Birthday
• Each version has a version number, name and API level
• Version number is most specific
• Name is group of versions and API levels
• Latest:Android 4.3 Jelly Bean (API 18)
http://en.wikipedia.org/wiki/Android_version_history#Version_history_by_API_level
Tuesday, August 20, 13
VERSION POPULARITY
As of August 2013
http://sn.im/platform-versions9
40% = Jelly Bean
63% >= ICS
96% >= Gingerbread
40%
23%
33%
Tuesday, August 20, 13
Tuesday, August 20, 13
ARCHITECTURE
http://sn.im/what-is-android
11
Tuesday, August 20, 13
FRAMEWORK
• DalvikVM
• WebKit Browser
• 2d Graphics Library, 3D w/OpenGL
• SQLite
• MPEG4, MP3, PNG, JPEG, etc
• GSMTelephony, Bluetooth,WiFi
• Camera, GPS, Compass,Accelerometer
12
Tuesday, August 20, 13
CORE APPLICATIONS
• Phone
• eMail and SMS clients
• Calendar
• Contacts
• Web Browser
• Geographic Support via Google Maps
13
Tuesday, August 20, 13
ANDROID DEVELOPMENT
Tuesday, August 20, 13
ANDROID SDK
• http://developer.android.com/sdk
• 3 Options
• ADT Bundle (in Eclipse)
• “Existing IDE” download
• Android Studio preview (in IntelliJ)
15
Tuesday, August 20, 13
RELATEDTOOLS
• Managers
• Android SDK Manager
• AVD Manager (AndroidVirtual Device)
• Command-LineTools
• adb (Android Debug Bridge -Your best friend!)
• Others
Tuesday, August 20, 13
ANDROID DEVELOPMENT
JDK$
Android'
SDK'
Dalvik'
Virtual'
Machine'
Linux&
kernel&
Tuesday, August 20, 13
BUILD PROCESS
Android'App'Package'
APK'
DEX'Compiler'
Dalvik'byte'code'
Java'Compiler'
Java'JAR'
Tuesday, August 20, 13
THE APK FILE
• Zip file containing
• Manifest, etc.
• Compiled code
• Resources & Assets
Tuesday, August 20, 13
ACTIVITY ARCHITECTURE
Tuesday, August 20, 13
Applica'on*Context*
PARTS OF AN ANDROID APP
Intent%
Ac#vity(
Class% Layout' String'
Resources'
Android'
Manifest'
Other&
Classes&
Drawables)
Services(
Broadcast)
Receiver)
Content&
Providers&
Ac#vity( Intent%
Tuesday, August 20, 13
PROJECT LAYOUT
• AndroidManifest.xml
• bin (APK file, compiled DEX files)
• gen (generated resources)
• res (resources you create)
• src (Java source files)
Tuesday, August 20, 13
MANIFEST
• Mandatory XML file “AndroidManifest.xml”
• Describe application components
• Default Activity
• Permissions,Attributes
• Non-SDK libraries
http://sn.im/android-manifest
Tuesday, August 20, 13
MULTIPLE ACTIVITIES
• Each Activity must be defined in manifest by class name and
“action”
• Activities reside on a “task stack” - visible activity is “top of
stack”
• Transition to an Activity using Intent
• Return from Activity using Activity.finish() which pops off task
stack
Tuesday, August 20, 13
“RES” - RESOURCES
• XML Files
• drawable
• layout
• values
• etc.
• Graphics
Tuesday, August 20, 13
RES/LAYOUT
• Each Activity should have dedicated layout XML file
• Layout file specifies Activity appearance
• Several layout types
• Default LinearLayout provides sequential placement of widgets
Tuesday, August 20, 13
RES/VALUES
• strings.xml contains String constants
• Prefer strings.xml to hardcoded values (warnings)
• L10N/I18N (Localization/Internationalization)
Tuesday, August 20, 13
• Application/Task is a stack of Activities
• Visible activity = top of stack
• Activities maintain state, even when notTOS
• “Back” button pops stack.
• “Home” key would move stack to background
• Selecting application brings to foreground or launches
new instance
APPLICATION AKATASK
Tuesday, August 20, 13
ANDROID.APP.ACTIVITY
• Activity extends Context
• Context contains application environment
• “a single focused thing a user can do”
• An application consists of 1 or more Activities
• Provides a default window to draw in, might be smaller than
screen or float on top of others
• UI elements are “View(s)” or widgets
Tuesday, August 20, 13
ANDROID.VIEW.VIEW
• Extends java.lang.Object
• Basic building block for UI components
• Rectangular area on display
• Responsible for drawing and event handling
• View is the base class for widgets
Tuesday, August 20, 13
Callback Methods
(delegates)
Major States
Activity
Lifecycle
http://sn.im/android-activity
Tuesday, August 20, 13
SAVING STATE
Tuesday, August 20, 13
FRAGMENTS
http://sn.im/android-fragments
Tuesday, August 20, 13
ANDROID.CONTENT.INTENT
• Interprocess Communication messaging
• Can launch an Activity or start a Service
• new Intent(String action, Uri uri);
• new Intent(Context packageCtx, Class class);
• Intent.putExtra()
• Intent.setAction()
http://sn.im/android-intent
Tuesday, August 20, 13
INTENT (CONTINUED)
• android.intent.action.MAIN (receiver on main activity)
• many options:ACTION_VIEW, etc
• category = extra information
• MIME type
• extras (i.e. getAction(), getExtra(), etc)
Tuesday, August 20, 13
INTENT USAGE
• Activity Switch:
• new Intent(this, NextActivity.class);
• Web Browser:
• Uri uri = Uri.parse(“http://foobar.com”);
• new Intent(Intent.ACTION_VIEW, uri);
• Phone Dialer:
• Uri uri = Uri.parse(“tel:4085551212”);
• new Intent(Intent.ACTION_VIEW, uri);
http://sn.im/android-intent
Tuesday, August 20, 13
VIEWS
Tuesday, August 20, 13
VIEW LISTENERS
• GUI is event driven
• Event source: button press, mouse click, etc.
• Listener catches event and performs action
• Events are delivered to view w/current focus
Tuesday, August 20, 13
EVENT LISTENER
• onClick()/View.OnClickListener()
• (boolean) onLongClick()/View.OnLongClickListener()
• onFocusChange()/View.OnFocusChangeListener()
• (boolean) onKey()/View.OnKeyListener()
• (boolean) onTouch()/View.OnTouchListener()
• onCreateContextMenu()/
View.OnCreateContextMenuListener()
• return true to stop event propagation
Tuesday, August 20, 13
VIEW SIZE
• FILL_PARENT = parent sized (minus pad)
• Now “MATCH_PARENT” w/API Level 8
• WRAP_CONTENT = just big enough (plus pad)
Tuesday, August 20, 13
LAYING OUTVIEWS
• Gravity = position (i.e. left, right, center)
• Weight = extra/empty space allocation
• priority for expansion
• default weight is zero
Tuesday, August 20, 13
DIMENSIONVALUES
• Dimension values:
• dp/dip = density independent pixels
• sp = Scale independent pixels
• px = pixels
• in/mm = inches/millimeters
• pt = point (1/72 inch)
RecommendedNotRecommended
Tuesday, August 20, 13
DENSITY INDEPENDENT
PIXELS
• An abstract unit that is based on the physical density of the screen.These units
are relative to a 160 dpi (dots per inch) screen, so 160dp is always one inch
regardless of the screen density.
• The ratio of dp-to-pixel will change with the screen density, but not necessarily
in direct proportion.
• You should use these units when specifying view dimensions in your layout, so
the UI properly scales to render at the same actual size on different screens.
• The compiler accepts both "dip" and "dp", though "dp" is more consistent with
"sp".
Tuesday, August 20, 13
SCALE-INDEPENDENT PIXELS
• This is like the dp unit, but it is also scaled by the user's font
size preference.
• Recommend you use this unit when specifying font sizes, so
they will be adjusted for both the screen density and the
user's preference.
Recom
m
ended
for
Fonts
Tuesday, August 20, 13
COLORS
• #RGB
• #ARGB ( Alpha / Red / Green / Blue )
• #RRGGBB (i.e. #3d1ec4)
• #AARRGGBB
Tuesday, August 20, 13
VIEW /VIEWGROUP
Tuesday, August 20, 13
LAYOUTS (VIEWGROUPS)
• AbsoluteLayout -Absolute X,Y (depreciated)
• FrameLayout - Pinned to top left (simplest)
• LinearLayout - Horizontal orVertical - one per row
• RelativeLayout - Child specify relative widgets
• SlidingDrawer - Hides until dragged out by handle
• TableLayout - Rows & Columns
• ScrollView - Child can be larger than window
• TabWidget - Manages collection of “Tab Hosts”
Tuesday, August 20, 13
ORIENTATION
• landscape or portrait
• dedicated layout file
• /res/layout = default layout directory
• /res/layout-land = landscape layout directory
• /res/layout-port = portrait layout directory
Tuesday, August 20, 13
DEMO - LAYOUTS &VIEWS
Tuesday, August 20, 13
TRACE LOGGING
• android.util.Log
• Log.d(“tag”,“debug”);
• Log.e(“tag”,“error”);
• Log.i(“tag”,“informational”);
• Log.v(“tag”,“verbose”);
• Log.w(“tag”,“warning”);
• View output using “adb logcat”
http://sn.im/android-log
Tuesday, August 20, 13
ADB - ANDROID DEBUG
BRIDGE
• Manages devices & emulators
• Issue debug commands
• Log output (adb logcat)
• Shell (adb shell)
• Copy files to/from emulator (adb push/pull)
http://sn.im/android_debug_bridge
Tuesday, August 20, 13
DEMO - ADB & LOGCAT
Tuesday, August 20, 13
BEST PRACTICES
Tuesday, August 20, 13
BEST PRACTICES
• Support multiple screen sizes and densities
• Use the Action Bar pattern - Good-bye menu button
• Build Dynamic UI with Fragments
• Know when to persist and restore state
• Don’t block main thread - use AsyncTask -Test with
StrictMode
http://sn.im/android-practices
http://sn.im/android-performance
Tuesday, August 20, 13
SUPPORT MULTIPLE SCREENS
SIZES & DENSITIES
• Use wrap_content, fill_parent, or dp units when
specifying dimensions in an XML layout file
• Do not use hard coded pixel values in your
application code
• Do not use AbsoluteLayout (it's deprecated)
• Supply alternative bitmap drawables for
different screen densities
• ldpi, mdpi, hdpi, xhdpi
http://sn.im/android-screens
Tuesday, August 20, 13
SCREEN SIZES & DENSITIES
Tuesday, August 20, 13
ACTION BAR
1. App Icon - optional “up” affordance
2. View control - Navigation
3. Dynamic number of “important” action buttons
4. Action overflow
http://sn.im/android-actionbar
http://actionbarsherlock.com/
Tuesday, August 20, 13
ASYNCTASK
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {
         int count = urls.length;
         long totalSize = 0;
         for (int i = 0; i < count; i++) {
             totalSize += Downloader.downloadFile(urls[i]);
             publishProgress((int) ((i / (float) count) * 100));
             // Escape early if cancel() is called
             if (isCancelled()) break;
         }
         return totalSize;
     }
     protected void onProgressUpdate(Integer... progress) {
         setProgressPercent(progress[0]);
     }
     protected void onPostExecute(Long result) {
         showDialog("Downloaded " + result + " bytes");
     }
 }
http://sn.im/android-asynctask
Tuesday, August 20, 13
STRICT MODE
• Place a policy on a thread - provides feedback when blocked
 public void onCreate() {
     if (DEVELOPER_MODE) {
         StrictMode.enableDefaults(); // Or configure
     }
     super.onCreate();
}
• http://sn.im/android-strictmode
• http://sn.im/android-strictmode-blog
Tuesday, August 20, 13
FIN.
Tuesday, August 20, 13
GOOD PLACESTO KNOW
• developer.android.com - Official developer site
• developers.google.com/android/ - Google on Android
• developers.google.com/events/io/ - Google I/O Replays
• stackoverflow.com - Great Q&A community
• android.stackexchange.com - End user Q&A
• vogella.com/android.html - Detailed tutorials
61
Tuesday, August 20, 13
ABOUT ME
• Live here in Boise - jim@mckeeth.org
• Lead Developer Evangelist for EmbarcaderoTechnologies
• www.embarcadero.com - Delphi for Android coming soon
• Google Developer Group - www.gdgb.org
• Boise Software Developers Group - www.bsdg.org
• Boise Code Camp - www.BoiseCodeCamp.com
Tuesday, August 20, 13

Más contenido relacionado

Destacado

The daily retard
The daily retardThe daily retard
The daily retarddevdeepbag
 
Продвижение на App Store. 10 шагов к успеху (Nevosoft)
Продвижение на App Store. 10 шагов к успеху (Nevosoft)Продвижение на App Store. 10 шагов к успеху (Nevosoft)
Продвижение на App Store. 10 шагов к успеху (Nevosoft)Julia Lebedeva
 
Nuestros alumnos en el taller mecánico
Nuestros alumnos en el taller mecánicoNuestros alumnos en el taller mecánico
Nuestros alumnos en el taller mecánicoholepuncherpamplona
 
De kleren van_sinterklaas
De kleren van_sinterklaasDe kleren van_sinterklaas
De kleren van_sinterklaasgroep12pius10
 
Geometric Shapes
Geometric ShapesGeometric Shapes
Geometric Shapeskewalson
 
Web conferencing
Web conferencingWeb conferencing
Web conferencingmazyooonah
 
Stop Talking Start Doing: A kick in the pants in six parts
Stop Talking Start Doing: A kick in the pants in six partsStop Talking Start Doing: A kick in the pants in six parts
Stop Talking Start Doing: A kick in the pants in six partsRichard Newton
 
進化するオープンソース・エンタープライズCMSがWeb戦略を変える
進化するオープンソース・エンタープライズCMSがWeb戦略を変える進化するオープンソース・エンタープライズCMSがWeb戦略を変える
進化するオープンソース・エンタープライズCMSがWeb戦略を変えるHishikawa Takuro
 
ELCM 390 orientation
ELCM 390 orientationELCM 390 orientation
ELCM 390 orientationlisalouisesw
 
光速テーマ開発のコツ
光速テーマ開発のコツ光速テーマ開発のコツ
光速テーマ開発のコツHishikawa Takuro
 
Incunabula edisi 1-april 2014
Incunabula edisi 1-april 2014Incunabula edisi 1-april 2014
Incunabula edisi 1-april 2014Tyo SBS
 

Destacado (18)

The daily retard
The daily retardThe daily retard
The daily retard
 
Weisskopf1983 cycle
Weisskopf1983 cycleWeisskopf1983 cycle
Weisskopf1983 cycle
 
Продвижение на App Store. 10 шагов к успеху (Nevosoft)
Продвижение на App Store. 10 шагов к успеху (Nevosoft)Продвижение на App Store. 10 шагов к успеху (Nevosoft)
Продвижение на App Store. 10 шагов к успеху (Nevosoft)
 
Nuestros alumnos en el taller mecánico
Nuestros alumnos en el taller mecánicoNuestros alumnos en el taller mecánico
Nuestros alumnos en el taller mecánico
 
De kleren van_sinterklaas
De kleren van_sinterklaasDe kleren van_sinterklaas
De kleren van_sinterklaas
 
Geometric Shapes
Geometric ShapesGeometric Shapes
Geometric Shapes
 
Presentazione social media corner
Presentazione social media cornerPresentazione social media corner
Presentazione social media corner
 
Web conferencing
Web conferencingWeb conferencing
Web conferencing
 
Watchmen
WatchmenWatchmen
Watchmen
 
Giuseppe Onufrio
Giuseppe OnufrioGiuseppe Onufrio
Giuseppe Onufrio
 
Stop Talking Start Doing: A kick in the pants in six parts
Stop Talking Start Doing: A kick in the pants in six partsStop Talking Start Doing: A kick in the pants in six parts
Stop Talking Start Doing: A kick in the pants in six parts
 
進化するオープンソース・エンタープライズCMSがWeb戦略を変える
進化するオープンソース・エンタープライズCMSがWeb戦略を変える進化するオープンソース・エンタープライズCMSがWeb戦略を変える
進化するオープンソース・エンタープライズCMSがWeb戦略を変える
 
ELCM 390 orientation
ELCM 390 orientationELCM 390 orientation
ELCM 390 orientation
 
David pulido
David pulidoDavid pulido
David pulido
 
4 introduccion a la ingenieria pag 37-40
4 introduccion a la ingenieria pag 37-404 introduccion a la ingenieria pag 37-40
4 introduccion a la ingenieria pag 37-40
 
光速テーマ開発のコツ
光速テーマ開発のコツ光速テーマ開発のコツ
光速テーマ開発のコツ
 
Incunabula edisi 1-april 2014
Incunabula edisi 1-april 2014Incunabula edisi 1-april 2014
Incunabula edisi 1-april 2014
 
Martha
MarthaMartha
Martha
 

Similar a Intro to Android Development

jQuery Mobile Deep Dive
jQuery Mobile Deep DivejQuery Mobile Deep Dive
jQuery Mobile Deep DiveTroy Miles
 
Shiny r, live shared and explored
Shiny   r, live shared and exploredShiny   r, live shared and explored
Shiny r, live shared and exploredAlex Brown
 
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalMaking the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalAcquia
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQueryAlek Davis
 
Give Responsive Design a Mobile Performance Boost
Give Responsive Design a Mobile Performance BoostGive Responsive Design a Mobile Performance Boost
Give Responsive Design a Mobile Performance BoostGrgur Grisogono
 
Advanced #2 - ui perf
 Advanced #2 - ui perf Advanced #2 - ui perf
Advanced #2 - ui perfVitali Pekelis
 
Atlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring IntegrationAtlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring IntegrationGunnar Hillert
 
Cross Platform Mobile Game Development
Cross Platform Mobile Game DevelopmentCross Platform Mobile Game Development
Cross Platform Mobile Game DevelopmentAllan Davis
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material DesignYasin Yildirim
 
HackU 2013 : Introduction to Android programming
HackU 2013 : Introduction to Android programmingHackU 2013 : Introduction to Android programming
HackU 2013 : Introduction to Android programmingkalmeshhn
 
Testing iOS Apps
Testing iOS AppsTesting iOS Apps
Testing iOS AppsC4Media
 
Android Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NC
Android Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NCAndroid Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NC
Android Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NCJim Tochterman
 
Bundling Client Side Assets
Bundling Client Side AssetsBundling Client Side Assets
Bundling Client Side AssetsTimothy Oxley
 
Android: Looking beyond the obvious
Android: Looking beyond the obviousAndroid: Looking beyond the obvious
Android: Looking beyond the obviousINVERS GmbH
 
Android material design lecture #2
Android material design   lecture #2Android material design   lecture #2
Android material design lecture #2Vitali Pekelis
 
PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessTroy Miles
 
Eclipse Orion: The IDE in the Clouds (JavaOne 2013)
Eclipse Orion: The IDE in the Clouds (JavaOne 2013)Eclipse Orion: The IDE in the Clouds (JavaOne 2013)
Eclipse Orion: The IDE in the Clouds (JavaOne 2013)Murat Yener
 

Similar a Intro to Android Development (20)

jQuery Mobile Deep Dive
jQuery Mobile Deep DivejQuery Mobile Deep Dive
jQuery Mobile Deep Dive
 
Shiny r, live shared and explored
Shiny   r, live shared and exploredShiny   r, live shared and explored
Shiny r, live shared and explored
 
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalMaking the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
Opensocial
OpensocialOpensocial
Opensocial
 
Give Responsive Design a Mobile Performance Boost
Give Responsive Design a Mobile Performance BoostGive Responsive Design a Mobile Performance Boost
Give Responsive Design a Mobile Performance Boost
 
Backbone
BackboneBackbone
Backbone
 
Advanced #2 - ui perf
 Advanced #2 - ui perf Advanced #2 - ui perf
Advanced #2 - ui perf
 
Atlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring IntegrationAtlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring Integration
 
Cross Platform Mobile Game Development
Cross Platform Mobile Game DevelopmentCross Platform Mobile Game Development
Cross Platform Mobile Game Development
 
Getting Started With Material Design
Getting Started With Material DesignGetting Started With Material Design
Getting Started With Material Design
 
HackU 2013 : Introduction to Android programming
HackU 2013 : Introduction to Android programmingHackU 2013 : Introduction to Android programming
HackU 2013 : Introduction to Android programming
 
First8 / AMIS Google Glass scanner development
First8 / AMIS Google Glass scanner development First8 / AMIS Google Glass scanner development
First8 / AMIS Google Glass scanner development
 
Testing iOS Apps
Testing iOS AppsTesting iOS Apps
Testing iOS Apps
 
Android Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NC
Android Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NCAndroid Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NC
Android Development w/ ArcGIS Server - Esri Dev Meetup - Charlotte, NC
 
Bundling Client Side Assets
Bundling Client Side AssetsBundling Client Side Assets
Bundling Client Side Assets
 
Android: Looking beyond the obvious
Android: Looking beyond the obviousAndroid: Looking beyond the obvious
Android: Looking beyond the obvious
 
Android material design lecture #2
Android material design   lecture #2Android material design   lecture #2
Android material design lecture #2
 
PhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or LessPhoneGap in 60 Minutes or Less
PhoneGap in 60 Minutes or Less
 
Eclipse Orion: The IDE in the Clouds (JavaOne 2013)
Eclipse Orion: The IDE in the Clouds (JavaOne 2013)Eclipse Orion: The IDE in the Clouds (JavaOne 2013)
Eclipse Orion: The IDE in the Clouds (JavaOne 2013)
 

Más de Jim McKeeth

Smart Contracts - The Blockchain Beyond Bitcoin
Smart Contracts - The Blockchain Beyond BitcoinSmart Contracts - The Blockchain Beyond Bitcoin
Smart Contracts - The Blockchain Beyond BitcoinJim McKeeth
 
Rapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
Rapid Prototyping Mobile IoT Projects with Arduino and Open HardwareRapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
Rapid Prototyping Mobile IoT Projects with Arduino and Open HardwareJim McKeeth
 
Day 3 of C++ Boot Camp - C++11 Language Deep Dive
Day 3 of C++ Boot Camp - C++11 Language Deep DiveDay 3 of C++ Boot Camp - C++11 Language Deep Dive
Day 3 of C++ Boot Camp - C++11 Language Deep DiveJim McKeeth
 
Day 5 of C++ Boot Camp - Stepping Up to Mobile
Day 5 of C++ Boot Camp - Stepping Up to MobileDay 5 of C++ Boot Camp - Stepping Up to Mobile
Day 5 of C++ Boot Camp - Stepping Up to MobileJim McKeeth
 
Android Services Skill Sprint
Android Services Skill SprintAndroid Services Skill Sprint
Android Services Skill SprintJim McKeeth
 
Creating Android Services with Delphi and RAD Studio 10 Seattle
Creating Android Services with Delphi and RAD Studio 10 SeattleCreating Android Services with Delphi and RAD Studio 10 Seattle
Creating Android Services with Delphi and RAD Studio 10 SeattleJim McKeeth
 
Building a Thought Controlled Drone
Building a Thought Controlled DroneBuilding a Thought Controlled Drone
Building a Thought Controlled DroneJim McKeeth
 
Deep Dive into Futures and the Parallel Programming Library
Deep Dive into Futures and the Parallel Programming LibraryDeep Dive into Futures and the Parallel Programming Library
Deep Dive into Futures and the Parallel Programming LibraryJim McKeeth
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected DevelopmentJim McKeeth
 
The Internet of Things and You - A Developers Guide to IoT
The Internet of Things and You - A Developers Guide to IoTThe Internet of Things and You - A Developers Guide to IoT
The Internet of Things and You - A Developers Guide to IoTJim McKeeth
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Jim McKeeth
 
Android voice skill sprint
Android voice skill sprintAndroid voice skill sprint
Android voice skill sprintJim McKeeth
 
Exploring the Brain Computer Interface
Exploring the Brain Computer InterfaceExploring the Brain Computer Interface
Exploring the Brain Computer InterfaceJim McKeeth
 
Hacking iBooks and ePub3 with JavaScript!
Hacking iBooks and ePub3 with JavaScript!Hacking iBooks and ePub3 with JavaScript!
Hacking iBooks and ePub3 with JavaScript!Jim McKeeth
 
Inventing merit badge
Inventing merit badgeInventing merit badge
Inventing merit badgeJim McKeeth
 

Más de Jim McKeeth (15)

Smart Contracts - The Blockchain Beyond Bitcoin
Smart Contracts - The Blockchain Beyond BitcoinSmart Contracts - The Blockchain Beyond Bitcoin
Smart Contracts - The Blockchain Beyond Bitcoin
 
Rapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
Rapid Prototyping Mobile IoT Projects with Arduino and Open HardwareRapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
Rapid Prototyping Mobile IoT Projects with Arduino and Open Hardware
 
Day 3 of C++ Boot Camp - C++11 Language Deep Dive
Day 3 of C++ Boot Camp - C++11 Language Deep DiveDay 3 of C++ Boot Camp - C++11 Language Deep Dive
Day 3 of C++ Boot Camp - C++11 Language Deep Dive
 
Day 5 of C++ Boot Camp - Stepping Up to Mobile
Day 5 of C++ Boot Camp - Stepping Up to MobileDay 5 of C++ Boot Camp - Stepping Up to Mobile
Day 5 of C++ Boot Camp - Stepping Up to Mobile
 
Android Services Skill Sprint
Android Services Skill SprintAndroid Services Skill Sprint
Android Services Skill Sprint
 
Creating Android Services with Delphi and RAD Studio 10 Seattle
Creating Android Services with Delphi and RAD Studio 10 SeattleCreating Android Services with Delphi and RAD Studio 10 Seattle
Creating Android Services with Delphi and RAD Studio 10 Seattle
 
Building a Thought Controlled Drone
Building a Thought Controlled DroneBuilding a Thought Controlled Drone
Building a Thought Controlled Drone
 
Deep Dive into Futures and the Parallel Programming Library
Deep Dive into Futures and the Parallel Programming LibraryDeep Dive into Futures and the Parallel Programming Library
Deep Dive into Futures and the Parallel Programming Library
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected Development
 
The Internet of Things and You - A Developers Guide to IoT
The Internet of Things and You - A Developers Guide to IoTThe Internet of Things and You - A Developers Guide to IoT
The Internet of Things and You - A Developers Guide to IoT
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
 
Android voice skill sprint
Android voice skill sprintAndroid voice skill sprint
Android voice skill sprint
 
Exploring the Brain Computer Interface
Exploring the Brain Computer InterfaceExploring the Brain Computer Interface
Exploring the Brain Computer Interface
 
Hacking iBooks and ePub3 with JavaScript!
Hacking iBooks and ePub3 with JavaScript!Hacking iBooks and ePub3 with JavaScript!
Hacking iBooks and ePub3 with JavaScript!
 
Inventing merit badge
Inventing merit badgeInventing merit badge
Inventing merit badge
 

Último

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Último (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

Intro to Android Development

  • 2. AGENDA • Hello Android • Overview of Platform • PlatformTools • UI - XML • Views & Widgets • Architecture • Manifest & Permission • Activities & Intents • Debugging • Resources 2 Tuesday, August 20, 13
  • 3. ABOUT ME • Live here in Boise - jim@mckeeth.org • Lead Developer Evangelist for EmbarcaderoTechnologies • www.embarcadero.com - Delphi for Android coming soon • Google Developer Group - www.gdgb.org • Boise Software Developers Group - www.bsdg.org • Boise Code Camp - www.BoiseCodeCamp.com Tuesday, August 20, 13
  • 5. GOOD PLACESTO KNOW • developer.android.com - Official developer site • developers.google.com/android/ - Google on Android • developers.google.com/events/io/ - Google I/O Replays • stackoverflow.com - Great Q&A community • android.stackexchange.com - End user Q&A • vogella.com/android.html - Detailed tutorials 5 Tuesday, August 20, 13
  • 7. ANDROID STACK • Tweaked Linux 2.6 • Tweaked Java (Dalvik) • Android OS • Android Apps • (Mostly open source) 7 Tuesday, August 20, 13
  • 8. VERSION HISTORY • November 5th, 2007 is Android’s Birthday • Each version has a version number, name and API level • Version number is most specific • Name is group of versions and API levels • Latest:Android 4.3 Jelly Bean (API 18) http://en.wikipedia.org/wiki/Android_version_history#Version_history_by_API_level Tuesday, August 20, 13
  • 9. VERSION POPULARITY As of August 2013 http://sn.im/platform-versions9 40% = Jelly Bean 63% >= ICS 96% >= Gingerbread 40% 23% 33% Tuesday, August 20, 13
  • 12. FRAMEWORK • DalvikVM • WebKit Browser • 2d Graphics Library, 3D w/OpenGL • SQLite • MPEG4, MP3, PNG, JPEG, etc • GSMTelephony, Bluetooth,WiFi • Camera, GPS, Compass,Accelerometer 12 Tuesday, August 20, 13
  • 13. CORE APPLICATIONS • Phone • eMail and SMS clients • Calendar • Contacts • Web Browser • Geographic Support via Google Maps 13 Tuesday, August 20, 13
  • 15. ANDROID SDK • http://developer.android.com/sdk • 3 Options • ADT Bundle (in Eclipse) • “Existing IDE” download • Android Studio preview (in IntelliJ) 15 Tuesday, August 20, 13
  • 16. RELATEDTOOLS • Managers • Android SDK Manager • AVD Manager (AndroidVirtual Device) • Command-LineTools • adb (Android Debug Bridge -Your best friend!) • Others Tuesday, August 20, 13
  • 19. THE APK FILE • Zip file containing • Manifest, etc. • Compiled code • Resources & Assets Tuesday, August 20, 13
  • 21. Applica'on*Context* PARTS OF AN ANDROID APP Intent% Ac#vity( Class% Layout' String' Resources' Android' Manifest' Other& Classes& Drawables) Services( Broadcast) Receiver) Content& Providers& Ac#vity( Intent% Tuesday, August 20, 13
  • 22. PROJECT LAYOUT • AndroidManifest.xml • bin (APK file, compiled DEX files) • gen (generated resources) • res (resources you create) • src (Java source files) Tuesday, August 20, 13
  • 23. MANIFEST • Mandatory XML file “AndroidManifest.xml” • Describe application components • Default Activity • Permissions,Attributes • Non-SDK libraries http://sn.im/android-manifest Tuesday, August 20, 13
  • 24. MULTIPLE ACTIVITIES • Each Activity must be defined in manifest by class name and “action” • Activities reside on a “task stack” - visible activity is “top of stack” • Transition to an Activity using Intent • Return from Activity using Activity.finish() which pops off task stack Tuesday, August 20, 13
  • 25. “RES” - RESOURCES • XML Files • drawable • layout • values • etc. • Graphics Tuesday, August 20, 13
  • 26. RES/LAYOUT • Each Activity should have dedicated layout XML file • Layout file specifies Activity appearance • Several layout types • Default LinearLayout provides sequential placement of widgets Tuesday, August 20, 13
  • 27. RES/VALUES • strings.xml contains String constants • Prefer strings.xml to hardcoded values (warnings) • L10N/I18N (Localization/Internationalization) Tuesday, August 20, 13
  • 28. • Application/Task is a stack of Activities • Visible activity = top of stack • Activities maintain state, even when notTOS • “Back” button pops stack. • “Home” key would move stack to background • Selecting application brings to foreground or launches new instance APPLICATION AKATASK Tuesday, August 20, 13
  • 29. ANDROID.APP.ACTIVITY • Activity extends Context • Context contains application environment • “a single focused thing a user can do” • An application consists of 1 or more Activities • Provides a default window to draw in, might be smaller than screen or float on top of others • UI elements are “View(s)” or widgets Tuesday, August 20, 13
  • 30. ANDROID.VIEW.VIEW • Extends java.lang.Object • Basic building block for UI components • Rectangular area on display • Responsible for drawing and event handling • View is the base class for widgets Tuesday, August 20, 13
  • 34. ANDROID.CONTENT.INTENT • Interprocess Communication messaging • Can launch an Activity or start a Service • new Intent(String action, Uri uri); • new Intent(Context packageCtx, Class class); • Intent.putExtra() • Intent.setAction() http://sn.im/android-intent Tuesday, August 20, 13
  • 35. INTENT (CONTINUED) • android.intent.action.MAIN (receiver on main activity) • many options:ACTION_VIEW, etc • category = extra information • MIME type • extras (i.e. getAction(), getExtra(), etc) Tuesday, August 20, 13
  • 36. INTENT USAGE • Activity Switch: • new Intent(this, NextActivity.class); • Web Browser: • Uri uri = Uri.parse(“http://foobar.com”); • new Intent(Intent.ACTION_VIEW, uri); • Phone Dialer: • Uri uri = Uri.parse(“tel:4085551212”); • new Intent(Intent.ACTION_VIEW, uri); http://sn.im/android-intent Tuesday, August 20, 13
  • 38. VIEW LISTENERS • GUI is event driven • Event source: button press, mouse click, etc. • Listener catches event and performs action • Events are delivered to view w/current focus Tuesday, August 20, 13
  • 39. EVENT LISTENER • onClick()/View.OnClickListener() • (boolean) onLongClick()/View.OnLongClickListener() • onFocusChange()/View.OnFocusChangeListener() • (boolean) onKey()/View.OnKeyListener() • (boolean) onTouch()/View.OnTouchListener() • onCreateContextMenu()/ View.OnCreateContextMenuListener() • return true to stop event propagation Tuesday, August 20, 13
  • 40. VIEW SIZE • FILL_PARENT = parent sized (minus pad) • Now “MATCH_PARENT” w/API Level 8 • WRAP_CONTENT = just big enough (plus pad) Tuesday, August 20, 13
  • 41. LAYING OUTVIEWS • Gravity = position (i.e. left, right, center) • Weight = extra/empty space allocation • priority for expansion • default weight is zero Tuesday, August 20, 13
  • 42. DIMENSIONVALUES • Dimension values: • dp/dip = density independent pixels • sp = Scale independent pixels • px = pixels • in/mm = inches/millimeters • pt = point (1/72 inch) RecommendedNotRecommended Tuesday, August 20, 13
  • 43. DENSITY INDEPENDENT PIXELS • An abstract unit that is based on the physical density of the screen.These units are relative to a 160 dpi (dots per inch) screen, so 160dp is always one inch regardless of the screen density. • The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. • You should use these units when specifying view dimensions in your layout, so the UI properly scales to render at the same actual size on different screens. • The compiler accepts both "dip" and "dp", though "dp" is more consistent with "sp". Tuesday, August 20, 13
  • 44. SCALE-INDEPENDENT PIXELS • This is like the dp unit, but it is also scaled by the user's font size preference. • Recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user's preference. Recom m ended for Fonts Tuesday, August 20, 13
  • 45. COLORS • #RGB • #ARGB ( Alpha / Red / Green / Blue ) • #RRGGBB (i.e. #3d1ec4) • #AARRGGBB Tuesday, August 20, 13
  • 47. LAYOUTS (VIEWGROUPS) • AbsoluteLayout -Absolute X,Y (depreciated) • FrameLayout - Pinned to top left (simplest) • LinearLayout - Horizontal orVertical - one per row • RelativeLayout - Child specify relative widgets • SlidingDrawer - Hides until dragged out by handle • TableLayout - Rows & Columns • ScrollView - Child can be larger than window • TabWidget - Manages collection of “Tab Hosts” Tuesday, August 20, 13
  • 48. ORIENTATION • landscape or portrait • dedicated layout file • /res/layout = default layout directory • /res/layout-land = landscape layout directory • /res/layout-port = portrait layout directory Tuesday, August 20, 13
  • 49. DEMO - LAYOUTS &VIEWS Tuesday, August 20, 13
  • 50. TRACE LOGGING • android.util.Log • Log.d(“tag”,“debug”); • Log.e(“tag”,“error”); • Log.i(“tag”,“informational”); • Log.v(“tag”,“verbose”); • Log.w(“tag”,“warning”); • View output using “adb logcat” http://sn.im/android-log Tuesday, August 20, 13
  • 51. ADB - ANDROID DEBUG BRIDGE • Manages devices & emulators • Issue debug commands • Log output (adb logcat) • Shell (adb shell) • Copy files to/from emulator (adb push/pull) http://sn.im/android_debug_bridge Tuesday, August 20, 13
  • 52. DEMO - ADB & LOGCAT Tuesday, August 20, 13
  • 54. BEST PRACTICES • Support multiple screen sizes and densities • Use the Action Bar pattern - Good-bye menu button • Build Dynamic UI with Fragments • Know when to persist and restore state • Don’t block main thread - use AsyncTask -Test with StrictMode http://sn.im/android-practices http://sn.im/android-performance Tuesday, August 20, 13
  • 55. SUPPORT MULTIPLE SCREENS SIZES & DENSITIES • Use wrap_content, fill_parent, or dp units when specifying dimensions in an XML layout file • Do not use hard coded pixel values in your application code • Do not use AbsoluteLayout (it's deprecated) • Supply alternative bitmap drawables for different screen densities • ldpi, mdpi, hdpi, xhdpi http://sn.im/android-screens Tuesday, August 20, 13
  • 56. SCREEN SIZES & DENSITIES Tuesday, August 20, 13
  • 57. ACTION BAR 1. App Icon - optional “up” affordance 2. View control - Navigation 3. Dynamic number of “important” action buttons 4. Action overflow http://sn.im/android-actionbar http://actionbarsherlock.com/ Tuesday, August 20, 13
  • 58. ASYNCTASK private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {      protected Long doInBackground(URL... urls) {          int count = urls.length;          long totalSize = 0;          for (int i = 0; i < count; i++) {              totalSize += Downloader.downloadFile(urls[i]);              publishProgress((int) ((i / (float) count) * 100));              // Escape early if cancel() is called              if (isCancelled()) break;          }          return totalSize;      }      protected void onProgressUpdate(Integer... progress) {          setProgressPercent(progress[0]);      }      protected void onPostExecute(Long result) {          showDialog("Downloaded " + result + " bytes");      }  } http://sn.im/android-asynctask Tuesday, August 20, 13
  • 59. STRICT MODE • Place a policy on a thread - provides feedback when blocked  public void onCreate() {      if (DEVELOPER_MODE) {          StrictMode.enableDefaults(); // Or configure      }      super.onCreate(); } • http://sn.im/android-strictmode • http://sn.im/android-strictmode-blog Tuesday, August 20, 13
  • 61. GOOD PLACESTO KNOW • developer.android.com - Official developer site • developers.google.com/android/ - Google on Android • developers.google.com/events/io/ - Google I/O Replays • stackoverflow.com - Great Q&A community • android.stackexchange.com - End user Q&A • vogella.com/android.html - Detailed tutorials 61 Tuesday, August 20, 13
  • 62. ABOUT ME • Live here in Boise - jim@mckeeth.org • Lead Developer Evangelist for EmbarcaderoTechnologies • www.embarcadero.com - Delphi for Android coming soon • Google Developer Group - www.gdgb.org • Boise Software Developers Group - www.bsdg.org • Boise Code Camp - www.BoiseCodeCamp.com Tuesday, August 20, 13