Your SlideShare is downloading. ×
0
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Matteo Gazzurelli - Introduction to Android Development - Have a break edition

155

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
155
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 2014.02.06 - Introduction to Android Development* @GDGBrescia *Have a break edition
  • 2. Who I Am +MatteoGazzurelli CEO / Android Developer DUCKMA srl - Brescia @gazzumatteo duckma.com 2
  • 3. Introduction to * Android Android, the unknown… *Have a break Edition 3
  • 4. Android, the unknown... •  Mobile Operating System by Android Inc. •  Bought by Google in 2005 •  Unveiled in 2007 3
  • 5. Why develop for Android? •  Is adaptable and functional •  Very good OS •  Good Business! 5
  • 6. Google’s Role •  Development & Support •  Google Play •  Nexus Developers 6
  • 7. Android 101 In theory…. and in practice. 7
  • 8. Java Based Java VM Java Hello World Dalvik VM* (ART 4.4) 8
  • 9. What do I need to know to be a programmer? •  OOP (Object Oriented Programming) •  Encapsulation, Inheritance, Polymorphism •  Interfaces •  Listeners •  Packages structure 9
  • 10. Inside the Droid Architecture & Theory 10
  • 11. Android Architecture Application Home, Contacts, Telephone, Browser, … Application Framework Managers for Activity, Window, Package, … Libraries SQLite, OpenGL, SSL, … Runtime Dalvik VM, Core libs Kernel Linux Driver for Display, Camera, Flash, Wifi, Audio, … 11
  • 12. Four pillars of Android •  Activities •  Services •  Broadcast Receivers •  Content Providers 12
  • 13. Activities •  Activity is the main component of Android, represent a single screen with a user interface •  Is like a form in traditional languages such as Visual Basic or like a single HTML page 13
  • 14. Activity Lifecycle 14
  • 15. Fragments •  Since Android 3.0 •  Represent a portion of the UI in an activity •  Can combine multiple fragment in a single activity •  Have their lifecycle •  Live in a ViewGroup 15
  • 16. Introduction to Intents •  •  •  Intents are used as a message-passing mechanism that works both within your application, and between applications. Interacts with every components in Android Used for: •  •  •  Declare your intention that an Activity or Service be started to perform an action, usually with a piece of data ( startActivity(Intent); ) Broadcast that an event (or action) has occurred Explicity start a particular Service or Activity 16
  • 17. Services •  •  •  •  Application components that can perform longrunning operations in the background Doesn’t provide a user interface Service is not a separate process or thread Service is a simple class, you must implement separate threads by yourself 17
  • 18. Service Lifecycle 18
  • 19. Broadcast Receiver •  A Broadcast receiver is a component that does nothing but receive and react to broadcast announcements •  Broadcast Intent •  Your app can: •  •  •  Receive and react to system services (ex. Battery low) Receive and react to other apps broadcast announcements Initiate broadcasts to other apps 19
  • 20. Content Provider •  •  •  •  •  •  Content Providers manage access to a structured set of data Are the standard interface that connects data in one process with code running in another process Any application with appropriate permission, can read and write the data Files, SQL Database Expose a public URI that uniquely identifies its data set “content://…” 20
  • 21. Content Provider 21
  • 22. Hands On Down and dirty! 22
  • 23. Craftsman tools •  IDE •  Tools: •  •  •  •  •  •  Eclipse Android Studio ADT (Android Developer Tools) Android SDK Tools Android Platform Tools AVD (Android Virtual Device) / Emulator 23
  • 24. Eclipse / Android Studio 24
  • 25. Android SDK Manager (via ADT) 25
  • 26. Android Virtual Device Manager (AVD) 26
  • 27. LogCat 27
  • 28. Debug 28
  • 29. Let’s start a new project Gentlemen start your engines! 29
  • 30. File -> New Project 30
  • 31. Tutorial 31
  • 32. Project structure 32
  • 33. Src •  Java Classes •  Organized in Packages •  •  •  •  Activity Fragment Adapter Models 33
  • 34. Activity Sample Code package com.example; JAVA import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onPause() { super.onPause(); } } 34
  • 35. Assets e Lib •  Assets •  Libs •  •  •  Not optimized and compiled resources External libraries Java o C 35
  • 36. Resources •  •  •  Any other information that are not code Stored in config files external to code (but inside the final apk package) Contain •  •  •  •  Drawable Layouts Xml Values 36
  • 37. Classe R.java •  Bridge between activities and resources •  In gen/ •  Dynamically generated (by Android’s Eclipse plugin) and contains numeric constant referred to every resources of the project •  Contains only public fields (“public static final”) 37
  • 38. Resource Example String.xml <?xml version="1.0" encoding="utf-8"?> <resources> XML <string name="app_name">Test</string> <string name="action_settings" >Settings</string> <string name="hello_world" >Hello world!</string> </resources> 38
  • 39. Layout •  XML Files •  Defines the visual structure for a user interface •  Target many resolutions 39
  • 40. Layout Example Activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > XML <TextView android:layout_width="wrap_content” android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout> 40
  • 41. Widget •  Visual Components of Android •  •  •  •  •  •  Button TextView EditText WebView ImageView … 41
  • 42. Widget Example Button JAVA Button myButton = new Button(this); myButton.setText(R.string.button_back); myButton.setLayoutParams(new LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT )); XML <Button android:id="@+id/button1” android:layout_width="wrap_content” android:layout_height="wrap_content” android:layout_alignLeft="@+id/textView1” android:layout_below="@+id/textView1” android:layout_marginLeft="41dp” android:text="Button” /> 42
  • 43. Eclipse UI Builder 43
  • 44. Views •  Base component for UI (Widget) •  Layout •  View Groups •  •  Visual structure of the UI Invisible Container that contains other View or ViewGroup 44
  • 45. Manifest •  Contains the essential information about the application •  Other elements to declare •  •  •  •  •  Version Name Icon Permission Features •  •  •  •  •  •  Activity Services Provider Receiver uses-sdk uses-permission 45
  • 46. Design Pattern •  Model – View – Controller •  Model – View – Presenter •  In the official Android documentations doesn’t exists any referral to these patterns •  •  Activity -> Controller Activity -> View 46
  • 47. What’s new in 4.4 ? •  Small amount of memory Only 512Mb •  Print API •  Share Everywhere •  Immersive mode •  Tap To Pay 47
  • 48. Fragmentation ‘minSdkVersion=“14”’ 48
  • 49. Android Family Tree 1.5 Cupcake 1.6 Donut 2.0 Eclair 2.2 Froyo 2.3 Gingerbread 4.4 KitKat 3.0 Honeycomb 4.0 Ice Cream Sandwich 4.1 Jelly Bean 49
  • 50. January Fragmentation Status 50
  • 51. How many Display! Screen Types vs Screen Sizes 51
  • 52. Suggestions (No Panic!) •  Choose the right target of your application •  •  •  •  Learn how to use correctly the res. Support library Test on at least two devices Fragmentation can be an advantage •  minSdkVersion=“14” 52
  • 53. Publish Make public your creations! 53
  • 54. Markets •  Google •  Samsung •  Amazon •  Any other market (your) 54
  • 55. Google Play Store 55
  • 56. Google Play Store - Publish 56
  • 57. Google Play Store - Stats 57
  • 58. Introduction to Android – The End +MatteoGazzurelli That’s me! @gazzumatteo matteo@duckma.com Thank You & Have Fun! 58
  • 59. Questions? 59
  • 60. Links & resources •  •  •  •  •  •  Android Developer http://developer.android.com Android Design Guidelines http://developer.android.com/design/ Commonsware http://wares.commonsware.com Omnibus – Commonsware https://github.com/commonsguy/cw-omnibus Play Store Publish http://play.google.com/apps/publish/ Duckma http://duckma.com 60
  • 61. Introduction to Android – The End +MatteoGazzurelli That’s me! @gazzumatteo matteo@duckma.com Thank You & Have Fun! 61

×