Toolbar和DrawerLayout+SlideMenu 2种方式实现抽屉侧滑

效果图

一.ToolBar常用的方法
二.DrawerLayout常用的方法
三.ToolBar和DrawerLayout绑定
四.ToolBar和DrawerLayout代码
五.SlideMenu实现抽屉
1.SlideMenu的属性:
2.代码实现:
效果图
1.Toolbar和DrawerLayout实现
Toolbar:标题栏
DrawerLayout:可以实现侧滑
2.SlideMenu实现 第三方 需要导入moudle(slidemenu)

一.ToolBar常用的方法
Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件,以此来取代之前的Actionbar 。我们需要在工程中引入appcompat-v7的兼容包以便向下兼容, 使用android.support.v7.widget.Toolbar进行开发。在设计 Toolbar 的时候,Google也留给了开发者很多可定制修改的余地,这些可定制修改的属性在API文档中都有详细介绍,如:

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

二.DrawerLayout常用的方法
DrawerLayout.isDrawerOpen(Gravity.LEFT)是否开启;
DrawerLayout.openDrawer(Gravity.LEFT);开启抽屉
DrawerLayout.closeDrawer(Gravity.RIGHT);关闭抽屉

三.ToolBar和DrawerLayout绑定

private void bindToolBar() {//设置开关ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name);//开启同步toggle.syncState();//设置给drawerLayoutdrawerLayout.addDrawerListener(toggle);
}

四.ToolBar和DrawerLayout代码
(0)先去掉自带的ActionBar,在清单文件中

(1)布局文件代码:activity_main.xml

<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="com.example.day3.MainActivity"android:orientation="vertical"><android.support.v7.widget.Toolbarandroid:background="#bdbebf"android:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="50dp"></android.support.v7.widget.Toolbar><android.support.v4.widget.DrawerLayoutandroid:id="@+id/drawer_layout"android:layout_width="match_parent"android:layout_height="match_parent"><!--主界面,必须先写--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"><TextViewandroid:text="我是侧拉主界面"android:textSize="50sp"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><!--侧滑部分  android:layout_gravity="left" 从左侧滑出--><LinearLayoutandroid:layout_gravity="left"android:layout_width="200dp"android:layout_height="match_parent"android:gravity="center"><ListViewandroid:id="@+id/lv"android:background="#b49797"android:layout_width="wrap_content"android:layout_height="match_parent"></ListView></LinearLayout></android.support.v4.widget.DrawerLayout></LinearLayout>

(2)java 代码:MainActivity.java

public class MainActivity extends AppCompatActivity {Toolbar toolbar;DrawerLayout drawerLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);drawerLayout=findViewById(R.id.drawer_layout);initToolBar();//初始化barbindToolBar();//绑定bar}private void initToolBar() {toolbar = findViewById(R.id.toolbar);//设置导航图标.toolbar.setNavigationIcon(R.mipmap.ic_launcher);//设置toolbar的大标题toolbar.setTitle("天气");toolbar.setLogo(R.mipmap.ic_launcher_round);//设置toolbar的小标题.toolbar.setSubtitle("Android");}//toolbar和drawerLayout绑定实现切换效果private void bindToolBar() {//设置开关ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name);//开启同步toggle.syncState();//设置给drawerLayoutdrawerLayout.addDrawerListener(toggle);}
}

五.SlideMenu实现抽屉
1.SlideMenu的属性:
设置模式: setMode(SlidingMenu.LEFT);
设置触摸屏幕的模式:setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
//TOUCHMODE_FULLSCREEN全屏;TOUCHMODE_MARGIN边界;TOUCHMODE_NONE不能滑动
设置左侧菜单滑动显示的内容:slidingMenu.setMenu(R.layout.slide_menu);
设置左侧滑动菜单的阴影宽度:slidingMenu.setShadowWidth(300);
设置滑动时的渐变程度:slidingMenu.setFadeDegree(0.5f);范围0.0f-1.0f
设置淡入淡出的效果:slidingMenu.setFadeEnabled(true);
设置左侧滑动菜单的阴影图片(颜色):setShadowDrawable();
设置滑出时主页面显示的剩余宽度:slidingMenu.setBehindOffset(200);

注意:
(1)attachToActivity():将slidemenu和Activity绑定
(2)setMenu():设置菜单显示的内容
(3) Button bt = slidingMenu.getMenu().findViewById(R.id.bt1);为侧滑出来的菜单设置事件监听
2.代码实现:
(1)导入第三方moudle:slidemenu

(2)activity代码中是实现

public class SlidingMenuActivity extends AppCompatActivity {private SlidingMenu slidingMenu;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sliding_menu);initmenu();}private void initmenu() {//TODO 1:创建菜单对象slidingMenu=new SlidingMenu(this);//TODO 2:设置属性//SlidingMenu.RIGHT   SlidingMenu.LEFTslidingMenu.setMode(SlidingMenu.LEFT);//设置从哪边出来//TOUCHMODE_FULLSCREEN全屏;TOUCHMODE_MARGIN边界;TOUCHMODE_NONE不能滑动slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//在屏幕的任何位置左滑都可以显示出来slidingMenu.setBehindOffset(200);//单位是像素px 侧滑菜单滑出后,界面剩余的宽度。slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//绑定到指定的Context//TODO 3:设置布局并且相应布局上面的按钮View view = LayoutInflater.from(this).inflate(R.layout.slide, null);
Button button=view.findViewById(R.id.bt_close);
button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//关闭抽屉// slidingMenu.showMenu();//显示抽屉slidingMenu.showContent();//显示主页面}
});
slidingMenu.setMenu(view);//设置布局        //TODO 4:设置监听listener,监听侧滑菜单的打开和关闭.slidingMenu.setOnOpenedListener(new SlidingMenu.OnOpenedListener() {@Overridepublic void onOpened() {Toast.makeText(SlidingMenuActivity.this, "打开了", Toast.LENGTH_SHORT).show();}});slidingMenu.setOnClosedListener(new SlidingMenu.OnClosedListener() {@Overridepublic void onClosed() {Toast.makeText(SlidingMenuActivity.this, "侧滑菜单关闭", Toast.LENGTH_SHORT).show();}});}
}

