ActionBar、DrawLayout和SlidingMenu
介绍
ToolBar:标题栏
DrawerLayout:可以实现侧滑
SlideMenu:第三方依赖
ActionBar是安卓2.0,ToolBar是安卓5.0,代替ActionBar.
去掉ActionBar:清单文件中->theme
DrawerLayout:QQ音乐的抽屉,覆盖
SlidingMenu:QQ的抽屉,挤过去。
SlideMenu方法:
setMode(); 设置模式,从左边拉出
setBehindOffest() 拉出啦之后剩余的宽度
setMenu(); 填充自定义抽屉布局
setTouchModeAbove(); 滑动位置
setShadowWidth(); 左侧滑动菜单的阴影宽度
attachToActivity(); //绑定到指定Activity
showContent();//显示主页面
DrawerLayout方法
必须先写主布局
侧拉布局设置属性:
android:layout_gravity="right"
openDrawer(Gravity.LEFT);开启抽屉
closeDrawer(Gravity.RIGHT);关闭抽屉
代码
去掉自带ActionBar
DrawerLayout
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:layout_height="match_parent"
tools:context=".DrawerLayoutActivity">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#4CAF50">
<ImageView
android:id="@+id/pic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</androidx.appcompat.widget.Toolbar>
<androidx.drawerlayout.widget.DrawerLayout
android:id="@+id/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--主布局 必须先写-->
<LinearLayout
android:id="@+id/one"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#3F51B5"
android:orientation="vertical">
</LinearLayout>
<!--左抽屉-->
<LinearLayout
android:layout_width="300dp"
android:background="#FF5722"
android:layout_height="match_parent"
android:layout_gravity="left">
<Button
android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击关闭"/>
<Button
android:id="@+id/finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击退出"/>
</LinearLayout>
<!--右抽屉-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#9C27B0"
android:layout_gravity="right">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="右侧"/>
</LinearLayout>
</androidx.drawerlayout.widget.DrawerLayout>
</LinearLayout>
MainActivity:
package com.example.day9;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
public class DrawerLayoutActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer_layout);
drawerLayout=findViewById(R.id.drawerlayout);
//点击关闭抽屉
findViewById(R.id.close).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
drawerLayout.closeDrawer(Gravity.LEFT); //关闭抽屉
// drawerLayout.openDrawer(Gravity.RIGHT); //开启抽屉
}
});
//点击退出
findViewById(R.id.finish).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
System.exit(0);
}
});
//点击打开抽屉
findViewById(R.id.pic).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
drawerLayout.openDrawer(Gravity.LEFT);
}
});
}
}
Slide
public class MainActivity extends AppCompatActivity {
SlidingMenu slidingMenu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
slidingMenu = new SlidingMenu(this);
//设置属性
slidingMenu.setMode(SlidingMenu.LEFT); //从左侧滑出
slidingMenu.setBehindOffset(100); //侧滑菜单出来后,剩余宽度
View view = LayoutInflater.from(this).inflate(R.layout.layout_left, null);
slidingMenu.setMenu(view); //添加侧滑菜单布局
//TOUCHMODE_FULLSCREEN - 全屏;TOUCHMODE_MARGIN - 边界 ;TOUCHMODE_NONE - 不能滑动
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
slidingMenu.setShadowWidth(300);//设置左侧滑动菜单的阴影宽度
slidingMenu.setFadeDegree(0.5f); //滑动时的渐变程度 0.0-1.0
slidingMenu.setFadeEnabled(true); //淡入淡出的效果
slidingMenu.setShadowDrawable(R.mipmap.ic_launcher_round); //左侧滑动菜单的阴影图片
slidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT); //绑定到指定Activity
//监听抽屉按钮
Button button = view.findViewById(R.id.close);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
System.exit(0);
}
});
}
public void click(View view) {
slidingMenu.showMenu();
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".MainActivity">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#397FFF">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/one"
android:onClick="click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_toRightOf="@id/one"
android:layout_toLeftOf="@id/two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="消息"
android:layout_centerInParent="true"
android:gravity="center"
android:textSize="20sp"
android:textColor="#ffffff"/>
<ImageView
android:id="@+id/two"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</RelativeLayout>
</androidx.appcompat.widget.Toolbar>
</LinearLayout>