1.首先我们看一下它的监听事件的生命周期

代码如下

 mDrawerLayout.setDrawerListener(new DrawerListener() {
@Override
public void onDrawerStateChanged(int arg0) {
mHistoryHideButton.startAnimation(myAnimation);
android.util.Log.e("zhangshuli", "statechange");
} @Override
public void onDrawerSlide(View arg0, float arg1) {
mHistoryHideButton.startAnimation(myAnimationRecover);
android.util.Log.e("zhangshuli", "slide"); } @Override
public void onDrawerOpened(View arg0) {
myHistoryAnimationSetCount = 0;
myHistoryItemCount= mHistory.mEntries.size()-1;
if (mHistoryDisplayList.getCount() == 0) {
mHistoryClearButton.setEnabled(false);
} else {
mHistoryClearButton.setEnabled(true);
}
android.util.Log.e("zhangshuli", "open");
} @Override
public void onDrawerClosed(View arg0) {
history_clear_choose.setVisibility(View.GONE);
android.util.Log.e("zhangshuli", "colse");
}
});

当我们直接点开,也就是执行

if (!mDrawerLayout.isDrawerVisible(GravityCompat.END)) {
mDrawerLayout.openDrawer(GravityCompat.END);
}

的时候,打印结果如下

- ::57.163 E/zhangshuli(): statechange
- ::57.171 E/zhangshuli(): slide
- ::57.204 E/zhangshuli(): slide
- ::57.238 E/zhangshuli(): slide
- ::57.262 E/zhangshuli(): slide
- ::57.290 E/zhangshuli(): slide
- ::57.317 E/zhangshuli(): slide
- ::57.341 E/zhangshuli(): slide
- ::57.366 E/zhangshuli(): slide
- ::57.393 E/zhangshuli(): slide
- ::57.420 E/zhangshuli(): slide
- ::57.445 E/zhangshuli(): slide
- ::57.470 E/zhangshuli(): slide
- ::57.496 E/zhangshuli(): slide
- ::57.519 E/zhangshuli(): slide
- ::57.545 E/zhangshuli(): slide
- ::57.590 E/zhangshuli(): open
- ::57.591 E/zhangshuli(): statechange

我们可以看到

onDrawerStateChanged 在状态开始改变跟状态改变完成以后各执行一次
onDrawerOpened 最终打开以后执行
onDrawerSlide 一直在移动的过程中执行

关闭的时候,点击关闭

- ::27.180 E/zhangshuli(): statechange
- ::27.190 E/zhangshuli(): slide
- ::27.215 E/zhangshuli(): slide
- ::27.246 E/zhangshuli(): slide
- ::27.270 E/zhangshuli(): slide
- ::27.295 E/zhangshuli(): slide
- ::27.319 E/zhangshuli(): slide
- ::27.349 E/zhangshuli(): slide
- ::27.378 E/zhangshuli(): slide
- ::27.412 E/zhangshuli(): slide
- ::27.440 E/zhangshuli(): slide
- ::27.463 E/zhangshuli(): slide
- ::27.485 E/zhangshuli(): slide
- ::27.506 E/zhangshuli(): slide
- ::27.527 E/zhangshuli(): slide
- ::27.561 E/zhangshuli(): slide
- ::27.601 E/zhangshuli(): colse
- ::27.601 E/zhangshuli(): statechange

跟上面唯一的区别也就是

彻底关闭的时候,执行

onDrawerClosed

当我们是滑动打开的时候

