1. 问题描述
通话过程中,因未完全遮挡距离传感器导致屏幕亮屏,屏幕亮屏后耳朵附近误触状态栏导致状态栏下拉
状态栏下拉的情况有两种:一种为拖动状态栏下拉,另一种为在非锁屏下点击两次状态栏使状态栏下拉(第一次点击状态栏时,状态栏下拉为展开动画此时动画展示完成后会完全收回状态栏,在动画展示时进行第二次点击,则此时状态栏会完全展开)
由于在通话过程中大概率还是点击导致状态栏下拉,拖动导致下拉的概率较低,所以在状态栏点击功能方面解决该问题,在点击情况下由于完整的下拉的前提是状态栏处于展开动画,所以不显示状态栏的展开展示动画即可删除状态栏的点击下拉功能
2. 状态栏点击事件分发
点击导致状态栏下拉,其处理逻辑必然是从Down事件及Up事件的处理逻辑开始,所以可以先查看状态栏点击事件的分发过程
从View层面开始描述点击事件的分发过程
点击事件由ViewGroup传递到View,状态栏的View则是PhoneStatusBarView,因此查看PhoneStatusBarView的点击事件分发
public boolean onTouchEvent(MotionEvent event) {
boolean barConsumedEvent = mBar.interceptTouchEvent(event);
if (DEBUG_GESTURES) {
if (event.getActionMasked() != MotionEvent.ACTION_MOVE) {
EventLog.writeEvent(EventLogTags.SYSUI_PANELBAR_TOUCH,
event.getActionMasked(), (int) event.getX(), (int) event.getY(),
barConsumedEvent ? 1 : 0);
}
}
return barConsumedEvent || super.onTouchEvent(event);
}
此处并没有进行事件的处理,继续向下调用super.onTouchEvent