mini curso - android

55
Departamento de Ciência da Computação Tudo o que você precisa saber para iniciar o aprendizado sobre a plataforma ANDROID. Por : Ricardo Sutana de Mello GET UPDATE – Introdução ao Android vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides

Upload: ricardo-sutana

Post on 27-Nov-2015

39 views

Category:

Documents


2 download

TRANSCRIPT

Departamento de

Ciência da Computação

Tudo o que você precisa saber para iniciar o

aprendizado sobre a plataforma ANDROID.

Por : Ricardo Sutana de Mello

GET UPDATE – Introdução ao Android

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides

Mini Curso – Android Básico

O que é o ANDROID ?

Android é uma plataforma composta de sistema

operacional, middleweres e um conjunto de aplicativos;

Baseado no núcleo do Linux;

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 2

Mini Curso – Android Básico

O que eu preciso para programar para Android ?

Paciência;

Curiosidade;

Programação Orientada a Objetos;

Programação em Java;

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 3

Mini Curso – Android Básico

Android ADT(21.1.0)

Eclipse + ADT Plugin

Android SDK Tools

Android Plataforms Tools

Ultima atualização Android

Emulador

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 4

Mini Curso – Android Básico

Mercado Android:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 5

Mini Curso – Android Básico

Prospecção (2016):

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 6

Mini Curso – Android Básico

Versões lançadas:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 7

Fonte:

http://developer.android.com/about/dashboards/index.html

Mini Curso – Android Básico

Primeiros passos “Hello World”:

File>New>Android Application Project

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 8

Mini Curso – Android Básico

Primeiros passos “Hello World”:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 9

Mini Curso – Android Básico

Primeiros passos “Hello World”:

Aplication Name:

Project Name:

Package Name:

Minimim Tequired SDK:

Target SDK:

Compile With:

Theme:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 10

Mini Curso – Android Básico

Primeiros passos “Hello World”:

Aplication Name: Nome da aplicação que aparecerá na Play Store;

Project Name:

Package Name:

Minimim Tequired SDK:

Target SDK:

Compile With:

Theme:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 11

Mini Curso – Android Básico

Primeiros passos “Hello World”:

Aplication Name: Nome da aplicação que aparecerá na Play Store

Project Name: Nome que sera utilizado dentro do eclipse;

Package Name:

Minimim Tequired SDK:

Target SDK:

Compile With:

Theme:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 12

Mini Curso – Android Básico

Primeiros passos “Hello World”:

Aplication Name: Nome da aplicação que aparecerá na Play Store

Project Name: Nome que sera utilizado dentro do eclipse

Package Name: Identificador único do aplicativo;

Minimim Tequired SDK:

Target SDK:

Compile With:

Theme:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 13

Mini Curso – Android Básico

Primeiros passos “Hello World”:

Aplication Name: Nome da aplicação que aparecerá na Play Store

Project Name: Nome que sera utilizado dentro do eclipse

Package Name: Identificador único do aplicativo

Minimim Tequired SDK: Nível mais baixo de configuração suportada;

Target SDK:

Compile With:

Theme:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 14

Mini Curso – Android Básico

Primeiros passos “Hello World”:

Aplication Name: Nome da aplicação que aparecerá na Play Store

Project Name: Nome que sera utilizado dentro do eclipse

Package Name: Identificador único do aplicativo

Minimim Tequired SDK: Nível mais baixo de configuração suportada

Target SDK: Nivel mais alto da API que seu código será testado;

Compile With:

Theme:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 15

Mini Curso – Android Básico

Primeiros passos “Hello World”:

Aplication Name: Nome da aplicação que aparecerá na Play Store

Project Name: Nome que sera utilizado dentro do eclipse

Package Name: Identificador único do aplicativo

Minimim Tequired SDK: Nível mais baixo de configuração suportada

Target SDK: Nivel mais alto da API que seu código será testado;

Compile With: Nivel da API que seu código será testado;

Theme:

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 16

Mini Curso – Android Básico

Primeiros passos “Hello World”:

Aplication Name: Nome da aplicação que aparecerá na Play Store

Project Name: Nome que sera utilizado dentro do eclipse

Package Name: Identificador único do aplicativo

Minimim Tequired SDK: Nível mais baixo de configuração suportada

Target SDK: Nivel mais alto da API que seu código será testado;

Compile With: Nivel da API que seu código será testado;

Theme: Tema oferecido para sua aplicação;

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 17

Estrutura do Projeto

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 18

src

Pasta do projeto que contém todas as classes java

necessárias. MainActivity.java foi criada pelo

