DrawerLayout最简单的使用,没有更多的内容

来源:互联网 发布:python 数组拆分 编辑:程序博客网 时间:2024/06/11 09:18

1.先翻译下DrawerLayout类在文档中的Overview

DrawerLayout扮演的是一个Window最外层的布局,
它允许有交互的”drawer”view在Window垂直的两个边缘被拉出

使用android:layout_gravity属性的left|right值可以控制子view作为Drawer被放置在左边或者右边

注意是layout_gravity不是gravity

注意你只能在一边放置最多一个drawer.

如果你尝试在一边放置超过一个drawer,则会抛出运行时异常

想要使用DrawerLayout,需要在布局文件中把你的主视图布局作为第一个子布局,而且要将宽高设置为match_parent,最终要的是不要设置layout_gravity属性

DrawerLayout.DrawerListener可以被用来监听drawer的状态.
为了防止在drawer进行动画时进行复杂的操作造成卡顿,建议把复杂的操作放在STATE_IDLE的状态.

DrawerLayout.SimpleDrawerListener提供了DrawerListener一个空实现(用于节省代码空间….)

根据android的设计规范,任何放在左边(left/start)的drawer应该包含应用的导航内容,而任何放在右边(right/end)drawer应该包含关于当前主视图内容的操作,和actionbar和其他地方的设计结构一样

更多信息查看 Creating a Navigation Drawer (这个不错哦,是个中文翻译的页面,不过貌似有点老了)

好了,我来试试:

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:design="http://schemas.android.com/apk/res-auto"    android:id="@+id/drawer_layout_1"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:id="@+id/tv_1"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="@color/green"        android:gravity="center"        android:text="content_content_content_content_content_content_content_content_content_content_content_content_content_content" />    <TextView        android:id="@+id/drawer_1"        android:layout_width="300dp"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="@color/red"        android:text="drawer!1111111111111111"        android:textSize="30sp" />    <TextView        android:id="@+id/drawer_2"        android:layout_width="300dp"        android:layout_height="match_parent"        android:layout_gravity="end"        android:background="@color/red"        android:text="drawer!2222222222222222"        android:textSize="30sp" /></android.support.v4.widget.DrawerLayout>

drawer

以上是最简单的示例.

2.然后我们给这个DrawerLayout添加个DrawerListener

drawerListener = new DrawerLayout.DrawerListener() {    @Override    public void onDrawerSlide(View drawerView, float slideOffset) {        Log.d(TAG, "onDrawerSlide: " + slideOffset);    }    @Override    public void onDrawerOpened(View drawerView) {        Log.d(TAG, "onDrawerOpened: ");    }    @Override    public void onDrawerClosed(View drawerView) {        Log.d(TAG, "onDrawerClosed: ");    }    @Override    public void onDrawerStateChanged(int newState) {        String state;        switch (newState) {            case DrawerLayout.STATE_DRAGGING:                state = "STATE_DRAGGING";                break;            case DrawerLayout.STATE_IDLE:                state = "STATE_IDLE";                break;            case DrawerLayout.STATE_SETTLING:                state = "STATE_SETTLING";                break;            default:                state = "Unknown";                break;        }        Log.d(TAG, "onDrawerStateChanged: state = " + state);    }};drawerLayout.addDrawerListener(drawerListener);

通过实验我得到下面的结果:

public void onDrawerSlide(View drawerView, float slideOffset) {    Log.d(TAG, "onDrawerSlide: " + slideOffset);}   /**| 这个方法每一帧会回调一次*| slideOffset的值在0.0到1.0之间变动*| 当DrawerLayout关闭的时候是0.0*| 当DrawerLayout完全打开的时候是1.0*/
public void onDrawerOpened(View drawerView) {    Log.d(TAG, "onDrawerOpened: ");} /**| 这个方法每当DrawerLayout完全打开且手指从屏幕上松开的时候会回调*/
@Overridepublic void onDrawerClosed(View drawerView) {    Log.d(TAG, "onDrawerClosed: ");}/**| 这个方法每当DrawerLayout完全关闭且手指从屏幕上松开的时候会回调*/
@Overridepublic void onDrawerStateChanged(int newState) {    String state;    switch (newState) {        case DrawerLayout.STATE_DRAGGING:            state = "STATE_DRAGGING";            break;        case DrawerLayout.STATE_IDLE:            state = "STATE_IDLE";            break;        case DrawerLayout.STATE_SETTLING:            state = "STATE_SETTLING";            break;        default:            state = "Unknown";            break;    }    Log.d(TAG, "onDrawerStateChanged: state = " + state);} /**| 这个方法词状态改变都会回调一次,下面列出有哪些状态:*| 1.STATE_DRAGGING ---> 当手指拖动drawer移动的时候*| 2.STATE_IDLE -------> 当手指不在屏幕上,且DrawerLayout处于稳定状态*| 3.STATE_SETTLING ---> 当drawer自动移动的状态(如拉一半放开后自动收回/张开时)*/
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 荣耀v9玩刺激战场掉帧怎么办 华为荣耀v9进水开不开机怎么办 魅蓝2玩游戏超卡怎么办 华为手机突然黑屏开不了机怎么办 三星a9开机混合密码忘了怎么办 三星a9锁屏密码忘了怎么办 华为6x手机电源键失灵怎么办 华为手机更换主题后图标不变怎么办 手机屏幕上的拨打电话键没了怎么办 小米手机电用完了充不进去怎么办 华为微信分身版本过低怎么办 手机连接不上4g网络怎么办办 手机通话时老返回锁屏怎么办 小米手机指纹解锁按键不灵了怎么办 小米手机4s黑屏开不了机怎么办 手机老年机突然黑屏开不了机怎么办 苹果7P遮挡传感器就黑屏怎么办 手机被偷支付宝的钱被偷怎么办 oppo手机微信视频黑屏了怎么办 小米账号锁死插卡不显示卡怎么办 红米手机充电时不黑屏怎么办 酷派手机开机出现系统错误怎么办 乐视1s手机开不了机怎么办 酷派手机的信息文件夹不见了怎么办 酷派手机开机卡在开机界面怎么办 魅蓝拨号键老是闪退怎么办 手机上浏览器搜索时字在右边怎么办 酷比魔方平板开不开机怎么办 红米手机摔了有一角黑屏了怎么办 红米手机刷机黑屏打不开怎么办 魅蓝x一打电话就黑屏怎么办 红米手机黑屏打不开怎么办充电发烫 小米手机打电话来是关机的怎么办 红米手机打电话自动灭屏怎么办 红米5s手机白屏怎么办 红米手机黑屏开不了机怎么办 红米note开机键不灵了怎么办 红米2忘记锁屏密码怎么办 红米1手机忘记锁屏密码怎么办 红米4x关不了机怎么办 红米4a手机屏幕黑屏打不开怎么办