Download - Mini Curso - Android
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
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