Android 11 SystemUI 删除状态栏的点击下拉动画

在通话期间,由于未完全遮挡距离传感器,屏幕可能会因误触状态栏而亮屏并下拉。本文分析了两种状态栏下拉情况,并着重讨论点击触发的状态栏下拉。为解决通话中误操作问题,提出了通过阻止状态栏点击时的下拉动画来禁用这一功能。具体实现涉及查看和拦截PhoneStatusBarView的点击事件分发过程。
摘要由CSDN通过智能技术生成

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值