系統解屏流程:
PhoneStatusBar的方法makeStatusBarView加載佈局super_status_bar,此佈局包含三個部分:1、PhoneStatusBarView;2、PanelHolder ;3、ScrimView 其中還有keyguard_bouncer,不是直接在layout佈局加入,只有用戶設置鎖屏保護後纔可見,PhoneStatusBarView 主要用來顯示最上面那一欄,即系統狀態等,PanelHolder是用戶下拉後得到的view,keyguard_bouncer是解鎖界面,無論哪種解鎖模式,都是在KeyguardBouncer類中加載進來的
現在分析keyguard_bouncer在什麼時候被加載,加載的具體過程
在StatusBarKeyguardViewManager的showBouncerOrKeyguard方法中加載KeyguardBouncer,調用了KeyguardBouncer的prepare的方法,加載了keyguard_bouncer佈局,include了keyguard_host_view 佈局,在這個佈局中包含了KeyguardSecurityContainer,在這個類中getSecurityView根據不同的SecurityMode(KeyguardSecurityModel的getSecurityMode方法控制)返回不同的layout佈局文件,KeyguardSecurityViewFlipper加載了這個佈局返回的view,假設我們加載的是KeyguardPatternView,在佈局keyguard_pattern_view中就會加載LockPatternView
systemReady showkeyguard大致流程:
screen off show keyguard大致流程:
keyguard_bouncer的加載流程
keyguard_bouncer include KeyguardHostView;
keyguard_host_view include KeyguardSecurityContainer
KeyguardSecurityContainer include KeyguardSecurityViewFlipper
KeyguardSecurityViewFlipper 方法getSecurityView()返回當前展示的view
假設當前view是 KeyguardPatternView
keyguard_pattern_view.xml:
part 1,keyguard_message_area
part 2,LockPatternView
part 3,keyguard_eca
LockPatternView 捕捉用戶觸摸動畫
KeyguardPatternView 定義了回調在LockPatternView 去匹配圖案
個人聯繫方式:[email protected]