在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒。 后来,Android自己推出了一个可以实现策划导航的组件DrawerLayout,也相当的不错,更加简洁,好使。当前,很多的APP都会采用侧滑导航的设计,不仅体验上很好,而且这种为APP节省了很多“空间”的交互,给人的感觉更加舒服。

Android已经越来越追求用户体验,在APP功能越来越成熟稳定的情境下,把用户体验做到极致,是开发者应有的追求!

除了DrawerLayout的设计外,Android还推出了Toolbar,用于取代传统的ActionBar,这是一种符合Material Design设计规范的组件,越来越被更多的开发者接受,并应于自己的项目中,如最新的“知乎”客户端,就采用该种设计,体验的感觉非常好。

关于DrawerLayout和Toolbar分别是如何使用,原理又是什么,我不在此处过多介绍,不会的或者有兴趣的人可以参考几篇不错的博文:

1. ANDROID – TOOLBAR STEP BY STEP

2. android官方侧滑菜单DrawerLayout详解

我要介绍的,是如何使用Toolbar和DrawerLayout快速侧滑导航,先看下接下来要实现的效果:

1. 首先,新建项目,并在buile.gradle中添加appcompat-v7支持。

dependencies {compile 'com.android.support:appcompat-v7:23.1.1'
}

2. 创建ToolBar标题栏布局layout_tool_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="?attr/colorPrimary"android:minHeight="?attr/actionBarSize"></android.support.v7.widget.Toolbar>

3. 创建DrawerLayout侧滑页面layout_custom_drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/drawerLayout"android:layout_width="match_parent"android:layout_height="match_parent"><!--主布局--><RelativeLayoutandroid:layout_width="match_parent"android:background="#00c7c0"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="主页面"android:textSize="40sp"android:layout_centerInParent="true"/></RelativeLayout><!--侧滑菜单--><LinearLayoutandroid:id="@+id/drawerContent"android:layout_width="200dp"android:layout_height="match_parent"android:background="#F5F5F5"android:orientation="vertical"android:layout_gravity="start"><TextViewandroid:id="@+id/text1"android:layout_width="match_parent"android:layout_height="50dp"android:text="我的收藏"android:gravity="center"android:textSize="16sp"/><TextViewandroid:id="@+id/text2"android:layout_width="match_parent"android:layout_marginTop="20dp"android:layout_height="50dp"android:text="我的关注"android:gravity="center"android:textSize="16sp"/></LinearLayout></android.support.v4.widget.DrawerLayout>

4. 在主页面中,引用上面的ToolBar布局及DrawerLayout布局activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><!--Toolbar--><include layout="@layout/layout_tool_bar" /><!--DrawerLayout--><include layout="@layout/layout_custom_drawer" />
</LinearLayout>

5. 编写Activity代码,控制ToolBar及DrawerLayout相应的逻辑

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Toolbar toolbar;private DrawerLayout drawerLayout;private LinearLayout drawerContent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);toolbar = (Toolbar) findViewById(R.id.toolbar);drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);drawerContent = (LinearLayout) findViewById(R.id.drawerContent);// 设置Toolbartoolbar.setTitle("掌阅宝");toolbar.setTitleTextColor(Color.parseColor("#ffffff"));// 设置toolbar支持actionbarsetSupportActionBar(toolbar);// 使用ActionBarDrawerToggle,配合DrawerLayout和ActionBar,以实现推荐的抽屉功能。ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close);mDrawerToggle.syncState();drawerLayout.setDrawerListener(mDrawerToggle);TextView text1 = (TextView) findViewById(R.id.text1);TextView text2 = (TextView) findViewById(R.id.text2);text1.setOnClickListener(this);text2.setOnClickListener(this);}@Overridepublic void onClick(View v) {// 关闭DrawerLayoutdrawerLayout.closeDrawer(drawerContent);switch (v.getId()) {case R.id.text1:Toast.makeText(MainActivity.this, "我的收藏", Toast.LENGTH_SHORT).show();break;case R.id.text2:Toast.makeText(MainActivity.this, "我的关注", Toast.LENGTH_SHORT).show();break;}}
}

代码中注释已经够简单明了,关于ActionBarDrawerToggle是什么,可参考《ActionBarDrawerToggle的简要介绍》。

6. 配置系统的theme

<resources><style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><!--返回键样式--><item name="drawerArrowStyle">@style/AppTheme.DrawerArrowToggle</item><item name="windowActionBar">false</item><item name="android:windowNoTitle">true</item><!-- 使用 API Level 22编译的話,要拿掉前綴字 --><item name="windowNoTitle">true</item></style><!-- Base application theme. --><style name="AppTheme" parent="AppTheme.Base"></style><style name="AppTheme.DrawerArrowToggle" parent="Base.Widget.AppCompat.DrawerArrowToggle"><item name="color">@android:color/white</item></style></resources>

通过以上六步,你就可以使用Toolbar+DrawerLayout来快速实现类似“知乎APP”侧滑导航效果了。