- ::20.367 E/zhangshuli(): statechange
- ::20.375 E/zhangshuli(): slide
- ::20.395 E/zhangshuli(): statechange
- ::20.439 E/zhangshuli(): slide
- ::20.470 E/zhangshuli(): slide
- ::20.500 E/zhangshuli(): slide
- ::20.524 E/zhangshuli(): slide
- ::20.548 E/zhangshuli(): slide
- ::20.572 E/zhangshuli(): slide
- ::20.599 E/zhangshuli(): slide
- ::20.621 E/zhangshuli(): slide
- ::20.643 E/zhangshuli(): slide
- ::20.666 E/zhangshuli(): slide
- ::20.689 E/zhangshuli(): slide
- ::20.713 E/zhangshuli(): slide
- ::20.736 E/zhangshuli(): slide
- ::20.760 E/zhangshuli(): slide
- ::20.785 E/zhangshuli(): slide
- ::20.810 E/zhangshuli(): slide
- ::20.834 E/zhangshuli(): slide
- ::20.859 E/zhangshuli(): slide
- ::20.882 E/zhangshuli(): slide
- ::20.906 E/zhangshuli(): slide
- ::20.931 E/zhangshuli(): slide
- ::20.962 E/zhangshuli(): slide
- ::20.994 E/zhangshuli(): slide
- ::21.019 E/zhangshuli(): slide
- ::21.045 E/zhangshuli(): slide
- ::21.070 E/zhangshuli(): slide
- ::21.094 E/zhangshuli(): slide
- ::21.118 E/zhangshuli(): slide
- ::21.143 E/zhangshuli(): slide
- ::21.168 E/zhangshuli(): slide
- ::21.193 E/zhangshuli(): slide
- ::21.218 E/zhangshuli(): slide
- ::21.241 E/zhangshuli(): slide
- ::21.266 E/zhangshuli(): slide
- ::21.291 E/zhangshuli(): slide
- ::21.318 E/zhangshuli(): slide
- ::21.343 E/zhangshuli(): slide
- ::21.367 E/zhangshuli(): slide
- ::21.392 E/zhangshuli(): slide
- ::21.417 E/zhangshuli(): slide
- ::21.442 E/zhangshuli(): slide
- ::21.469 E/zhangshuli(): slide
- ::21.494 E/zhangshuli(): slide
- ::21.519 E/zhangshuli(): slide
- ::21.544 E/zhangshuli(): slide
- ::21.569 E/zhangshuli(): slide
- ::21.597 E/zhangshuli(): slide
- ::21.623 E/zhangshuli(): slide
- ::21.649 E/zhangshuli(): slide
- ::21.674 E/zhangshuli(): slide
- ::21.698 E/zhangshuli(): slide
- ::21.724 E/zhangshuli(): slide
- ::21.750 E/zhangshuli(): slide
- ::21.776 E/zhangshuli(): slide
- ::21.801 E/zhangshuli(): slide
- ::21.832 E/zhangshuli(): slide
- ::21.858 E/zhangshuli(): slide
- ::21.882 E/zhangshuli(): slide
- ::21.906 E/zhangshuli(): slide
- ::21.930 E/zhangshuli(): slide
- ::21.955 E/zhangshuli(): slide
- ::21.980 E/zhangshuli(): slide
- ::22.007 E/zhangshuli(): slide
- ::22.035 E/zhangshuli(): slide
- ::22.062 E/zhangshuli(): slide
- ::22.262 E/zhangshuli(): open
- ::22.262 E/zhangshuli(): statechange

其实跟我们直接点开没太大区别,就是

onDrawerSlide 一直在执行。所以,这个方法应该可以得到你的移动坐标

滑动关闭的时候

- ::38.056 E/zhangshuli(): statechange
- ::38.073 E/zhangshuli(): slide
- ::38.100 E/zhangshuli(): slide
- ::38.130 E/zhangshuli(): slide
- ::38.161 E/zhangshuli(): slide
- ::38.193 E/zhangshuli(): slide
- ::38.222 E/zhangshuli(): slide
- ::38.250 E/zhangshuli(): slide
- ::38.275 E/zhangshuli(): slide
- ::38.298 E/zhangshuli(): slide
- ::38.322 E/zhangshuli(): slide
- ::38.347 E/zhangshuli(): slide
- ::38.371 E/zhangshuli(): slide
- ::38.402 E/zhangshuli(): slide
- ::38.429 E/zhangshuli(): slide
- ::38.457 E/zhangshuli(): slide
- ::38.483 E/zhangshuli(): slide
- ::38.508 E/zhangshuli(): slide
- ::38.534 E/zhangshuli(): slide
- ::38.559 E/zhangshuli(): slide
- ::38.582 E/zhangshuli(): slide
- ::38.606 E/zhangshuli(): slide
- ::38.631 E/zhangshuli(): slide
- ::38.657 E/zhangshuli(): slide
- ::38.688 E/zhangshuli(): slide
- ::38.714 E/zhangshuli(): slide
- ::38.741 E/zhangshuli(): slide
- ::38.767 E/zhangshuli(): slide
- ::38.796 E/zhangshuli(): slide
- ::38.823 E/zhangshuli(): slide
- ::38.849 E/zhangshuli(): slide
- ::38.876 E/zhangshuli(): slide
- ::38.903 E/zhangshuli(): slide
- ::38.930 E/zhangshuli(): slide
- ::38.959 E/zhangshuli(): slide
- ::38.986 E/zhangshuli(): slide
- ::39.009 E/zhangshuli(): slide
- ::39.032 E/zhangshuli(): slide
- ::39.066 E/zhangshuli(): slide
- ::39.135 E/zhangshuli(): slide
- ::39.160 E/zhangshuli(): slide
- ::39.184 E/zhangshuli(): slide
- ::39.212 E/zhangshuli(): slide
- ::39.239 E/zhangshuli(): slide
- ::39.349 E/zhangshuli(): statechange
- ::39.360 E/zhangshuli(): slide
- ::39.383 E/zhangshuli(): slide
- ::39.404 E/zhangshuli(): slide
- ::39.425 E/zhangshuli(): slide
- ::39.446 E/zhangshuli(): slide
- ::39.467 E/zhangshuli(): slide
- ::39.488 E/zhangshuli(): slide
- ::39.508 E/zhangshuli(): slide
- ::39.529 E/zhangshuli(): slide
- ::39.549 E/zhangshuli(): slide
- ::39.585 E/zhangshuli(): slide
- ::39.619 E/zhangshuli(): colse
- ::39.619 E/zhangshuli(): statechange

