matteo gazzurelli - introduction to android development - have a break edition

Post on 14-Jan-2015

117 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

•  Google

•  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 matteo@duckma.com

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 matteo@duckma.com

Thank You & Have Fun!

That’s me!

top related