📜  如何在 Android 中使用 Activity 实现底部导航?

📅  最后修改于: 2022-05-13 01:54:37.467000             🧑  作者: Mango

如何在 Android 中使用 Activity 实现底部导航?

我们都遇到过具有底部导航栏的应用程序。一些流行的示例包括 Instagram、WhatsApp 等。下面是示例底部导航栏的预览:

您一定看过借助 Fragment 实现的底部导航。但是,在这里我们将借助 Android Studio 中的活动来实现底部导航。

我们要在这个应用程序中构建什么?

这是我们将在此应用程序中构建的示例视频。请注意,我们将使用Java语言来制作此应用程序。

分步实施

第 1 步:创建一个新项目

  • 打开一个新项目。
  • 我们将使用Java语言开发 Empty Activity。保持所有其他选项不变。
  • 在您方便的时候命名应用程序。
  • 将有两个名为 activity_main.xml 和 MainActivity 的默认文件。Java

如果您不知道如何在 Android Studio 中创建新项目,可以参考如何在 Android Studio 中创建/启动新项目?

步骤 2. 添加所需的依赖项

导航到 Gradle Scripts > gradle.scripts(module) 并在其中添加以下依赖项。

implementation 'com.google.android.material:material:1.0.0'

步骤 3. 处理 XML 文件

导航到 app > res > drawable > 右键单击 > new > drawable 资源文件并将其命名为“选择器”。在selector.xml文件中使用以下代码 -

XML


  
    
    
  


XML


  
    
    
    
    
  


XML


  
    
  
    
  


XML


    
    
  
    
  


XML


  
    
  
    
  


Java
package com.example.bottomnavigationwithactivities;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
  
import com.google.android.material.bottomnavigation.BottomNavigationView;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // Initialize and assign variable
        BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation);
  
        // Set Home selected
        bottomNavigationView.setSelectedItemId(R.id.home);
  
        // Perform item selected listener
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  
                switch(item.getItemId())
                {
                    case R.id.dashboard:
                        startActivity(new Intent(getApplicationContext(),DashBoard.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.home:
                        return true;
                    case R.id.about:
                        startActivity(new Intent(getApplicationContext(),About.class));
                        overridePendingTransition(0,0);
                        return true;
                }
                return false;
            }
        });
  
    }
}


Java
package com.example.bottomnavigationwithactivities;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
  
import com.google.android.material.bottomnavigation.BottomNavigationView;
  
public class DashBoard extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dash_board);
  
        // Initialize and assign variable
        BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation);
  
        // Set Home selected
        bottomNavigationView.setSelectedItemId(R.id.dashboard);
  
        // Perform item selected listener
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  
                switch(item.getItemId())
                {
                    case R.id.home:
                        startActivity(new Intent(getApplicationContext(),MainActivity.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.dashboard:
                        return true;
                    case R.id.about:
                        startActivity(new Intent(getApplicationContext(),About.class));
                        overridePendingTransition(0,0);
                        return true;
                }
                return false;
            }
        });
    }
}


Java
package com.example.bottomnavigationwithactivities;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
  
import com.google.android.material.bottomnavigation.BottomNavigationView;
  
public class About extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_about);
         
        // Initialize and assign variable
        BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation);
  
        // Set Home selected
        bottomNavigationView.setSelectedItemId(R.id.about);
  
        // Perform item selected listener
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  
                switch(item.getItemId())
                {
                    case R.id.dashboard:
                        startActivity(new Intent(getApplicationContext(),DashBoard.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.about:
                        return true;
                    case R.id.home:
                        startActivity(new Intent(getApplicationContext(),MainActivity.class));
                        overridePendingTransition(0,0);
                        return true;
                }
                return false;
            }
        });
    }
}


导航到应用>右键单击>新建>菜单类型的android资源文件并将其命名为“menu_navigation”。在menu_navigation.xml文件中使用以下代码 -

XML



  
    
    
    
    
  

导航到 app > res > layout > activity_main.xml 并将以下代码添加到该文件。下面是activity_main.xml文件的代码。

XML



  
    
  
    
  

导航到应用 > 新建 > 右键单击 > 新建 > 活动 > 空活动。将其命名为“仪表板”并在activity_dashboard.xml文件中使用以下代码 -

XML



    
    
  
    
  

导航到应用 > 新建 > 右键单击 > 新建 > 活动 > 空活动。将其命名为“关于”并在activity_about.xml文件中使用以下代码

XML



  
    
  
    
  

第 4 步:处理Java文件

导航到MainActivity。 Java文件并在其中使用以下代码。代码中添加了注释以便更好地理解。

Java

package com.example.bottomnavigationwithactivities;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
  
import com.google.android.material.bottomnavigation.BottomNavigationView;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // Initialize and assign variable
        BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation);
  
        // Set Home selected
        bottomNavigationView.setSelectedItemId(R.id.home);
  
        // Perform item selected listener
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  
                switch(item.getItemId())
                {
                    case R.id.dashboard:
                        startActivity(new Intent(getApplicationContext(),DashBoard.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.home:
                        return true;
                    case R.id.about:
                        startActivity(new Intent(getApplicationContext(),About.class));
                        overridePendingTransition(0,0);
                        return true;
                }
                return false;
            }
        });
  
    }
}

导航到仪表板。 Java文件并在其中使用以下代码。代码中添加了注释以便更好地理解。

Java

package com.example.bottomnavigationwithactivities;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
  
import com.google.android.material.bottomnavigation.BottomNavigationView;
  
public class DashBoard extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dash_board);
  
        // Initialize and assign variable
        BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation);
  
        // Set Home selected
        bottomNavigationView.setSelectedItemId(R.id.dashboard);
  
        // Perform item selected listener
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  
                switch(item.getItemId())
                {
                    case R.id.home:
                        startActivity(new Intent(getApplicationContext(),MainActivity.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.dashboard:
                        return true;
                    case R.id.about:
                        startActivity(new Intent(getApplicationContext(),About.class));
                        overridePendingTransition(0,0);
                        return true;
                }
                return false;
            }
        });
    }
}

导航到关于。 Java文件并在其中使用以下代码。代码中添加了注释以便更好地理解。

Java

package com.example.bottomnavigationwithactivities;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
  
import com.google.android.material.bottomnavigation.BottomNavigationView;
  
public class About extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_about);
         
        // Initialize and assign variable
        BottomNavigationView bottomNavigationView=findViewById(R.id.bottom_navigation);
  
        // Set Home selected
        bottomNavigationView.setSelectedItemId(R.id.about);
  
        // Perform item selected listener
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  
                switch(item.getItemId())
                {
                    case R.id.dashboard:
                        startActivity(new Intent(getApplicationContext(),DashBoard.class));
                        overridePendingTransition(0,0);
                        return true;
                    case R.id.about:
                        return true;
                    case R.id.home:
                        startActivity(new Intent(getApplicationContext(),MainActivity.class));
                        overridePendingTransition(0,0);
                        return true;
                }
                return false;
            }
        });
    }
}

这是我们应用程序的最终输出。

输出: