Bottom Navigation Bar in Android Studio with Activities – Bottom Navigation View
Table of Contents
Bottom Navigation Bar
The Bottom Navigation Bar is a navigation view provided at the bottom of the screen making it easy for users to switch between multiple fragments or activities with the help of the bottom navigation bar.
We have provided four activities – Home, Search, Settings, and Profile. Users can easily switch between any of these. You can use fragments or activities as per your choice.
Step-by-Step Implementation
Step 1: Open Android Studio, Create New Project, Choose Empty Activity, and Name the Project “Bottom Navigation Activities”.
Step 2: Pre-requisites
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="lavender">#8692f7</color>
<color name="grey">#d2d2d2</color>
strings.xml
<string name="app_name">Bottom Navigation</string>
Create Android Resource Directory “anim”
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
android:duration="@android:integer/config_mediumAnimTime"
android:toXDelta="-100%p" />
themes.xml
Disable the action bar and change the theme color to lavender as per the below code.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.BottomNavActivityPractice" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/lavender</item>
<item name="colorPrimaryVariant">@color/lavender</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
<item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>
<style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
<item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
bottom_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/lavender"/>
item_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
android:state_selected="true"
android:color="@color/white"/>
android:state_selected="false"
android:color="@color/grey"/>
Step 5: Add all the vector assets to the drawable folder
Icons – home, search, settings, person pin.
Step 3: bottom_menu.xml
Right-click on res -> Android Resource Directory and select the menu then right-click on the menu directory and click on New -> Menu Resource File and name “bottom_menu”.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
android:id="@+id/bottom_home"
android:icon="@drawable/baseline_home_24"
android:id="@+id/bottom_search"
android:icon="@drawable/baseline_search_24"
android:title="Search" />
android:id="@+id/bottom_settings"
android:icon="@drawable/baseline_settings_24"
android:title="Settings" />
android:id="@+id/bottom_profile"
android:icon="@drawable/baseline_person_pin_24"
android:title="Profile" />
Step 7: activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
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"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/lavender"
android:layout_centerInParent="true"
android:textSize="36sp" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginEnd="20dp"
android:layout_marginStart="20dp"
android:layout_marginBottom="30dp"
android:layout_marginTop="30dp"
android:background="@drawable/bottom_background"
app:itemIconTint="@drawable/item_selector"
app:itemRippleColor="@android:color/transparent"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/bottom_menu" />
Step 4: all XML files
Create four activities named – MainActivity (HomeActivity), SearchActivity, SettingsActivity, and ProfileActivity.
activity_search.xml
<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SearchActivity">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/lavender"
android:layout_centerInParent="true"
android:textSize="36sp" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="30dp"
android:layout_marginEnd="30dp"
android:layout_marginStart="30dp"
android:layout_marginTop="30dp"
android:background="@drawable/bottom_background"
app:itemIconTint="@drawable/item_selector"
app:itemRippleColor="@android:color/transparent"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/bottom_menu" />
activity_settings.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SettingsActivity">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/lavender"
android:layout_centerInParent="true"
android:textSize="36sp" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="30dp"
android:layout_marginEnd="30dp"
android:layout_marginStart="30dp"
android:layout_marginTop="30dp"
android:background="@drawable/bottom_background"
app:itemIconTint="@drawable/item_selector"
app:itemRippleColor="@android:color/transparent"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/bottom_menu" />
activity_profile.xml
<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ProfileActivity">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/lavender"
android:layout_centerInParent="true"
android:textSize="36sp" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="30dp"
android:layout_marginEnd="30dp"
android:layout_marginStart="30dp"
android:layout_marginTop="30dp"
android:background="@drawable/bottom_background"
app:itemIconTint="@drawable/item_selector"
app:itemRippleColor="@android:color/transparent"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/bottom_menu" />
Step 5: MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import com.google.android.material.bottomnavigation.BottomNavigationView;
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigation);
bottomNavigationView.setSelectedItemId(R.id.bottom_home);
bottomNavigationView.setOnItemSelectedListener(item -> {
switch (item.getItemId()) {
startActivity(new Intent(getApplicationContext(), SearchActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
case R.id.bottom_settings:
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
case R.id.bottom_profile:
startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
SearchActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import com.google.android.material.bottomnavigation.BottomNavigationView;
public class SearchActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigation);
bottomNavigationView.setSelectedItemId(R.id.bottom_search);
bottomNavigationView.setOnItemSelectedListener(item -> {
switch (item.getItemId()) {
startActivity(new Intent(getApplicationContext(),MainActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
case R.id.bottom_settings:
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
case R.id.bottom_profile:
startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
SettingsActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import com.google.android.material.bottomnavigation.BottomNavigationView;
public class SettingsActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigation);
bottomNavigationView.setSelectedItemId(R.id.bottom_settings);
bottomNavigationView.setOnItemSelectedListener(item -> {
switch (item.getItemId()) {
startActivity(new Intent(getApplicationContext(),MainActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
startActivity(new Intent(getApplicationContext(), SearchActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
case R.id.bottom_settings:
case R.id.bottom_profile:
startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
ProfileActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import com.google.android.material.bottomnavigation.BottomNavigationView;
public class ProfileActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigation);
bottomNavigationView.setSelectedItemId(R.id.bottom_profile);
bottomNavigationView.setOnItemSelectedListener(item -> {
switch (item.getItemId()) {
startActivity(new Intent(getApplicationContext(),MainActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
startActivity(new Intent(getApplicationContext(), SearchActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
case R.id.bottom_settings:
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
case R.id.bottom_profile:
Output
0 Komentar