🇧🇷 Versão em Português
Este projeto foi desenvolvido como parte da atividade acadêmica para consolidar os conhecimentos básicos de desenvolvimento de interfaces de usuário (UI) para Android utilizando Jetpack Compose.
O aplicativo implementa todas as funcionalidades propostas no codelab oficial do Android Developers: Noções básicas do Jetpack Compose.
- Compreender a estrutura e paradigma declarativo do Jetpack Compose
- Implementar funções combináveis (@Composable)
- Gerenciar estados e recomposição
- Trabalhar com listas eficientes (LazyColumn)
- Aplicar animações e transições
- Seguir boas práticas de desenvolvimento com Compose
- Tela inicial de boas-vindas
- Botão "Continue" que navega para a tela principal
- Estado persistente usando
rememberSaveable
- Lista com 1000 itens renderizada eficientemente com
LazyColumn - Cards expansíveis ao clicar no botão
- Animações suaves usando
animateContentSize - Ícones que mudam dinamicamente (ExpandMore/ExpandLess)
- Elevação de estado (State Hoisting)
- Persistência de estado durante rotações de tela
- Estados locais para controle de expansão dos cards
- Tema personalizado com suporte a modo claro e escuro
- Componentes Material 3 (Card, Button, IconButton, Surface)
- Tipografia e cores seguindo o Material Design
- Kotlin - Linguagem de programação
- Jetpack Compose - Toolkit moderno para UI
- Material 3 - Sistema de design
- Android Studio - IDE de desenvolvimento
androidx.compose.ui:ui
androidx.compose.material3:material3
androidx.compose.ui:ui-tooling-preview
androidx.activity:activity-composeTodas as funções de UI são marcadas com @Composable:
@Composable
fun MyApp(modifier: Modifier = Modifier) { ... }mutableStateOf- Cria estado observávelrememberSaveable- Persiste estado durante configurações- State Hoisting - Elevação de estado para componentes pai
- Column - Organização vertical
- Row - Organização horizontal
- LazyColumn - Lista eficiente para grandes datasets
.animateContentSize(
animationSpec = spring(
dampingRatio = Spring.DampingRatioMediumBouncy,
stiffness = Spring.StiffnessLow
)
)- Clone o repositório:
git clone https://github.com/natsalete/BasicsCodelab.git-
Abra o projeto no Android Studio
-
Sincronize as dependências Gradle
-
Execute o aplicativo em um emulador ou dispositivo físico:
- Clique em "Run" ou pressione
Shift + F10
- Clique em "Run" ou pressione
- Android Studio Hedgehog | 2023.1.1 ou superior
- JDK 17
- Android SDK mínimo: API 24 (Android 7.0)
- Android SDK alvo: API 34
- Paradigma Declarativo - Descrever "o que" exibir, não "como" exibir
- Recomposição - UI atualiza automaticamente quando o estado muda
- Performance - LazyColumn renderiza apenas itens visíveis
- Modularidade - Componentes reutilizáveis e testáveis
- Menos Boilerplate - Menos código comparado ao sistema tradicional de Views
- ✅ Elevação de estado (State Hoisting)
- ✅ Uso de
rememberSaveablepara persistência - ✅ Componentes sem estado (stateless) quando possível
- ✅ Previews para diferentes configurações
- ✅ Separação de responsabilidades
- ✅ Uso adequado de Modifiers
- ✅ Acessibilidade com contentDescription
Desenvolvido com ☕ e 💙
- GitHub: @natsalete
- LinkedIn: Natália Salete
- Email: natsalete14@gmail.com
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- Android Developers Team pelo excelente codelab
- Comunidade Jetpack Compose
This project was developed as part of an academic activity to consolidate basic knowledge of Android user interface (UI) development using Jetpack Compose.
The application implements all the functionalities proposed in the official Android Developers codelab: Jetpack Compose Basics.
- Understand the structure and declarative paradigm of Jetpack Compose
- Implement combinable functions (@Composable)
- Manage states and recomposition
- Work with efficient lists (LazyColumn)
- Apply animations and transitions
- Follow good development practices with Compose
- Welcome initial screen
- "Continue" button that navigates to the main screen
- Persistent state using
rememberSaveable
- List with 1000 items efficiently rendered with
LazyColumn - Expandable cards when clicking the button
- Smooth animations using
animateContentSize - Icons that change dynamically (ExpandMore/ExpandLess)
-
State elevation (State Hoisting)
-
State persistence during screen rotations
-
Local states for card expansion control
- Custom theme with light and dark mode support
- Material 3 components (Card, Button, IconButton, Surface)
- Typography and colors following Material Design
- Kotlin - Programming language
- Jetpack Compose - Modern UI toolkit
- Material 3 - Design system
- Android Studio - Development IDE
androidx.compose.ui:ui
androidx.compose.material3:material3
androidx.compose.ui:ui-tooling-preview
androidx.activity:activity-composeAll UI functions are marked with @Composable:
@Composable
fun MyApp(modifier: Modifier = Modifier) { ... }mutableStateOf- Creates observable staterememberSaveable- Persists state during configurations- State Hoisting - Elevation of state to parent components
- Column - Vertical organization
- Row - Horizontal organization
- LazyColumn - Efficient list for large datasets
.animateContentSize(
animationSpec = spring(
dampingRatio = Spring.DampingRatioMediumBouncy,
stiffness = Spring.StiffnessLow
)
- Clone the Repository:
git clone https://github.com/natsalete/BasicsCodelab.git
-
Open the project in Android Studio
-
Synchronize Gradle dependencies
-
Run the application on an emulator or physical device:
- Click "Run" or press
Shift + F10
- Android Studio Hedgehog | 2023.1.1 or higher
- JDK 17
- Minimum Android SDK: API 24 (Android 7.0)
- Target Android SDK: API 34
- Declarative Paradigm - Describe "what" to display, not "how" Display
- Recomposition - UI automatically updates when the state changes
- Performance - LazyColumn renders only visible items
- Modularity - Reusable and testable components
- Less Boilerplate - Less code compared to the traditional View system
- ✅ State Hoisting
- ✅ Use of
rememberSaveablefor persistence - ✅ Stateless components when possible
- ✅ Previews for different configurations
- ✅ Separation of responsibilities
- ✅ Proper use of Modifiers
- ✅ Accessibility with contentDescription
Developed with ☕ and 💙
-
GitHub: @natsalete
-
LinkedIn: Natália Salete
-
Email: natsalete14@gmail.com
This project is under the MIT license. See the LICENSE file for more details.
- Android Developers Team for the excellent codelab
- Jetpack Compose Community