张萌韩墨羽——Toolbar和DrawerLayout+SlideMenu 2种方式实现抽屉侧滑相关推荐

  1. android 抽屉侧滑冲突,利用DrawerLayout和触摸事件分发实现抽屉侧滑效果

    本文实例为大家分享了DrawerLayout和触摸事件分发实现抽屉侧滑效果的具体代码,供大家参考,具体内容如下 效果展示 还是看代码实在,直接上菜了. 1.MainActivity的代码: publi ...

  2. 张萌韩墨羽——打包升级兼容适配

    打包升级兼容适配 meta-data标签读取以及多渠道打包原理 //解决报错flavorDimensions "versionCode"productFlavors {Tencen ...

  3. 张萌韩墨羽——Ument_Share集成

    Ument_Share集成 U-Share集成 适用范围 该文档适用于Android组件化分享SDK6.9.0及以上版本. 更新说明 如果您想进行SDK升级操作,请根据如下情况选择合适的升级方式 如果 ...

  4. 张萌韩墨羽——android摄像头推流

    android摄像头推流 功能概述 摄像头推流,是指采集手机摄像头的画面以及麦克风的声音,进行编码之后再推送到直播云平台上.腾讯云 LiteAVSDK 通过 TXLivePusher 接口提供摄像头推 ...

  5. 张萌韩墨羽——Android蓝牙

    蓝牙 是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据交换 关于蓝牙的权限主要涉及到下面三个: BLUETOOTH:允许配对的设备进行连接 BLUETOOTH_ADMIN:允 ...

  6. 张萌韩墨羽——CommonTabLayout使用

    CommonTabLayout使用 音乐 package com.example.banner_use.fragment; import android.graphics.Canvas; import ...

  7. 张萌韩墨羽——BroadCast 广播

    BroadCast 广播 广播作用以及机制 其实BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机 ...

  8. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果

    在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...

  9. MaterialDesign学习篇(二),Toolbar、DrawerLayout的使用

    什么是Toolbar Toolbar是应用的内容的标准工具栏,可以说是Actionbar的升级版,两者不是独立关系,要使用Toolbar还是得跟ActionBar扯上关系的.相比Actionbar,T ...

  10. Android【Toolbar、DrawerLayout 滑动菜单、 FloatingActionButton 悬浮按钮、Snackbar可交互提示、 Coordinator】

    目录 1.Toolbar 1.1基本框架 1.2常用属性 1.3添加工具栏点击事件 1.4 溢出菜单 1.5 溢出菜单的点击事件 2 DrawerLayout 滑动菜单 2.1 基本框架 2.2 Na ...

最新文章

  1. Eclipse SVN插件冲突导致不能使用解决办法
  2. cstring 不明确_股价不可预测明确时间点的涨跌
  3. Mybatis下collections使用pageHelper进行分页
  4. 求解集合A与B的差集
  5. 95-38-040-Buffer-AbstractReferenceCountedByteBuf引用计数
  6. Kaggle 数据清洗挑战 Day 1 - 手把手教你五步处理缺失值
  7. 80%的前端程序员都遇到的问题,你中招了吗?
  8. 实习成长之路:MySQL二 : 一条SQL更新语句是如何执行的?
  9. dataframe 如何选中某列的一行_Spark中的RDD、DataFrame和DataSet讲解
  10. 软件测试工程师简历项目经验怎么写?--1000个已成功入职的软件测试工程师简历范文模板(含真实简历)
  11. python3自动化软件发布系统pdf_Python 3自动化软件发布系统 -Django 2实战
  12. PHP设置header出现警告headers already sent by (output started at......
  13. 使用PIXI制作简单canvas逐帧动画的心得
  14. 服务器容灾性能,容灾和性能
  15. gromacs 安装_gromacs5.x 在linux安装
  16. word打开老是配置进度_打开word2007时总是出现配置进度,怎么解决?
  17. 京东有多少钱可以重来?
  18. ORACLE数据库日期更新到时分秒格式
  19. hadoop-2.6下载地址
  20. xmm1是什么器件_电路基础9第九章.ppt

热门文章

  1. 1、vinc = vict 胜、征服
  2. Python爬虫——多线程爬取阳光问政
  3. 阿里巴巴使命、愿景、价值观、绩效管理中的六大价值观、TAE 与 TOP、聚石塔、阿里云的差异化服务
  4. 个人博客管理系统详解
  5. vue多级菜单的实现
  6. python笔记:7.2.2.2 一元多因素方差分析_交互效应图(购房面积影响因素交互效应)
  7. 数据分析-淘宝用户行为分析
  8. Python E化-爬虫VOA-下载MP3
  9. Gossip费氏数列
  10. layui 省市区 三级联动 单选