下载地址:https://github.com/asijack/AndroidDrawerDemo

直接上效果图如下:

是不是还不错的样子。

先看看布局文件吧

<android.support.v4.widget.DrawerLayout    android:id="@+id/drawer_layout"    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerInParent="true"            android:text="@string/app_description"/>    </RelativeLayout>    <ListView        android:id="@+id/navdrawer"        android:layout_width="@dimen/navdrawer_width"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="@android:color/white"        android:choiceMode="singleChoice"        android:divider="@android:color/transparent"        android:dividerHeight="0dp"        android:drawSelectorOnTop="false">    </ListView></android.support.v4.widget.DrawerLayout>

需要注意一下几点:
1、主要内容的视图(TextView)必须是DrawLayout的第一个子元素, 因为导航抽屉是在主要内容视图的上面.
2、主要内容视图设置为匹配父视图的宽度和高度, 因为它代表了整个界面导航抽屉是隐藏的.
3、抽屉视图(ListView)必须指定其水平重力与android:layout_gravity属性。
支持从右到左(RTL)语言,指定值与 "start" 代替 "left"(所以抽屉里出现在布局的右侧当布局是RTL时).
4、抽屉视图指定其宽度用dp单位和高度匹配父视图。抽屉里的宽度不能超过320 dp, 所以用户总是可以看到主要内容视图的一部分.

在来看看代码,代码算是比较容易看懂的。下面讲一下需要注意的几个地方

1、onOptionsItemSelected

//当一个可标记项目被选中时,系统将调用特定的项目选择方法比如 :onOptionsItemSelected    @Override    public boolean onOptionsItemSelected(MenuItem item) {        if (item.getItemId() == android.R.id.home) {            if (mDrawerLayout.isDrawerOpen(mDrawerList)) {                mDrawerLayout.closeDrawer(mDrawerList);            } else {                mDrawerLayout.openDrawer(mDrawerList);            }        }        return super.onOptionsItemSelected(item);    }

当抽屉被打开或者说被选中时会调用这个方法。

2、OnPostCreate

//如果Activity实例是第一次启动,则不调用,以后的每次重新启动都会调用    @Override    protected void onPostCreate(Bundle savedInstanceState) {        super.onPostCreate(savedInstanceState);        mDrawerToggle.syncState();    }

这个方法用的用的还是比较少的。官方的解释是:

"Called when activity start-up is complete (after onStart() and onRestoreInstanceState(Bundle) have been called).

"就是说,当Activity彻底运行起来后回调onPostCreate方法

通常我们所熟知的activity的生命周期如下:

其实详细一点的生面周期如下

onCreate onStart onPost onCreate onResume onPostResume

跳转下一个activity onPause onStop

跟多请看这篇文章毕竟这里不是详细讲生命周期

还有跟多的Activity生命期状态相关的回调函数还有这个onNewIntent也是比较少见的,详细的看这篇文章吧

关于这个方法onPostCreate

可以用在获取当前Activity窗口view的宽高是一个比较好的选择

言归正传本demo需要注意的第三点

3、onConfigurationChanged

我们知道在改变屏幕方向、弹出软件盘和隐藏软键盘等类似操作时,如果没有设置AndroidManifest.xml 程序是会再次执行onCreate方法的。在AndroidManifest.xml 里面设置了android:onConfigurationChanged属性后就不会再次执行onCreate方法,而会执行onConfigurationChanged这个方法

而且首行必须是super.onConfigurationChanged(xx);

代码下载地址:下载地址:https://github.com/asijack/AndroidDrawerDemo

用Eclipse可直接导入运行

android studio 也可以导入,可能gradle版本第一点需要改下配置文件。哪里不足望指教3q

更多相关文章

  1. Android:TextView文字跑马灯的效果实现
  2. android设置textview限制字数以省略号显示的方法
  3. android 让一个控件按钮居于底部的几种方法
  4. Android子控件超出父控件方法
  5. Android(安卓)Studio下载及离线升级方法
  6. Android(安卓)SDK下载和更新失败的解决方法
  7. 扣丁学堂笔记第05天高级UI组件(一)
  8. Android(安卓)性能优化的一些方法
  9. Android蓝牙开发浅析

随机推荐

  1. 这波 JVM 面试题解答,绝对给你面试加分
  2. JVM 常用配置参数(Java 8)
  3. Spring IoC 依赖注入(支持哪些数据类型?)
  4. 每个技术人,都有一个变现的梦
  5. Spring IoC 依赖注入的实现方式
  6. CCNP(ISCW)实验:使用SDM配置Site-to-Site
  7. IDEA最新激活码2021(IDEA2020.3永久激活方
  8. 一文读懂 SuperEdge 边缘容器架构与原理
  9. CCNP(ISCW)实验:使用SDM配置路由器
  10. 循环链表(单双链表)