[Android devcamp] Android Bootcamp – 2012

Post on 01-Sep-2014

478 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Básico de Android apresentado no Bootcamp promovido pelo GTUG Campinas em conjunto com GTUG São Paulo

Transcript

Android BootcampDouglas Drumond!

drumond.douglas@gmail.com

eu.about()

eu.about()

• Técnico

eu.about()

• Técnico

• (pseudo)Matemático

eu.about()

• Técnico

• (pseudo)Matemático

• Bacharel em Ciência da Computação

eu.about()

• Técnico

• (pseudo)Matemático

• Bacharel em Ciência da Computação

• Analista de software no Instituto de Pesquisas Eldorado

@Eldorado

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

@Eldorado

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

BP

http://www.flickr.com/photos/natalielucier/3619749009/

Hoje

http://www.gtugs.org/

http://www.flickr.com/photos/donkeyhotey/5666071828/

Ferramentas

Pré-requisitos

• JDK!

• Android SDK

Sistema Operacional

• Linux!

• Mac OS X (Intel)!

• Windows XP ou superior

Ferramentas

Ferramentas

Ferramentas

Ferramentas

Ferramentas

Ferramentas

• Remote debugger

• logcat

• DDMS

Ferramentas

Ferramentas

Ferramentas

Ferramentas

Ferramentas

Livre

• the definition of open: "mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/manifest.git ; repo sync ; make"

http://twitter.com/#!/arubin/status/27808662429

Arquitetura

Arquitetura

Linux Kernel

Arquitetura

Linux Kernel

Bibliotecas Dalvik

Arquitetura

Linux Kernel

Bibliotecas

Framework

Dalvik

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Dissecando as Aplicações

Activity

Service

Content Provider

Intent

Intent

Intent

Intent

Intent

Broadcast Receiver

• Não possui interface (com usuário)!

• Roda em segundo plano!

• Reage a mensagens de broadcast!

• Exemplo: carga de bateria

Activity

• Interface!

• Um objetivo!

• Várias por aplicativo!

• Pode iniciar outras activities

Activity

• 3 estados: ativa, em pausa e parada!

• 3 ciclos de vida!

• pode morrer a qualquer momento se não estiver ativa

Activity

ActivityonCreate()

ActivityonCreate()

onStart()

ActivityonCreate()

onStart()

onResume()

ActivityonCreate()

onStart()

onResume()

em execução

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Primeiro plano

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Visível

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

Primeiro plano

Visível

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

Ciclo de vida completo

Multitarefa

Multitarefa

Multitarefa

onCreate()

Multitarefa

onPause()

Multitarefa

Multitarefa

onResume()

Multitarefa

onPause()

Multitarefa

onStop()

Multitarefa

onStop() onCreate()

Multitarefa

onStop() onCreate()

onPause()

Multitarefa

onStop() onCreate()

onStop()

onPause()

Multitarefa

onStop() onCreate()

onStop()

onPause()

Multitarefa

onStop() onCreate() onCreate()

onStop()

onPause()

Multitarefa

onRestart()

onStop() onCreate() onCreate()

onStop()

onPause()

Multitarefa

onStart()

onRestart()

onStop() onCreate() onCreate()

onStop()

onPause()

Prática

• Criar uma aplicação com os métodos onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() e onRestart()!

• Colocar logs nesses métodos e observar o que acontece

UI

• Hierarquia de ViewGroups e Views

View Group

ViewView Group View

View ViewView

http://developer.android.com/guide/topics/ui/how-android-draws.html

Layout<?xml&version="1.0"&encoding="utf98"?>&<LinearLayout&xmlns:android="http://schemas.android.com/apk/res/android"&&&&&&&&&&&&&&&android:layout_width="match_parent"&&&&&&&&&&&&&&&&android:layout_height="match_parent"&&&&&&&&&&&&&&&&android:orientation="vertical"&>&&&&&<TextView&android:id="@+id/text"&&&&&&&&&&&&&&&android:layout_width="wrap_content"&&&&&&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&&&&&&android:text="Hello,&I&am&a&TextView"&/>&&&&&<Button&android:id="@+id/my_button"&&&&&&&&&&&&&android:layout_width="wrap_content"&&&&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&&&&android:text="Hello,&I&am&a&Button"&/>&</LinearLayout>&

