Android杂谈(20)DrawerLayout实践
来源:互联网 发布:mac win7 编辑:程序博客网 时间:2024/06/14 10:18
转载请注意: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
- Android杂谈(20)DrawerLayout实践
- Android杂谈(18)Retrofit实践
- Android杂谈(19)Glide实践
- Android杂谈(27)锁屏实践
- Android 抽屉导航 (DrawerLayout)
- Android DrawerLayout
- Android -- DrawerLayout
- android drawerlayout
- android drawerlayout
- android DrawerLayout
- <Android 基础(七)> DrawerLayout and NavigationView
- Android: DrawerLayout(抽屉导航)按钮
- Android: DrawerLayout(抽屉导航)1
- Android 动画杂谈(一)
- Android 动画杂谈 (三)
- android杂谈
- Android杂谈
- Android 杂谈
- Bootstrap3 表单-水平排列的表单组的尺寸
- 精通 CSS+DIV 网页样式与布局 154
- 关于myrect.origin=mypoint中调用setOrigin的问题
- Mybatis报错Could not find parameter map java.util.Map
- 浅显解释 I/O阻塞 poll epoll
- Android杂谈(20)DrawerLayout实践
- 机器视觉算法 笔记
- maven编译过程中遇的相关问题
- webView中拿到选取的文字
- Redis安装
- 精通 CSS+DIV 网页样式与布局 155
- 工具 - gson解析json
- 计算G711语音的打包长度和RTP里timestamp(时间戳)的增长量
- android udp demo