在以前,做策划导航的时候,最常用的组件便是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">    <!--主布局-->    <RelativeLayout        android:layout_width="match_parent"        android:background="#00c7c0"        android:layout_height="match_parent">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="主页面"            android:textSize="40sp"            android:layout_centerInParent="true"            />    </RelativeLayout>    <!--侧滑菜单-->    <LinearLayout        android:id="@+id/drawerContent"        android:layout_width="200dp"        android:layout_height="match_parent"        android:background="#F5F5F5"        android:orientation="vertical"        android:layout_gravity="start">        <TextView            android:id="@+id/text1"            android:layout_width="match_parent"            android:layout_height="50dp"            android:text="我的收藏"            android:gravity="center"            android:textSize="16sp"            />        <TextView            android: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;    @Override    protected 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);        // 设置Toolbar        toolbar.setTitle("掌阅宝");        toolbar.setTitleTextColor(Color.parseColor("#ffffff"));        // 设置toolbar支持actionbar        setSupportActionBar(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);    }    @Override    public void onClick(View v) {        // 关闭DrawerLayout        drawerLayout.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啦!欢迎互相学习!
如有疑问,欢迎留言探讨。

更多相关文章

  1. (讲课篇)让小白都能明白的Android开发-1. 快速的创建一个安卓应
  2. android解析xml文件的方式之SAX方式
  3. 如何跳过Nexus 7二代的开机设置
  4. Android中RTL布局的适配
  5. Android底部菜单(Fragment控制切换多个页面)
  6. android 实战练习 回归手机卫士 一 主界面布局
  7. 20130605早读课:从Android的设计规则看Google的用户体验观
  8. 打造一体式广告轮播条升级版
  9. 【Android】利用表格布局,Android中xml文件与java的交互制作登录

随机推荐

  1. 清除SQLServer日志的两种方法
  2. SQL Server连接失败错误及解决第1/5页
  3. 最长用最基本的MSSQL数据库备份与还原
  4. 如何创建SQL Server 2000故障转移群集
  5. SQL Server 中调整自增字段的当前初始值
  6. MDF文件在SQL Server中的恢复技术
  7. MS-SQL Server 中单引号的两种处理方法
  8. sql数据库不能直接用instr函数
  9. 显示 Sql Server 中所有表中的信息
  10. 一些 T-SQL 技巧