WanAndroid
1. overridePendingTransition
overridePendingTransition(int enterAnim, int exitAnim)
Activity的切换动画指的是从一个Activity跳转到另外一个Activity时的动画。
enterAnim: 新的Activity进入时的动画
exitAnim: 旧的Activity出去时的动画
调用时机
onCreate之前调用
@Override
protected void onCreate(Bundle savedInstanceState) {
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);//进入的动画
super.onCreate(savedInstanceState);
//overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);//此处设置无效
}
finish()之后调用
@Override
public void finish() {
//overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);// 次数调用无效
super.finish();
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);//结束的动画
}
2. Material Design 布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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=".modules.main.ui.activity.MainActivity">
<!--主视图-->
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/toolbar" />
<FrameLayout
android:id="@+id/fragment_group"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/main_floating_action_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginEnd="16dp"
android:layout_marginBottom="60dp"
android:src="@drawable/ic_arrow_upward_white_24dp"
app:backgroundTint="@color/floating_button" />
<!--底部导航-->
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/bottom_nav_bg"
app:elevation="16dp"
app:itemIconTint="@drawable/nav_item_color_selector"
app:itemTextColor="@drawable/nav_item_color_selector"
app:labelVisibilityMode="labeled"
app:menu="@menu/bottom_navigation">
</android.support.design.widget.BottomNavigationView>
</android.support.design.widget.CoordinatorLayout>
<!--侧滑界面-->
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/view_bg"
app:headerLayout="@layout/nav_header"
app:insetForeground="@android:color/transparent"
app:itemIconTint="@color/nav_item_color_ic"
app:itemTextColor="@color/nav_item_color_tv"
app:menu="@menu/nav_menu">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
DrawerLayout
<android.support.v4.widget.DrawerLayout
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" />
DrawerLayout(抽屉布局),只可以有两个子布局,第一个布局为主页面的布局,第二个布局侧滑的布局。注意布局不一定是NavigationView
NavigationView
是侧滑的布局控件。
如下图所示,这几个较为重要的属性
20180917114155675.png
@layout/nav_header布局
这个布局就是一个普通的布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="180dp"
android:background="@drawable/navigation_bg"
android:padding="10dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:fitsSystemWindows="true">
<ImageView
android:id="@+id/icon_image"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginTop="24dp"
android:src="@drawable/ic_author_round"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/nav_header_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login_in"
android:textColor="@color/nav_header_tv"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/icon_image" />
</android.support.constraint.ConstraintLayout>
@menu/nav_menu布局
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<item
android:id="@+id/nav_item_my_collect"
android:icon="@drawable/icon_like"
android:title="@string/my_collect" />
<item
android:id="@+id/nav_item_todo"
android:icon="@drawable/ic_todo_default"
android:title="@string/nav_todo" />
<item
android:id="@+id/nav_item_night_mode"
android:icon="@drawable/ic_night"
android:title="@string/nav_night_mode"/>
<item
android:id="@+id/nav_item_setting"
android:icon="@drawable/ic_setting"
android:title="@string/setting"/>
<item
android:id="@+id/nav_item_about_us"
android:icon="@drawable/ic_about"
android:title="@string/about_us"/>
<item
android:id="@+id/nav_item_logout"
android:icon="@drawable/ic_logout"
android:title="@string/logout"/>
</group>
</menu>
app:itemIconTint
: 图标的颜色
app:itemTextColor
: 文字的颜色
app:insetForeground
: 打开侧边栏的时候,顶部的状态栏透明
网友评论