源码下载地址:https://github.com/zuiwuyuan/DrawerLayout_ToolBar

如此这般,就OK啦!欢迎互相学习!
如有疑问,欢迎留言探讨。

如此这般,就OK啦!欢迎互相学习!
如有疑问,欢迎留言探讨。

Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果相关推荐

  1. Android——使用Toolbar + DrawerLayout快速实现高大上菜单侧滑(转)

    今天就来使用官方支持库来快速实现这类效果,需要使用到Toolbar和DrawerLayout,详细步骤如下:(如果你还不知道这两个Widget,先自己Google吧~) 1.首先需要添加appcomp ...

  2. github android 开源,Android github开源项目学习之—仿知乎APP(一)

    前言 (本人菜鸟,如有错误请指正) 一直奇怪网上说的Recycler让自己定制点击事件是怎么回事,看了这个大牛的仿知乎 Android客户端源码才知道,他是这样做的-- 写了一个RecyclerVie ...

  3. android 如何学习开源项目,Android github开源项目学习之—仿知乎APP(一)

    前言 (本人菜鸟,如有错误请指正) 一直奇怪网上说的Recycler让自己定制点击事件是怎么回事,看了这个大牛的仿知乎 Android客户端源码才知道,他是这样做的-- 写了一个RecyclerVie ...

  4. 杀了一个程序员祭天换来今天的正常推送:仿知乎APP源码分享

    原创 2017-09-19 菜鸟君 菜鸟窝官网 ▲点击上方蓝色字体关注后免费领取"200套开源项目" 菜鸟窝技术文章编辑招募中,可免费学习优秀实战课程,有兴趣快加菜鸟君微信:kee ...

  5. Android studio实现底部导航,Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果...

    BottomBar BottomBar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退. ...

  6. 使用Toolbar + DrawerLayout快速实现高大上菜单侧滑

    如果你有在关注一些遵循最新的Material Design设计规范的应用的话(如果没有,假设你有!),也许会发现有很多使用了看起来很舒服.很高大上的侧滑菜单动画效果,示例如下(via 参考2): 今天 ...

  7. 仿知乎app登录界面(Material Design设计框架拿来就用的TexnInputLayout)

    在我脑子里还没有Material Design这种概念,就我个人而言,PC端应用扁平化设计必须成为首选,手当其冲的两款即时通讯旺旺和QQ早就完成UI扁平化的更新,然而客户端扁平化的设计本身就存在天生的 ...

  8. node php知乎,基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果

    最近基于jQuery和Bootstrap框架实现了一个仿知乎动态列表的前端效果,基本实现了和知乎动态列表相同的效果.如下: 1.基本列表项 2.列表项全文展开.折叠(图中为展开第一项) 3.评论项展开 ...

  9. android仿知乎工作内容,Android仿知乎日报开屏页效果

    先看看知乎日报开屏页的效果,非常漂亮的开屏效果 ezgif.com-resize (2).gif 然后我来一个 ezgif.com-resize (1).gif 也不错~感觉可以以假乱真了~ 很简单, ...

最新文章

  1. sdut-1153 C语言实验——求两个整数之中较大者
  2. 高速掌握Lua 5.3 —— 字符串库 (2)
  3. java模拟单链表环形链表解决约瑟夫问题
  4. MySQL创建数据库与创建用户以及授权
  5. (转)数据库查询速度慢的原因
  6. metronic-Website Template
  7. kafka partition分配_logstash消费kafka数据,partition分配不均衡
  8. JavaScript冒泡排序算法(1)
  9. cxf-2.4.1 webservice客户端调用代码
  10. XML数据库与db4o的简要对比
  11. GIS+BIM专题二:SuperMap对接DGN数据流程
  12. JavaScript制作简易的《飞机大战》
  13. Vue + Spring Boot 项目实战:人事管理系统——完结撒花
  14. 凹函数和凸函数,Concave Function和Convex Function
  15. 眼部识别和指纹识别,你会选择谁?
  16. OpenStack——开放栈(源自NASA的开源云管理软件)
  17. GitHub无法访问下载
  18. windows7快捷键-好玩的
  19. Google Earth Engine(GEE)—— GEDI L2A Raster数据中轨道数量orbit_number暂时无法获取
  20. 关于.Net与J2EE的比较,到底用微软平台还是Java平台的问题

热门文章

  1. java门户网站项目代码_基于jsp的企业门户网站-JavaEE实现企业门户网站 - java项目源码...
  2. mysql无法插入行_在mysql中数据才插入20多行就报错,求救啊!!!
  3. mysql5.6 icp mrr bak_【mysql】关于ICP、MRR、BKA等特性
  4. 为什么整数集合使用Z来表示?
  5. 双关节机械臂+机械爪运动控制
  6. 2020年春季学期信号与系统课程作业参考答案-第十四次作业
  7. 东南大学校内智能车竞赛
  8. linux 文件操作函数,Linux下的文件操作函数及creat用法
  9. windows sftp工具_将SSH服务器映射成Windows网络驱动器
  10. mysql as用法_MySQL基础学习总结