Wizard no início do projeto.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 19

gen

A pasta gen contém a classe R.java que é gerada

automaticamente e permite que a aplicação acesse

qualquer recurso como arquivos e imagens,

utilizando as constantes da classe R.java.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 20

OBS: NUNCA ALTERAR

MANUALMENTE A

CLASSE R.java

assets

Arquivos opcionais, como por exemplo uma fonte

customizada, estes arquivos são acessíveis ao

programador

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 21

libs

Bibliotecas criadas fora do android deverão ser

inseridas nesta pasta

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 22

res

dedicado ao armazenamento

de recursos (arquivos de

layout, imagens, animações e

xml contendo valores como

strings, arrays e etc) acessíveis

através da classe R;

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 23

Android Virtual Device

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 24

Android Virtual Device

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 25

Android Virtual Device

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 26

Android Virtual Device

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 27

Hello World

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 28

WIDGETS

Um widget é um componente de uma interface

gráfica de usuário (GUI)

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 29

LinearLayout – android.widget.LinearLayout

Este tipo de layout organiza os widgets de forma

linear, podendo ser na horizontal ou vertical.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 30

<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android android:layout_width=“ ” android:layout_hight=“ ” android:orientation=“ ” > . . . </LinearLayout>

<TextView android:id="@+id/letreiro" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:drawableTop="@drawable/letreiro" android:onClick="selecionarOpcao" android:text="@string/letreiro" android:textColor="#FFFFFF" android:textStyle="bold" />

RelativeLayout - android.widget.RelativeLayout

Layout extremamente poderoso, pois consegue

posicionar qualquer widget à esquerda, àdireita,

acima ou abaixo de outro widget qualquer.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 31

<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android android:layout_width=“ ” android:layout_hight=“ ” > . . . </RelativeLayout>

<TextView android:id="@+id/letreiro" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:layout_marginTop="80dp" android:clickable="true" android:drawableTop="@drawable/letreiro" android:onClick="selecionarOpcao" android:text="@string/letreiro" android:textColor="#FFFFFF" android:textStyle="bold" />

TextView - android.widget.TextView

Simplesmente apresenta um texto na tela

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 32

<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/titulo“ />

EditText – android.widget.EditText

Utilizada para o usuário digitar informações em um

campo de texto.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 33

<EditText android:id="@+id/nomeEditText" android:layout_height="wrap_content" android:layout_width="match_parent" android:inputType="textPersonName"> <requestFocus /> </EditText>

Button – android.widget.Button

Adiciona um botão ao aplicativo para realizar

alguma ação necessita da implementação na classe

MainActivity.java do metodo onClick.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 34

<Button android:id="@+id/saudacaoButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/surpreenda_me" android:onClick="surpreenderUsuario"/>

Spinner - android.widget.Spinner

Exibe para o usuário uma lista de itens dos quais ele só pode

selecionar um (combobox, dropdown..) Os itens listados devem

ser colocados em um arraylist no arquivo strings.xml

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 35

<Spinner android:id="@+id/categoria" android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="@string/categoria" >

<string-array name="categoria"> <item>Aluno</item>ì <item>Professor</item> <item>Funcionário</item> <item>Visitante</item> <item>Outros</item> </string-array>

Outros componentes gráficos

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 36

Exemplo

Para este primeiro exemplo, vamos criar uma

activity onde o usuário insere seu nome e clica em

um botão.

File>Import>Existing Android Code Into Workspace

Selecione o diretório raiz

Refresh

Selecionar arquivo Exemplo

Finish

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 37

Activitys

Toda activity é uma classe de sua aplicação que

controla os eventos de uma tela.

Cada activity deve ser obrigatoriamente declarada

no AndroidManifest.xml. Para isso basta usar a tag: <activity android:name=".MyActivity"/>

É composto por 7 métodos que indicam seu estado

atual. São eles:

onCreate(), onStart(), onResume(), onPause(), onStop(),

onRestart() e onDestroy().

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 38

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 39

Intents – android.content.Intent

A Intent é uma mensagem que a aplicação envia

para o sistema operacional

Uma Intent é uma AÇÃO Intent intent = new Intent(this,ClasseAtividade.class);

startActivity(intent);

ou

Uri uri = Uri.parse("http://www.ufjf.br/getcomp");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

startActivity(Intent);

Integração entre aplicações

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 40

Intents - android.content.Inten t

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 41

Composição das Intents

Nome do Componente

De•finido pelo nome completo da classe e o nome do pacote defi•nido no

AndroidManifest.xml que representamos o componente que deve ser o

