drawerLayout-监听事件四个方法介绍
2024-08-29 04:53:59
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前面
最新文章
- Windows 下 zip 版的 MySQL 的安装
- 动态sql
- angularJS学习资源最全汇总
- (AS3)关于arguments
- windbg入门
- leetcode 349:两个数组的交集I
- 测试一个域名DNS查询时间的shell脚本
- C#中数组、ArrayList和List三者的区别(转)
- 后PMP时代下的敏捷项目管理全国在线讲座
- c++趣味之为变参模板的每个参数执行单独函数
- Java创建二叉搜索树,实现搜索,插入,删除操作
- 虚拟DOM和react中的diff算法总结
- Jmeter名词注解
- pagerank 数学基础
- 计算机网络六:无线局域网、IEEE 802.11、WIFI和蓝牙
- 【Solidity】学习(2)
- CSS多行文本垂直居中
- C++ 窗口
- CSS选择器效率
- ssh隐藏的sftp功能的使用