演示动画
一、准备工作
首先可以通过Vector Asset来增加几个图标以备使用。
这里增加的图标为以下四种,可以通过关键字快速查找
二、设置移动动画
在这里去设置点击底部导航栏按钮实现跳转的动画
方法:
- 新建anim文件夹用于存放动画的xml文件
- 新建动画文件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应用程序的视图,使其在用户界面中产生平移效果。-->
- 新建动画文件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>
- 定义新的动画样式
在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();
}