Date post: | 14-Jan-2015 |
Category: |
Technology |
Upload: | duckma |
View: | 116 times |
Download: | 0 times |
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
Introduction to Android*
3
Android, the unknown… *Have a break Edition
Android, the unknown...
• Mobile Operating System by Android Inc.
• Bought by Google in 2005
• Unveiled in 2007
3
Why develop for Android?
• Is adaptable and functional
• Very good OS
• Good Business!
5
Google’s Role
• Development & Support
• Google Play
• Nexus
6
Developers
7
Android 101 In theory…. and in practice.
Java Based
8
Java Hello World
Java VM
Dalvik VM* (ART 4.4)
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
Android Architecture
11
Application
Application Framework
Libraries Runtime
Kernel Linux
Home, Contacts, Telephone, Browser, …
Managers for Activity, Window, Package, …
SQLite, OpenGL, SSL, … Dalvik VM, Core libs
Driver for Display, Camera, Flash, Wifi, Audio, …
Four pillars of Android
• Activities
• Services
• Broadcast Receivers
• Content Providers
12
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
Activity Lifecycle
14
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
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
Services
• Application components that can perform long-running 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
Service Lifecycle
18
Broadcast Receiver
19
• 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
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
Content Provider
21
22
Hands On Down and dirty!
Craftsman tools
23
• IDE • Eclipse • Android Studio
• Tools: • ADT (Android Developer Tools) • Android SDK Tools • Android Platform Tools • AVD (Android Virtual Device) / Emulator
Eclipse / Android Studio
24
Android SDK Manager (via ADT)
25
Android Virtual Device Manager (AVD)
26
LogCat
27
Debug
28
29
Let’s start a new project Gentlemen start your engines!
File -> New Project
30
Tutorial
31
Project structure
32
Src
• Java Classes • Activity • Fragment • Adapter • Models
• Organized in Packages
33
Activity Sample Code
34
JAVA package com.example; 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(); } }
Assets e Lib
• Assets • Not optimized and compiled resources
• Libs
• External libraries • Java o C
35
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
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
Resource Example String.xml
38
XML <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Test</string> <string name="action_settings" >Settings</string> <string name="hello_world" >Hello world!</string> </resources>
Layout
• XML Files
• Defines the visual structure for a user interface
• Target many resolutions
39
Layout Example Activity_main.xml
40
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" > <TextView android:layout_width="wrap_content” android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>
Widget
• Visual Components of Android • Button • TextView • EditText • WebView • ImageView • …
41
Widget Example Button
42
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” />
Eclipse UI Builder
43
Views
• Base component for UI (Widget)
• Layout • Visual structure of the UI
• View Groups • Invisible Container that contains other View or ViewGroup
44
Manifest
• Contains the essential information about the application • Version • Name • Icon • Permission • Features
• Other elements to declare • Activity • Services • Provider • Receiver • uses-sdk • uses-permission
45
Design Pattern
• Model – View – Controller • Activity -> Controller
• Model – View – Presenter • Activity -> View
• In the official Android documentations doesn’t exists any referral to these patterns
46
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”’
Android Family Tree
49
1.5 Cupcake 1.6 Donut 2.0 Eclair 2.2 Froyo 2.3 Gingerbread
3.0 Honeycomb
4.0 Ice Cream Sandwich 4.1 Jelly Bean
4.4 KitKat
January Fragmentation Status
50
How many Display!
51
Screen Types vs Screen Sizes
Suggestions (No Panic!)
• Choose the right target of your application • minSdkVersion=“14”
• Learn how to use correctly the res. • Support library • Test on at least two devices • Fragmentation can be an advantage
52
53
Publish Make public your creations!
Markets
• Samsung
• Amazon
• Any other market (your)
54
Google Play Store
55
Google Play Store - Publish
56
Google Play Store - Stats
57
58
Introduction to Android – The End
+MatteoGazzurelli
@gazzumatteo [email protected]
Thank You & Have Fun!
That’s me!
59
Questions?
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
@gazzumatteo [email protected]
Thank You & Have Fun!
That’s me!