📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Especialização em Android Nativo. Recomendado revisar antes de iniciar.
v1.0 — Android Nativo, Kotlin, ConstraintLayout Avançado, Chains, Guidelines Percentuais e Intents Nativas
Série Prática Android Clássico — Projeto 4 de 21
- P01: Dados RPG (2D, 3D & Ciclo de Vida)
- P02: Jogo da Memória (PNG & POC)
- P03: Genius / Simon Says Clássico & Demo de Áudio
- ➡️ P04 (este): Cartão de Visitas Digital · ConstraintLayout & Intents
- P05: Quiz Game com Cronômetro Decrescente
O Cartão de Visitas Digital ensina a projetar interfaces responsivas de nível profissional no Android sem aninhar múltiplos layouts pesados. O projeto foca no uso avançado do ConstraintLayout: encadeamentos horizontais e verticais (Chains), linhas-guia percentuais (Guidelines), barreiras dinâmicas (Barriers), elevação Material com MaterialCardView, e integração direta com outros aplicativos nativos do smartphone por meio de Intents Implícitas (ligar para telefone, abrir WhatsApp, enviar e-mail e abrir perfil profissional no navegador).
Os layouts XML, recursos vetoriais e código Kotlin residem na subpasta canônica mobile-android-kotlin/:
catalogo_projetos/android_p04_cartao_views/
├── assets/
│ ├── arquitetura_cartao_views.svg
│ └── screenshot_p04.png
├── mobile-android-kotlin/
│ ├── app/
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── java/br/com/curso/cartaovisitas/
│ │ │ │ └── MainActivity.kt
│ │ │ ├── res/
│ │ │ │ ├── drawable/
│ │ │ │ └── layout/activity_main.xml
│ │ │ └── AndroidManifest.xml
│ │ └── build.gradle
│ ├── gradle/
│ ├── build.gradle
│ ├── gradlew
│ ├── settings.gradle
│ └── README.md
└── index.md
| ID | Persona | Narrativa da Funcionalidade | Critério de Aceitação Principal | Prioridade |
|---|---|---|---|---|
| US-01 | Profissional / Usuário | Quero exibir meu cartão de visitas digital com foto, nome, cargo e contatos perfeitamente alinhados. | Interface organizada e sem distorções em telas de diferentes tamanhos e proporções. | Alta |
| US-02 | Contato / Cliente | Quero tocar no botão de telefone para abrir o discador nativo com o número preenchido. | Disparo de Intent com ação Intent.ACTION_DIAL. |
Alta |
| US-03 | Contato / Cliente | Quero tocar no botão de e-mail para abrir o aplicativo de correio eletrônico com o destinatário pronto. | Disparo de Intent implícita Intent.ACTION_SENDTO com esquema mailto:. |
Alta |
| US-04 | Contato / Cliente | Quero abrir links de redes sociais (LinkedIn, GitHub) no navegador padrão do aparelho. | Disparo de Intent com Intent.ACTION_VIEW e URL validada. |
Média |
| US-05 | Designer de UI | Quero que o cartão possua cantos arredondados e sombra de profundidade Material Design. | Uso de MaterialCardView com raio de 16dp e elevação de 8dp. |
Baixa |
ConstraintLayout.Guideline horizontal orientada a 35% da altura da tela para ancorar o cartão de destaque.startActivity().flowchart TD
Client([fa:fa-user Contato / Cliente])
OSApps[(fa:fa-mobile Apps do Sistema)]
subgraph AppCartao ["🪪 Cartão Digital (mobile-android-kotlin)"]
UC01["Visualizar Cartão de Visitas"]
UC02["Tocar no Botão Telefone"]
UC03["Tocar no Botão E-mail"]
UC04["Tocar no Link GitHub/LinkedIn"]
UC05["Compartilhar Contato via Intent"]
end
Client --> UC01
Client --> UC02
Client --> UC03
Client --> UC04
Client --> UC05
UC02 -->|Intent.ACTION_DIAL| OSApps
UC03 -->|Intent.ACTION_SENDTO| OSApps
UC04 -->|Intent.ACTION_VIEW| OSApps
| ID Requisito | História de Usuário | Artefato de Código | Teste de Aceitação |
|---|---|---|---|
| RF-01 | US-01 | mobile-android-kotlin/app/src/main/res/layout/activity_main.xml |
testFlatConstraintLayout() |
| RF-02 | US-01, US-05 | mobile-android-kotlin/app/src/main/res/layout/activity_main.xml |
testGuidelinePercentage() |
| RF-03 | US-01 | mobile-android-kotlin/app/src/main/res/layout/activity_main.xml |
testHorizontalSpreadChain() |
| RF-04 | US-02, US-03, US-04 | mobile-android-kotlin/app/.../MainActivity.kt |
testImplicitIntentsLaunch() |
| RF-05 | US-02, US-03 | mobile-android-kotlin/app/.../MainActivity.kt |
testResolveActivitySafety() |
MainActivity.kt)ℹ️ O trecho de código que ficava aqui não correspondia ao código do projeto e foi retirado. Consulte os arquivos em
mobile-android-kotlin.
cd catalogo_projetos/android_p04_cartao_views/mobile-android-kotlin
./gradlew assembleDebug
./gradlew test
| Checkpoint | Meta Técnica | Critério de Aceite | Status |
|---|---|---|---|
| CP-01 | Layout Constraint Único | Tela estruturada sem nenhum aninhamento supérfluo | PASS ✅ |
| CP-02 | Cadeias e Diretrizes | Uso de Guidelines percentuais e Chains horizontais | PASS ✅ |
| CP-03 | Intent de Discagem | Ação ACTION_DIAL abre discador com número configurado |
PASS ✅ |
| CP-04 | Intent de E-mail e Web | Abertura correta de clientes de e-mail e navegador | PASS ✅ |
| CP-05 | Suíte de Testes Automatizados | Testes de unidade e instrumentação aprovados com 100% de sucesso | PASS ✅ |