如何在 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;
}
});
}
}
这是我们应用程序的最终输出。
输出: