Page 1
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
Page 2
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
Page 3
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
Page 4
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
Page 5
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
Page 6
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
Page 7
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
Page 8
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
Page 9
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
Page 10
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
Page 11
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
Page 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:
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
Page 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:
Target SDK:
Compile With:
Theme:
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 13
Page 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:
Compile With:
Theme:
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 14
Page 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:
Theme:
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 15
Page 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:
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 16
Page 17
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
Page 18
Estrutura do Projeto
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 18
Page 19
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
Page 20
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
Page 21
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
Page 22
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
Page 23
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
Page 24
Android Virtual Device
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 24
Page 25
Android Virtual Device
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 25
Page 26
Android Virtual Device
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 26
Page 27
Android Virtual Device
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 27
Page 28
Hello World
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 28
Page 29
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
Page 30
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" />
Page 31
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" />
Page 32
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“ />
Page 33
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>
Page 34
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"/>
Page 35
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>
Page 36
Outros componentes gráficos
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 36
Page 37
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
Page 38
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
Page 39
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 39
Page 40
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
Page 41
Intents - android.content.Inten t
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 41
Page 42
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
Page 43
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
Page 44
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
Page 45
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
Page 46
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>
Page 47
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
Page 48
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
Page 49
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
Page 50
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
Page 51
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
Page 52
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
Page 53
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
Page 54
LogCat
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 54
Page 55
Obrigado pela presença!
vá em cabeçalho e rodapé para editar esta seção e aplicar automaticamente em todos os slides 55