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左右滑动菜单

  • 2016年05月03日 10:23
  • 3.29MB
  • 下载

Android侧滑菜单DrawerLayout的使用

现在侧滑菜单使用很多,大都是通过SlidingMenu实现。现在也可以通过DrawerLayout创建抽屉布局frament_content.xml ...
  • cuiran
  • cuiran
  • 2015年01月03日 18:39
  • 22747

Android ToolBar+DrawerLayout的使用

  • 2016年03月23日 18:16
  • 24.86MB
  • 下载

Android侧滑菜单之DrawerLayout用法详解

最早的时候实现侧滑菜单功能大多时候需要通过github上一个叫做SlidingMenu的开源通过依赖包来实现,后来谷歌在v4包中添加了DrawerLayout来实现这个功能,完全可以替代Sliding...

Android DrawerLayout使用Demo

  • 2016年08月24日 14:35
  • 26.9MB
  • 下载

Android的DrawerLayout全屏滑动显示

DrawerLayout布局的最小阴影宽度为64dp,那么问题来了,如果我们这群程序员有这样一个需求,想让DrawerLayout全屏显示,全屏弹出一个抽屉效果,该如何实现呢? 我百度搜了一下Draw...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android-DrawerLayout介绍
举报原因:
原因补充:

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