Android通过menu来实现底部按钮导航(跳转Activity)

演示动画
在这里插入图片描述

一、准备工作

首先可以通过Vector Asset来增加几个图标以备使用。

在这里插入图片描述
这里增加的图标为以下四种,可以通过关键字快速查找
在这里插入图片描述

二、设置移动动画

在这里去设置点击底部导航栏按钮实现跳转的动画

方法:

  1. 新建anim文件夹用于存放动画的xml文件
  2. 新建动画文件slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration = "400"	
        android:fromXDelta="100%p"
        android:toXDelta="0"/>
</set>
<!-- 动画持续时间400毫秒
     <translate>:定义了平移(Translate)动画效果。
   	android:fromXDelta="100%p":起始点在X轴上的偏移量,这里表示从屏幕右侧开始(100%表示屏幕宽度)。
	android:toXDelta="0":结束点在X轴上的偏移量,这里表示在屏幕左侧结束(0表示屏幕宽度)。
	简单来说,这段代码描述了一个从屏幕右侧滑入的动画效果,持续时间为0.4秒。
	你可以将该动画应用于Android应用程序的视图,使其在用户界面中产生平移效果。-->
  1. 新建动画文件slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration = "400"
        android:fromXDelta="0"
        android:toXDelta="-100%p"/>
</set>
  1. 定义新的动画样式

在themes中加入以下代码

<style name="SlideActivityAnimation" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
        <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
    </style>
<!-- 
这段XML代码定义了一个名为"SlideActivityAnimation"的样式(Style)。该样式是基于Android中的"Animation.Activity"样式进行继承。
在Android开发中,样式(Style)用于定义一组视觉和行为属性,以应用于特定的视图或组件。样式可以包含多个属性项(item),每个属性项定义了视图或组件的特定属性。对于这段代码,"SlideActivityAnimation"样式定义了两个属性项:
android:activityOpenEnterAnimation:指定了打开一个新的Activity时的进入动画。它引用了一个名为"slide_in_right"的动画资源(@anim/slide_in_right)。
android:activityOpenExitAnimation:指定了打开一个新的Activity时的退出动画。它引用了一个名为"slide_out_left"的动画资源(@anim/slide_out_left)。
简而言之,这段代码定义了一个样式,用于设置打开新Activity时的进入和退出动画效果。你可以将这个样式应用于你的Activity或其它视图组件上,以实现滑动效果的过渡动画。 -->

三、设置背景

新建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"/>
    <corners
        android:radius="40dp"/>
</shape>

新建选择器item_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_activated="true"
        android:color="@color/white"/>
    <item
        android:state_activated="false"
        android:color="@color/grey"/>
</selector>

四、设置menu

​ 1.新建menu文件夹

​ 2.新建bottom_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/bottom_home"
        android:icon="@drawable/baseline_home_24"
        android:title="Home"/>
    <item
        android:id="@+id/bottom_search"
        android:icon="@drawable/baseline_search_24"
        android:title="Search"/>
    <item
        android:id="@+id/bottom_settings"
        android:icon="@drawable/baseline_settings_24"
        android:title="Settings"/>
    <item
        android:id="@+id/bottom_profile"
        android:icon="@drawable/baseline_person_pin_24"
        android:title="Profile"/>
</menu>

五、设置布局文件

​ 下方代码为mainactivity(Home)示例,还需要新建Profileactivity、SearchActivity、Settingsactivity。自行设置

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Home"
    android:textSize="36sp"
    android:textColor="@color/lavender"
    android:layout_centerInParent="true"
    />
<com.google.android.material.bottomnavigation.BottomNavigationView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/bottomNavigationView"
    android:layout_alignParentBottom="true"
    android:background="@drawable/bottom_background"
    android:layout_marginEnd="20dp"
    android:layout_marginStart="20dp"
    android:layout_marginBottom="20dp"
    android:layout_marginTop="30dp"
    android:elevation="2dp"
    app:menu="@menu/bottom_menu"
    app:itemIconSize="30dp"
    app:itemIconTint="@drawable/item_selector"
    app:itemRippleColor="@android:color/transparent"
    app:labelVisibilityMode="unlabeled"/>
<!--app:menu="@menu/bottom_menu":指定了底部导航栏的菜单文件。@menu/bottom_menu 是一个菜单资源文件,其中定义了底部导航栏的项。
	app:itemIconSize="30dp":设置底部导航栏项的图标大小为 30dp。
	app:itemIconTint="@drawable/item_selector":指定了底部导航栏项图标的颜色。
	@drawable/item_selector 是一个选择器(Selector)资源文件,用于根据不同的状态选择不同的图标颜色。
	app:itemRippleColor="@android:color/transparent":设置底部导航栏项的点击涟漪效果颜色为透明。当点击底部导航栏项时,将没有涟漪效果。
	app:labelVisibilityMode="unlabeled":设置底部导航栏项的标签可见性模式为 "unlabeled"。这意味着底部导航栏项的标签将不可见,只显示图标。
	这些属性可以在布局文件中的底部导航栏视图中使用,以定制底部导航栏的外观和行为。你可以根据需要修改这些属性的值来满足你的界面设计需求。-->

六、设置逻辑代码

mainactivity中的点击跳转事件,Profileactivity、SearchActivity、Settingsactivity。自行设置。(不知道为啥现在用switch会报错,所以就用了if)

BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView);
        bottomNavigationView.setSelectedItemId(R.id.bottom_home);
        bottomNavigationView.setOnItemSelectedListener(item -> {
            if(item.getItemId()==R.id.bottom_home){
                return true;
            } else if (item.getItemId()==R.id.bottom_search) {
                startActivity(new Intent(getApplicationContext(),SearchActivity.class));
                overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);
                finish();
            } else if (item.getItemId()==R.id.bottom_settings) {
                startActivity(new Intent(getApplicationContext(), SettingActivity.class));
                overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);
                finish();
            } else if (item.getItemId() ==R.id.bottom_profile) {
                startActivity(new Intent(getApplicationContext(),ProfileActivity.class));
                overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);
                finish();
            }
  • 31
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android Studio中实现底部导航跳转,您可以使用BottomNavigationView和Fragment来实现。下面是一些步骤: 1. 首先,在您的布局文件中添加BottomNavigationView组件。例如,您可以在主布局文件中添加以下代码: ```xml <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" app:menu="@menu/bottom_navigation_menu" /> ``` 2. 创建一个menu目录,并在其中创建一个bottom_navigation_menu.xml文件。在该文件中,您可以定义底部导航栏的每个选项。例如,您可以使用以下代码创建两个选项: ```xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_home" android:title="Home" /> <item android:id="@+id/navigation_profile" android:title="Profile" /> </menu> ``` 3. 在您的Activity或Fragment中,获取对BottomNavigationView的引用,并设置一个OnNavigationItemSelectedListener来处理导航项的点击事件。在点击事件中,您可以使用FragmentTransaction来替换您的内容区域中的Fragment。例如,下面是一个示例代码: ```java BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation); bottomNavigationView.setOnNavigationItemSelectedListener(item -> { Fragment selectedFragment = null; switch (item.getItemId()) { case R.id.navigation_home: selectedFragment = new HomeFragment(); break; case R.id.navigation_profile: selectedFragment = new ProfileFragment(); break; } getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment).commit(); return true; }); ``` 在上述代码中,您需要根据自己的需求创建HomeFragment和ProfileFragment。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值