Android杂谈(20)DrawerLayout实践

转载请注意:http://blog.csdn.net/wjzj000/article/details/53929870

本菜开源的一个自己写的Demo,希望能给Androider们有所帮助,水平有限,见谅见谅…
https://github.com/zhiaixinyang/PersonalCollect (拆解GitHub上的优秀框架于一体,全部拆离不含任何额外的库导入)
https://github.com/zhiaixinyang/MyFirstApp(Retrofit+RxJava+MVP)


写在前面

在杂谈系列里边基本上都是记录些简单的用法。
这次记录一个关于DrawerLayout,也就是我们常说的侧滑。
个人对侧滑不是很感冒,所以就算是简单的记一记吧。


先看一下效果:

这里写图片描述

  • 这里不要把目光集中在左上角的那个箭头那。那不是我们这次的重点,以后会写关于它的详细使用。
  • 上边的那个效果,我们直接上代码:
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">
    <!-- 模拟的AcitonBar的效果,暂时无视就好了 -->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/black"
        >
        <ImageView
            android:id="@+id/drawer_indicator"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:scaleType="centerInside"
            android:background="@drawable/drawer_selector"
            android:layout_gravity="start"
            />
        <TextView
            android:id="@+id/indicator_style"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="DrawerLayout"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:layout_gravity="center_vertical|end"
            android:textStyle="bold"
            android:textColor="@color/white"
            />
    </FrameLayout>
    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!-- 作为主要内容视图,下面的视图消耗整个
             空间可用在两个维度中使用match_parent。 -->
        <fragment
            android:id="@+id/content_frame"
            android:name="com.example.mbenben.studydemo.view.nav.TabFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <!-- android:layout_gravity =“start”
        告诉DrawerLayout将它当作左侧(从左到右)的滑动抽屉,
        右侧(从右到左)的语言。 抽屉以dp给定固定宽度并且延伸容器的整个高度。
        实体背景用于与内容视图形成对比。 -->
        <fragment
            android:id="@+id/left_drawer"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:name="com.example.mbenben.studydemo.view.nav.TabFragment"
            android:choiceMode="singleChoice"
            android:background="@color/white"/>
    </android.support.v4.widget.DrawerLayout>
</LinearLayout>
  • 这里要注意的地方就是DrawerLayout标签下的俩个布局。第一个代表我们正常显示的内容,第二个表示侧滑内容。
  • 在这里我使用的是用一个Fragment,其实用啥都行,自己定义就好。

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle actionBarDrawerToggle=new ActionBarDrawerToggle(this,mDrawerLayout,R.string.drawer_open,R.string.drawer_close);
        mDrawerLayout.addDrawerListener(actionBarDrawerToggle);
  • 这里的监听直接使用的是ActionBarDrawerToggle
  • 当然我们也可以通过new的方式:
mDrawerLayout.addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);
            }

            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
            }

            @Override
            public void onDrawerStateChanged(int newState) {
                super.onDrawerStateChanged(newState);
            }
        });
  • 那么这样我们就可以直接在特定的回调方法里写我们自己的逻辑了。

  • 因为在布局之中我们可以直接加载Fragment,所以我们可以随意布局我们的Fragment,然后通过静态加载的方法写进DrawerLayout的布局之中即可。所以在这里就不多展开。因为我们的布局可以在对应的Fragment的布局中随便搞,并且相关的逻辑也可以再Fragment中随表弄。而我们的Activity只需要处理回调即可。

PS:相关源码基本都存放于我的这个开源项目之中:
https://github.com/zhiaixinyang/PersonalCollect


尾声

OK,关于DrawerLayout的用法就简单写这么多,下篇内容就是关于那个可以变化的箭头!

最后希望各位看官可以star我的GitHub,三叩九拜,满地打滚求star:
https://github.com/zhiaixinyang/PersonalCollect
https://github.com/zhiaixinyang/MyFirstApp

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值