Navegação
A navegação eficaz é uma parte essencial do design de aplicativos Android, garantindo que os usuários possam se movimentar intuitivamente pelo aplicativo e acessar as funcionalidades desejadas. Existem várias técnicas e componentes fornecidos pelo Android para implementar uma navegação fluída e agradável.
1. Navegação Básica com Intenções (Intents)
As intenções são usadas para iniciar atividades, serviços e enviar broadcasts. Para navegação simples entre atividades, você pode usar intenções explícitas:
Intent intent = new Intent(CurrentActivity.this, TargetActivity.class);
startActivity(intent);
2. Usando o Componente Navigation
A Jetpack Navigation é uma biblioteca que ajuda a implementar a navegação de maneira consistente em todo o aplicativo. Ela oferece um editor gráfico no Android Studio para criar e visualizar o grafo de navegação.
Para começar, você precisa adicionar a dependência no seu arquivo build.gradle
:
implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
implementation "androidx.navigation:navigation-ui-ktx:2.3.5"
Criando um Grafo de Navegação:
- No Android Studio, clique com o botão direito no seu pacote.
- Selecione “New -> Android Resource File”.
- Escolha “Navigation” como o tipo de arquivo.
Você pode adicionar destinos ao seu grafo de navegação e definir as transições entre eles visualmente.
Navegação com Fragmentos:
// Inicialize o NavController
NavController navController = Navigation.findNavController(view);
// Navegue para o fragmento de destino
navController.navigate(R.id.action_currentFragment_to_targetFragment);
3. Navegação com BottomNavigationView
O BottomNavigationView
é um componente de interface do usuário comum para fornecer navegação entre três a cinco destinos. Para usá-lo com a biblioteca de navegação:
- Adicione um
BottomNavigationView
no seu layout. - Configure um
NavigationController
:
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupWithNavController(bottomNavigationView, navController);
4. Navegação com DrawerLayout (Navigation Drawer)
O DrawerLayout
é uma maneira popular de fornecer acesso às diferentes seções do aplicativo. Para configurá-lo com a biblioteca de navegação:
- Adicione um
DrawerLayout
no seu layout. - Configure um
NavigationController
:
DrawerLayout drawerLayout = findViewById(R.id.drawer_layout);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout);
NavigationUI.setupWithNavController(navigationView, navController);
No seu método onOptionsItemSelected()
:
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
return NavigationUI.onNavDestinationSelected(item, navController) || super.onOptionsItemSelected(item);
}
5. Passando Dados entre Destinos
Você pode passar dados entre destinos usando argumentos. Para definir argumentos em um destino:
<fragment
android:id="@+id/destinationFragment"
android:name="com.example.myapp.DestinationFragment"
tools:layout="@layout/fragment_destination">
<argument
android:name="argKey"
app:argType="string" />
</fragment>
Para navegar com argumentos:
Bundle args = new Bundle();
args.putString("argKey", "value");
navController.navigate(R.id.destinationFragment, args);
Implementar uma navegação eficaz em um aplicativo Android não apenas melhora a experiência do usuário, mas também facilita a manutenção e a expansão do código.