也是一样的。所以,在它的方法中,我们可以做很多事情

我们可以得出结论
1.onDrawerStateChanged:总是在drawerlayout状态发生切换时候执行两次,一次是状态刚刚发生改变的时候,一次是状态改变彻底完成的时候,它总是在监听事件最开始跟末尾个执行一次
2.onDrawerSlide:它是在状态发生改变的过程中一直执行
3.onDrawerOpened(打开)、onDrawerClosed(关闭):他们是在状态改变完成以后执行,是发生在第二次onDrawerStateChanged前面

												

drawerLayout-监听事件四个方法介绍的更多相关文章

  1. java在线聊天项目0.3版本 制作客户端窗体,实现发送按钮和回车发送信息功能,使用ActionListener监听事件中actionPerformed方法(用内部类和匿名内部类两种方法)

    方法一,使用匿名内部类的监听方法,因方法一致代码稍冗余 package com.swift; import java.awt.BorderLayout; import java.awt.Color; ...

  2. android中实现监听的四种方法

    (1)自身类作为事件监听器 package cn.edu.gdmec.s07150745.work5; import android.support.v7.app.AppCompatActivity; ...

  3. UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法

    基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...

  4. Second Day: 关于Button监听事件的三种方法(匿名类、外部类、继承接口)

    第一种:通过匿名类实现对Button事件的监听 首先在XML文件中拖入一个Button按钮,并设好ID,其次在主文件.java中进行控件初始化(Private声明),随后通过SetOnClickLis ...

  5. 关于实现自定义Dialog和实现Dialog里view的事件监听的两种方法

    一.自定义dialog. 二.实现dialog里view的事件监听 1.自定义dialog比较简单.在实例化new的时候,加入样式,布局就行了.或者重写dialog. 2.实现dialog里view的 ...

  6. miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题

    最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. <div id="pageGrid ...

  7. 阅读layim代码小记,监听事件实现方法

    (function (win) { //注册事件 var chat = function () { $('#open').on('click', function () { sendMessage() ...

  8. 安卓开发学习日记 DAY5——监听事件onClick的实现方法

    今天主要学习了监听事件的是实现方法,就是说,做了某些动作后,怎么监听这个动作并作出相应反应. 方法主要有三种: 1.匿名内部类的方法 2.独立类的方法 3.类似实现接口的方法 以下分别分析: 1.匿名 ...

  9. Android成长日记-Android监听事件的方法

    1. Button鼠标点击的监听事件 --setOnClickListener 2. CheckBox, ToggleButton , RadioGroup的改变事件 --setOnCheckedCh ...

随机推荐

  1. orm 通用方法——QueryModelCount条件查询记录数

    定义代码: /** * 描述:根据条件查询对象数 * 作者:Tianqi * 日期:2014-09-17 * param:model 对象实例 * param:cond 查询条件 * return:i ...

  2. Cisco交换机端口安全

    Cisco交换机端口安全       通过端口设置,可以限制允许访问交换机上某个端口的MAC地址以及IP(可选)来实现严格控制对该端口的输入,最终确保网络接入安全.配置网络安全时应该注意如下问题: 1 ...

  3. android文本排布

    首先看一幅图,是简书App的一篇文章的截图,如下: 图1,图2 上面两个图片都是文本的显示,但是由于有多种格式,所以较为复杂,例如其中有普通文本,还有加粗的文本,还有图文混排的显示等等. 一.解析HT ...

  4. 最长回文子串 hihocode 1032 hdu 3068

    最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. HttpComponents入门解析

    1 简介 超文本传输协议(http)是目前互联网上极其普遍的传输协议,它为构建功能丰富,绚丽多彩的网页提供了强大的支持.构建一个网站,通常无需直接操作http协议,目前流行的WEB框架已经透明的将这些 ...

  6. Windows server 2016 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同。”

    使用克隆的系统时,加域是出现如下问题.“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同.” 问题原因:Windows使用SID来表示所有的安全对象(security principa ...

  7. modSecurity规则学习(一)——配置文件

    环境:modSecurity3.0,nignx1.13.8 modSecurity配置文件 1.nginx.conf server { listen ; modsecurity on; //启动mod ...

  8. js实现删除确认提示框

    js实现删除确认提示框 一.实例描述 防止用户小心单击了“删除”按钮,在用户单击“删除”按钮后,给出一个提示,让用户确认此次操作是否正确. 二.效果 三.代码 <!DOCTYPE html> ...

  9. c++中重载、重写、覆盖的区别

    Overload(重载):在C++程序中,可以将语义.功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型.顺序不同),即函数重载.(1)相同的范围(在同一个类中):(2)函数名字相同:( ...

  10. Python 面向对象与 C++、Java 的异同

    1. 子类是否自动调用父类的构造方法 C++.Java 会在子类对象的构造中自动首先调用父类的构造: Python 则相对啰嗦一点: 如果子类不覆盖父类的__init__()方法,则子类默认将执行与父 ...