http://developer.android.com/

Layout

public&void&onCreate(Bundle&savedInstanceState)&{&&&&&super.onCreate(savedInstanceState);&&&&&setContentView(R.layout.main_layout);&}

Button&myButton&=&(Button)&findViewById(R.id.my_button);

http://developer.android.com/

Layout

• FrameLayout!

• LinearLayout!

• TableLayout!

• RelativeLayout

Eventos

• Definir um listener e registrá-lo com a View!

• Sobrecarregar um método de callback na View

Listeners//&Create&an&anonymous&implementation&of&OnClickListener&private&OnClickListener&mCorkyListener&=&new&OnClickListener()&{&&&&&public&void&onClick(View&v)&{&&&&&&&//&do&something&when&the&button&is&clicked&&&&&}&};&!protected&void&onCreate(Bundle&savedValues)&{&&&&&...&&&&&//&Capture&our&button&from&layout&&&&&Button&button&=&(Button)findViewById(R.id.corky);&&&&&//&Register&the&onClick&listener&with&the&implementation&above&&&&&button.setOnClickListener(mCorkyListener);&&&&&...&}&

http://developer.android.com/

Listeners

public&class&ExampleActivity&extends&Activity&implements&OnClickListener&{&&&&&protected&void&onCreate(Bundle&savedValues)&{&&&&&&&&&...&&&&&&&&&Button&button&=&(Button)findViewById(R.id.corky);&&&&&&&&&button.setOnClickListener(this);&&&&&}&!&&&&//&Implement&the&OnClickListener&callback&&&&&public&void&onClick(View&v)&{&&&&&&&//&do&something&when&the&button&is&clicked&&&&&}&&&&&...&}

http://developer.android.com/

Intents

• Comunicação intra e inter app de um jeito amigável e inteligente!

• Serve para iniciar activities, services e broadcast receivers

Intents

• Possui um alvo facultativo!

• Se não tiver especificado alvo, o sistema encontra um!

• Pode executar uma Activity ou Service específico!

• IntentFilters

Intents

• Component name!

• Action!

• Data!

• Category!

• Extras!

• Flags

IntentsConstante Alvo AçãoACTION_CALL activity Inicia uma ligação

ACTION_EDIT activity Apresenta dados a serem editados

ACTION_MAIN activity Activity inicial

ACTION_SYNC activity Sincroniza dados com servidor

ACTION_BATTERY_LOW broadcast receiver Aviso de bateria fraca

ACTION_HEADSET_PLUG broadcast receiver Um fone de ouvido foi conectado ou desconectado

ACTION_SCREEN_ON broadcast receiver A tela foi ligada (acesa)

ACTION_TIMEZONE_CHANGED broadcast receiver Configurações de timezone modificadas

Intent filter

<intent9filter&.&.&.&>&&&&&<action&android:name="com.example.project.SHOW_CURRENT"&/>&&&&&<action&android:name="com.example.project.SHOW_RECENT"&/>&&&&&<action&android:name="com.example.project.SHOW_PENDING"&/>&&&&&.&.&.&</intent9filter>

<intent9filter&.&.&.&>&&&&&<data&android:mimeType="video/mpeg"&android:scheme="http"&.&.&.&/>&&&&&&<data&android:mimeType="audio/mpeg"&android:scheme="http"&.&.&.&/>&&&&&.&.&.&</intent9filter> http://developer.android.com/

http://developer.android.com/ !

http://developer.android.com/resources/browser.html?tag=tutorial

www.slideshare.net/douglasdrumond/

Obrigado

top related