encarregado de tratar a Intent.

Ação

A ação é uma string que de•fine o que deve ser realizado. Existem diversas

ações genéricas no Android, disponibilizadas como constantes na classe

Intent. Alguns exemplos de constantes são:

ACTION_CALL

ACTION_VIEW

Dados

Os dados de uma Intent são representados através de uma URI e a partir

dela a aplicação decide o que deve ser feito.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 42

Intents - android.content.Intent

Composição das Intents

Informações extras

As informações extras são quaisquer outros dados necessários para que o

componente execute a ação apropriadamente.

Categoria

A categoria, representada apenas por uma string, serve como informação

adicional para auxiliar o Android na escolha de qual componente é o mais

adequado para receber a Intent.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 43

Intents - android.content.Intent

Exemplo uso de intents

Agora implementaremos nosso exemplo anterior e

integraremos as intents na aplicação.

1) Criar o novo Layout

2) Criar a classe responsavel pela nova Activity

3) Alterar o Layout da Activity principal

4) Alterar a classe MainActivity.java para que as

intents sejam utilizadas.

5) Alterar o Strings.xml

6) Alterar o AndroidManifest.xml para este permitir o

uso das intents criadas.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 44

Criando o novo Layout

File>New>Android XML File.

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 45

Criando o novo Layout

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 46

File>New>Android XML File.

<?xml version="1.0" encoding="utf-8"?>

<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/mensagemTextView"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

</LinearLayout>

Criando a Activity: SaudacaoActivity.java

File>New>Class

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 47

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 48

File>New>Class

public class SaudacaoActivity extends Activity {

public final static String EXTRA_NOME_USUARIO = "Exemplo12.EXTRA_NOME_USUARIO";

public static final String ACAO_EXIBIR_SAUDACAO = "Exemplo12.ACAO_EXIBIR_SAUDACAO";

public static final String CATEGORIA_SAUDACAO ="Exemplo12.CATEGORIA_SAUDACAO";

@Override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.saudacao);

TextView saudacaoTextView = (TextView)findViewById(R.id.mensagemTextView);

Intent intent = getIntent();

if(intent.hasExtra(EXTRA_NOME_USUARIO)){

String saudacao = getResources().getString(R.string.saudacao);

saudacaoTextView.setText(saudacao + " " + intent.getStringExtra(EXTRA_NOME_USUARIO));

}

}

}

Criando a Activity: SaudacaoActivity.java

Alterando o Layout da Activity principal

<LinearLayout 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"

android:orientation="vertical">

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/titulo" />

<EditText

android:id="@+id/nomeEditText"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="textPersonName">

<requestFocus/>

</EditText>

<Button

android:id="@+id/button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:text="@string/textoBotao"

android:onClick="surpresa"/>

</LinearLayout>

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 49

Alterando a MainActivity.java public class MainActivity extends Activity {

private EditText nomeEditText;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

this.nomeEditText = (EditText) findViewById(R.id.nomeEditText);

}

public void surpresa(View v){

Intent intent = new Intent(SaudacaoActivity.ACAO_EXIBIR_SAUDACAO);

intent.addCategory(SaudacaoActivity.CATEGORIA_SAUDACAO);

String texto = nomeEditText.getText().toString();

intent.putExtra(SaudacaoActivity.EXTRA_NOME_USUARIO,texto);

startActivity(intent);

}

}

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 50

Alterando a Strings.xml <?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">Exemplo2</string>

<string name="action_settings">Settings</string>

<string name="menu_settings">Settings</string>

<string name="title_activity_main">MainActivity</string>

<string name="titulo">Introduçao ao Android</string>

<string name=“textoBotao">Enviar</string>

<string name="saudacao">Bem Vindo ao GetUpdate </string>

</resources>

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 51

Alterando a AndroidMainifest.xml

Vamos apenas inserir este trecho de código, entre a tag <aplication>...</aplication>

<activity

android:name="br.edu.ufjf.getupdate.SaudacaoActivity">

<intent-filter >

<action android:name="Exemplo12.ACAO_EXIBIR_SAUDACAO"/>

<category android:name="Exemplo12.CATEGORIA_SAUDACAO"/>

<category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

</activity>

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 52

LogCat

No Android não há como imprimir mensagens no

console via System.out.println(“ ”).

Todas as mensagens são exibidas em forma de log

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 53

NIVEL SIGLA COR

Debug D AZUL

Verbose V PRETO

Info – Informação I VERDE

Warm – Alerta W LARANJA

Error – Erro E VERMELHO

LogCat

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 54

Obrigado pela presença!

vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 55