Android-DrawerLayout介绍

原创 2015年07月08日 23:02:33

DrawerLayout已经出来很久了,个人觉得国内的app都深受ios的毒害在设计上都争先模仿ios的风格,都忘了什么是独特的Android风格,自己得先学的然后跟产品争取在项目中使用上一系列的Android风格,碰巧DrawerLayout菜单导航被我争取到了,用到了项目上。

首先 DrawerLayout存在于v4包中,我们只需要在xml配置即可

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawerLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_world"
        android:textColor="@android:color/black"
        android:gravity="center"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#ffffff"
        android:orientation="vertical"/>

</android.support.v4.widget.DrawerLayout>

在这需要介绍下ActionBarDrawerToggle,控制DrawerLayout的显示/隐藏使用。
在Activity中的两个回调函数中使用它:
onConfigurationChanged
onOptionsItemSelected
调用ActionBarDrawerToggle.syncState() 在Activity的onPostCreate()中;指示,ActionBarDrawerToggle与DrawerLayout的状态同步,并将ActionBarDrawerToggle中的drawer图标,设置为ActionBar的Home-Button的icon

public class DrawerActivity extends AppCompatActivity {

    DrawerLayout mDrawerLayout;
    ActionBarDrawerToggle toggle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_activity);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        toggle = new ActionBarDrawerToggle(DrawerActivity.this, mDrawerLayout, R.string.hello_world, R.string.hello_world);
        mDrawerLayout.setDrawerListener(toggle);

        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle("TestDrawerLayout");
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        toggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        toggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (toggle.onOptionsItemSelected(item))
            return true;
        return super.onOptionsItemSelected(item);
    }
}

以上几步设置即可在项目中成功使用DrawerLayout,但是需要注意几点:
1.android.support.v4.widget.DrawerLayout是存在于v4包下
2.主题需要显示ActionBar,例如Theme.AppCompat.Light.DarkActionBar
3.ActionBarDrawerToggle是个DrawerListener实现,我们可以自己写DrawerListener实现特定的要求。

我们可以发现独具自带的Android的风格我们使用起来也是很容易,而我们却深受ios的影响太多了。

Android-DrawerLayout的进一步学习

先看下效果 实现侧滑和点击Imageview实现切换图片 看了别人的一个UI框架,但是目前还有很多东西不会,就先弄个简单的玩玩 接下来直接上代码了 首先是布局文件,注意一个先后...
  • adolph_jun
  • adolph_jun
  • 2016年12月25日 17:10
  • 107

Eclipse介绍

Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为C++、Python、PHP等其他语言的开发工具。 Eclipse的本身只是一个...
  • vebasan
  • vebasan
  • 2012年03月09日 17:08
  • 10696

景点介绍网页

以下是我这个星期做的网页,不是很好,但我对盒子模型的认识更加深了 再者,我也学习了css3的内容,也相应的做了个网页,学习到了、、和标签的使用方法,加深了对绝对定位和相对定位的认识。下周...
  • yang_tang
  • yang_tang
  • 2017年04月23日 20:31
  • 556

AngularJs简单介绍

#AngularJS AngularJS是一款由Google公司开发维护的前端MVC框架, 其克服了HTML在构建应用上的诸多不足,从而降低了开发成本提升了开发效率。 #AngularJS下载...
  • u011301203
  • u011301203
  • 2016年11月19日 01:10
  • 1564

jQuery简单介绍

jQuery 库可以通过一行简单的标记被添加到网页中。jQuery 库 - 特性jQuery 是一个 JavaScript 函数库。 jQuery 库包含以下特性: HTML 元素选取 HTML...
  • Care_about
  • Care_about
  • 2016年10月24日 10:01
  • 506

五、初学SpringMVC+Mybatis之SpringMVC简介

1、MVC模式简介         MVC是一种设计模式或者说是一种编程思想,不能说MVC是一种框架。         M-Model模型         模型(Model)的职责是负责业务逻辑。包...
  • honchen2010
  • honchen2010
  • 2016年03月25日 22:37
  • 794

【团队介绍】小逗比们的介绍篇

队长:杨妍喆 联系方式:yangyanzhe@126.com
  • PopushGroup
  • PopushGroup
  • 2014年10月12日 22:41
  • 1035

Maven入门介绍一:Maven概述

Maven是什么?           答:Maven是一个项目管理和整合的工具。Maven为开发者提供了一套完整的构建生命周期框架。开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Ma...
  • windowsIOS
  • windowsIOS
  • 2016年04月18日 10:57
  • 3923

JVM简单介绍

JVM模型结构 图: 程序计数器(PC): 当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 场景:分支、循环、跳转、异常处理、线...
  • chun16free
  • chun16free
  • 2016年04月15日 14:07
  • 340

keil 简介

熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的。但ARM内核毕竟不同于51内核,因此无论在设置上还是在编程思想上,都需要下番功夫研究的。本文以MDK V4.03为例...
  • zhengyanan815
  • zhengyanan815
  • 2017年04月25日 08:37
  • 420
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android-DrawerLayout介绍
举报原因:
原因补充:

(最多只允许输入30个字)