SlidingMenu、drawerlayout区别:
SlidingMenu:挤出
drawerlayout:覆盖
ActionBar与Toolbar:
ActionBar是安卓2.0推出的,Toolbar是5.0以后推出的(替代了ActionBar)
功能:
1.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);去掉标题栏;
2.Toolbar.setLogo(),设置logo图片;
3.Toolbar.setTitle().设置标题;
4.Toolbar.setSubTitle()设置子标题;
5.Toolbar.setTitleTextColor(int color);设置标题文字颜色;
6.Toolbar.setSubtitleTextColor();设置子标题文字颜色;
7.setTitleMargin(int start, int top, int end, int bottom);设置标题margin值; 8.onCreateOptionsMenu,getMenuInflater().inflate(R.menu.menu,menu)
设置菜单在给Toolbar设置为actionbar时使用;
9.Toolbar.setOnMenuItemClickListener();Toolbar绑定menu监听;
10.Toolbar.inflateMenu(R.menu.menu)在Toolbar没有替换actionbar时使用;
11.setSupportActionBar(mToolbar);设置toolbar替换actionbar;
12.getLayoutInflater().inflate(R.layout.view_tv,bar);Toolbar添加自定义view
实现步骤:
1.点击清单文件中的theme中的@style/AppTheme
2.将圆的的改为NoActionBar
3.设置Toolbar
drawerlayout:自带的抽屉:
主要写在xml中:
1.必须先写主菜单
2.在左右菜单中必须写: android:layout_gravity=“left或right”
<?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=".DrawerLayoutActivity">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--第一部分:主布局-->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:background="#8BC34A"
android:layout_width="match_parent"
android:layout_height="100dp">
<ImageView
android:src="@mipmap/ic_launcher_round"
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
<LinearLayout
android:background="#9C27B0"
android:layout_width="match_parent"
android:layout_height="match_parent"></LinearLayout>
</LinearLayout>
<!--第二部分:抽屉 android:layout_gravity="left"-->
<LinearLayout
android:layout_gravity="left"
android:background="#2196F3"
android:layout_width="300dp"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:text="关闭抽屉"
android:id="@+id/bt_close"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:text="退出"
android:id="@+id/bt_exit"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<!--第三部分:抽屉-->
<LinearLayout
android:layout_gravity="right"
android:background="#FFEB3B"
android:layout_width="300dp"
android:layout_height="match_parent">
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
写在Activity中:
//关闭抽屉
drawerLayout.closeDrawer(Gravity.LEFT);
//打开抽屉
drawerLayout.openDrawer(Gravity.LEFT);
SlidingMenu:
方法以及属性:
menu.setMode(SlidingMenu.LEFT_RIGHT);//设置侧滑菜单的位置,可选值LEFT , RIGHT , LEFT_RIGHT (两边都有菜单时设置)
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);// 设置触摸屏幕的模式,可选值MARGIN , CONTENT
menu.setShadowWidthRes(R.dimen.shadow_width);//根据dimension资源文件的ID来设置阴影的宽度
menu.setShadowDrawable(R.drawable.shadow);//根据资源文件ID来设置滑动菜单的阴影效果
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度
menu.setFadeDegree(0.35f);//SlidingMenu滑动时渐入渐出效果的值
menu.setBehindScrollScale(1.0f);//设置SlidingMenu与下方视图的移动的速度比,当为1时同时移动,取值0-1
menu.setSecondaryShadowDrawable(R.drawable.shadow);//设置二级菜单的阴影效果
menu.setSecondaryMenu(R.layout.right_menu_frame);//设置右边(二级)侧滑菜单
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//把滑动菜单添加进所有的Activity中,可选值SLIDING_CONTENT , SLIDING_WINDOW
menu.setMenu(R.layout.menu_layout);//设置menu的布局文件
menu.toggle();//动态判断自动关闭或开启SlidingMenu
menu.showMenu();//显示SlidingMenu
menu.showContent();//显示内容
必须设置
1.设置模式:setMode(SlidingMenu.left(左)或者right(右))
2.剩余宽度:setBehindOffset
3.设置菜单的布局:setMenu(view)
4.与Activity绑定:attachToActivity(this,SlidingMenu.SLIDING_CONTENT);
public class MainActivity extends AppCompatActivity {
ImageView imageView;
SlidingMenu slidingMenu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();//加载布局
initMeu();//加载menu
}
//滑动抽屉
private void initView() {
imageView=findViewById(R.id.iv);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//打开抽屉:slideMenu
slidingMenu.showMenu();//显示菜单
}
});
}
public void initMeu(){
//TODO 1:创建SlidingMenu
slidingMenu= new SlidingMenu(this);
//TODO 2:设置属性
slidingMenu.setMode(SlidingMenu.LEFT);//设置模式 从左边拉出抽屉
slidingMenu.setBehindOffset(100);//抽屉拉出来之后剩余的宽度
View view = LayoutInflater.from(this).inflate(R.layout.slide_menu, null);//布局
view.findViewById(R.id.bt_close).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//关闭抽屉
slidingMenu.showContent();//展示主布局内容
}
});
view.findViewById(R.id.bt_exit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
System.exit(0);
}
});
slidingMenu.setMenu(view);//设置菜单的布局
//TODO 3:和指定Activy绑定
slidingMenu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT);
//TODO 4:其他方法
//TOUCHMODE_FULLSCREEN全屏;TOUCHMODE_MARGIN边界;TOUCHMODE_NONE不能滑动
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置触摸方式
// 设置左侧滑动菜单的阴影宽度:slidingMenu.setShadowWidth(300);
// 设置左侧滑动菜单的阴影图片(颜色):setShadowDrawable();
// 设置滑动时的渐变程度:slidingMenu.setFadeDegree(0.5f);范围0.0f-1.0f
// 设置淡入淡出的效果:slidingMenu.setFadeEnabled(true);
slidingMenu.setShadowWidth(300);
slidingMenu.setShadowDrawable(R.mipmap.ic_launcher_round);
slidingMenu.setFadeEnabled(true);
slidingMenu.setFadeDegree(0.0f);//0.0-1.0
}
}