📱 Cap 01: Seu Primeiro App (Activity, XML e Views)
🎯 Objetivo da Aula:
Ao final desta aula, você terá criado e executado seu primeiro projeto no Android Studio. Você vai entender como uma tela é desenhada (XML), como o código Java “encontra” essa tela (findViewById) e como fazer um botão reagir a um toque (setOnClickListener).
🏢 O Cenário Prático (Seu Desafio): Seu primeiro trabalho como desenvolvedor é criar o Painel de Boas-Vindas do seu jogo. A tela deve mostrar a mensagem “Bem-vindo, Treinador!” e ter um botão “Iniciar Aventura”. Quando o jogador tocar no botão, a mensagem deve mudar para “Boa sorte na sua jornada!”.
🧠 Fundamentos: A Teoria Traduzida
📖 Dicionário do Programador
- Activity: É uma “tela” do seu app — uma janela onde o usuário vê e interage com o conteúdo. Todo app Android começa com pelo menos uma Activity.
- View: É o nome genérico para qualquer componente visual — um texto, um botão, uma imagem. Tudo o que aparece na tela é uma View.
- ViewGroup (Layout): É uma “caixa” que organiza outras Views dentro de si, como o
LinearLayoutou oRelativeLayout. - XML (Layout): É o arquivo onde você desenha a tela — declara quais Views existem e como elas estão organizadas, mas sem nenhuma lógica.
- findViewById: É o método em Java que localiza, pelo
id, uma View desenhada no XML e a entrega para o seu código controlar. - setOnClickListener: É o “ouvido” de um botão — o código que você escreve dentro dele só executa quando o usuário toca o botão.
🎨 Padrão XML + Java (a Ponte)
Pense no XML como a planta de uma casa e no Java como o eletricista que liga os fios. O id de cada View no XML (android:id="@+id/...") é o nome que o Java usa para encontrar aquele componente com findViewById.
graph TD
A["XML: define a View com um id"] --> B["Java: localiza a View com findViewById"]
B --> C["Java: registra um setOnClickListener"]
C --> D["Usuário toca no botão"]
D --> E["Código do listener executa: setText(...)"]
🏗️ Construindo o Projeto (Checklist Studio)
Para esta aula (e para o Projeto 1, que você fará em seguida), vamos criar um projeto Android real:
- Abra o Android Studio e clique em
New Project. - Escolha o template Empty Views Activity (atenção: não escolha “Empty Activity” puro — esse usa Compose).
- Configure:
- Name:
Dados RPG - Package Name:
br.com.curso.dadosrpg - Language: Java
- Minimum SDK: API 21 (Android 5.0) ou superior.
- Name:
- Clique em Finish e aguarde o Gradle terminar de carregar.
💡 Este é o mesmo projeto que você vai evoluir no Projeto 1 (P01 — Dados RPG). Hoje vamos apenas testar a tela com um “Painel de Boas-Vindas”; no projeto, você vai substituir esse conteúdo pela mecânica do dado.
📖 Exemplo Passo a Passo: O Painel de Boas-Vindas
Parte 1 — A Tela (XML): abra app > src > main > res > layout > activity_main.xml e troque o conteúdo pelo:
<?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"
android:gravity="center"
android:padding="24dp">
<TextView
android:id="@+id/txt_mensagem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bem-vindo, Treinador!"
android:textSize="22sp"
android:textStyle="bold" />
<Button
android:id="@+id/btn_iniciar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="Iniciar Aventura" />
</LinearLayout>
Parte 2 — A Lógica (Java): abra MainActivity.java e conecte o botão à mensagem:
package br.com.curso.dadosrpg;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView txtMensagem;
private Button btnIniciar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1. Encontra as Views desenhadas no XML
txtMensagem = findViewById(R.id.txt_mensagem);
btnIniciar = findViewById(R.id.btn_iniciar);
// 2. Registra o "ouvido" do botão
btnIniciar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtMensagem.setText("Boa sorte na sua jornada!");
}
});
}
}
🛠️ Prática Obrigatória 1:
No seu activity_main.xml, adicione um segundo TextView, abaixo do botão, com id="txt_rodape" e texto "Versão 1.0". Ele não precisa reagir a nada — é só para praticar a criação de Views no XML.
🛠️ Prática Obrigatória 2:
No MainActivity.java, troque a mensagem do setText dentro do onClick para incluir o seu nome, por exemplo: "Boa sorte, " + "SeuNome" + "!".
🔑 Gabarito Passo a Passo:
Exercício 1 (XML):
<TextView
android:id="@+id/txt_rodape"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="Versão 1.0" />
Exercício 2 (Java):
txtMensagem.setText("Boa sorte, " + "SeuNome" + "!");
📤 Instruções de Entrega (Microsoft Teams):
- Tire um print da tela antes e depois de tocar no botão.
- Envie o código completo do
activity_main.xmle doMainActivity.java. - Submeta no canal de tarefas.
💡 No próximo capítulo (Cap 02), você vai aprender a lógica em Java (variáveis, operadores e a classe
Random) que vai dar vida à mecânica de sorteio do Projeto 1 — o Dado RPG.