• lock_icon_container LockIconContainer的显示


    LockIconContainer 是直接在super_notification_shade.xml 里面的:

    lock_icon_container

    
    
    <com.android.systemui.statusbar.phone.NotificationShadeWindowView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:sysui="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
    
        <com.android.systemui.statusbar.BackDropView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:visibility="gone"
                sysui:ignoreRightInset="true"
                >
            <ImageView android:id="@+id/backdrop_back"
                       android:layout_width="match_parent"
                       android:scaleType="centerCrop"
                       android:layout_height="match_parent" />
            <ImageView android:id="@+id/backdrop_front"
                       android:layout_width="match_parent"
                       android:layout_height="match_parent"
                       android:scaleType="centerCrop"
                       android:visibility="invisible" />
        com.android.systemui.statusbar.BackDropView>
    
        <com.android.systemui.statusbar.ScrimView
            android:id="@+id/scrim_behind"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:importantForAccessibility="no"
            sysui:ignoreRightInset="true"
            />
    
        <include layout="@layout/status_bar_expanded"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="invisible" />
    
        <include layout="@layout/brightness_mirror" />
    
        <com.android.systemui.statusbar.ScrimView
            android:id="@+id/scrim_in_front"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:importantForAccessibility="no"  
            sysui:ignoreRightInset="true"
        />
    
        <LinearLayout
            android:id="@+id/lock_icon_container"
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/status_bar_height"
            android:layout_gravity="top|center_horizontal">
            <com.android.systemui.statusbar.phone.LockIcon
                android:id="@+id/lock_icon"
                android:layout_width="@dimen/keyguard_lock_width"
                android:layout_height="@dimen/keyguard_lock_height"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="@dimen/keyguard_lock_padding"
                android:contentDescription="@string/accessibility_unlock_button"
                android:src="@*android:drawable/ic_lock"
                android:scaleType="center" />
            <com.android.keyguard.KeyguardMessageArea
                android:id="@+id/keyguard_message_area"
                style="@style/Keyguard.TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/keyguard_lock_padding"
                android:gravity="center"
                android:singleLine="true"
                android:ellipsize="marquee"
                android:focusable="true" />
        LinearLayout>
    com.android.systemui.statusbar.phone.NotificationShadeWindowView>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79

    控制显示与否:

    会基于StatusBarState的状态来更新 updateLockIcon

    状态有:

        /**
         * The status bar is in the "normal" shade mode.
         */
        public static final int SHADE = 0;
    
        /**
         * Status bar is currently the Keyguard.
         */
        public static final int KEYGUARD = 1;
    
        /**
         * Status bar is in the special mode, where it is fully interactive but still locked. So
         * dismissing the shade will still show the bouncer.
         */
        public static final int SHADE_LOCKED = 2;
    
        /**
         * Status bar is locked and shows the full screen user switcher.
         */
        public static final int FULLSCREEN_USER_SWITCHER = 3;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    【Flink】Flink任务缺失Jobmanager日志的问题排查
    【kali-权限提升】(4.2.4)社会工程学工具包:远控木马使用、设置、利用
    Nacos环境隔离
    Android-S Emulator
    面试问题梳理:项目中防止配置中的密码泄露-Jasypt
    基于文化算法优化的神经网络预测研究(Matlab代码实现)
    这篇文章告诉你视频配音制作的方法
    Ubuntu 安装PostgreSQL
    设计模式---原型模式
    国际期货投机有什么风险?目前正大怎么样?
  • 原文地址:https://blog.csdn.net/oHeHui1/article/details/138171511