package Ġcom . fp li u . new ton . ui . status bar Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . app . Activity Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . annotation . Color Int Ċ Ċ import Ġandroidx . annotation . Int Def Ċ Ċ import Ġcom . read yst ates o ftware . system b art int . System Bar Tint Manager Ċ Ċ object ĠStatus Bar Util Ġ{ ĊĊĠĠĠ Ġconst Ġval ĠTYPE _ MI UI Ġ= Ġ 0 ĊĠĠĠ Ġconst Ġval ĠTYPE _ FL Y ME Ġ= Ġ 1 ĊĠĠĠ Ġ// 6 . 0 ĊĠĠĠ Ġconst Ġval ĠTYPE _ M Ġ= Ġ 3 ĊĊĠĠĠ Ġ@ Int Def ( TYPE _ MI UI , ĠTYPE _ FL Y ME , ĠTYPE _ M ) ĊĠĠĠ Ġ@ Retention ( Annotation Retention . SOURCE ) ĊĠĠĠ Ġinternal Ġannotation Ġclass ĠView Type ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¿®æĶ¹ çĬ¶æĢģ æłı é¢ľèī² ĊĠĠĠĠ Ġ* ĠæĶ¯æĮģ 4 . 4 ä»¥ä¸Ĭ çīĪæľ¬ ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġ é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset StatusBar Color ( activity : ĠActivity , Ġ@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . status Bar Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä½¿çĶ¨ System Bar Tint Manager , éľĢè¦ģ åħĪ å°Ĩ çĬ¶æĢģ æłı è®¾ç½®ä¸º éĢı æĺİ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Trans luc ent Status ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Bar Tint Manager ( activity ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĺ¾ç¤º çĬ¶æĢģ æłı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis StatusBar Tint Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½® çĬ¶æĢģ æłı é¢ľèī² ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset StatusBar Tint Color ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® çĬ¶æĢģ æłı éĢı æĺİ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Target Api ( 1 9 ) ĊĠĠĠ Ġfun Ġset Trans luc ent Status ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// 5 . x å¼Ģå§ĭ éľĢè¦ģ æĬĬ é¢ľèī² è®¾ç½® éĢı æĺİ ï¼Į åĲ¦åĪĻ å¯¼èĪª æłı ä¼ļ åĳ Ī çİ° ç³»ç»Ł é»ĺè®¤ çļĦ æµ ħ çģ ° èī² ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecor View Ġ= Ġwindow . decor View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¸¤ä¸ª Ġflag Ġ è¦ģ ç»ĵ åĲĪ ä½¿çĶ¨ ï¼Į è¡¨ç¤º è®© åºĶçĶ¨ çļĦ ä¸» ä½ĵ åĨħå®¹ åįł çĶ¨ ç³»ç»Ł çĬ¶æĢģ æłı çļĦ ç©ºéĹ´ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoption Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= Ġoption ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¯¼èĪª æłı é¢ľèī² ä¹Łåı¯ä»¥ æŃ£å¸¸ è®¾ç½® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// window . set NavigationBar Color ( Color . TRANSP ARENT ); ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= Ġwindow . attributes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflag Trans luc ent Status Ġ= ĠWindow Manager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes . flags Ġ= Ġattributes . flags Ġor Ġflag Trans luc ent Status ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// int Ġflag Trans luc ent Navigation Ġ= ĠWindow Manager . LayoutParams . FLAG _ TRANSL UC ENT _ NAV IG ATION ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// attributes . flags Ġ|= Ġflag Trans luc ent Navigation ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä»£çłģ å®ŀçİ° android : fits System Windows ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Root View Fits System Windows ( activity : ĠActivity , Ġfit System Windows : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwin Content Ġ= Ġactivity . findViewById < ViewGroup >( android . R . id . content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Content . child Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġwin Content . getChild At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( root View Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . set Fits System Windows ( fit System Windows ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® çĬ¶æĢģ æłı æ·± èī² æµ ħ èī² åĪĩæį¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset StatusBar Dark Theme ( activity : ĠActivity , Ġdark : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ-> Ġset StatusBar Font Icon Dark ( activity , ĠTYPE _ M , Ġdark ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOS Utils . is Mi ui Ġ-> Ġset StatusBar Font Icon Dark ( activity , ĠTYPE _ MI UI , Ġdark ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOS Utils . is Fly me Ġ-> Ġset StatusBar Font Icon Dark ( activity , ĠTYPE _ FL Y ME , Ġdark ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® Ġ çĬ¶æĢģ æłı æ·± èī² æµ ħ èī² åĪĩæį¢ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset StatusBar Font Icon Dark ( activity : ĠActivity , Ġ@ ViewType Ġtype : ĠInt , Ġdark : ĠBoolean ): ĠBoolean Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ MI UI Ġ-> Ġset Mi ui UI ( activity , Ġdark ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ FL Y ME Ġ-> Ġset Fly me UI ( activity , Ġdark ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ M Ġ-> Ġset Common UI ( activity , Ġdark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġset Common UI ( activity , Ġdark ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// è®¾ç½® 6 . 0 Ġ çĬ¶æĢģ æłı æ·± èī² æµ ħ èī² åĪĩæį¢ ĊĠĠĠ Ġprivate Ġfun Ġset Common UI ( activity : ĠActivity , Ġdark : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecor View Ġ= Ġactivity . window . decor View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( decor View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvis Ġ= Ġdecor View . system Ui Visibility ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dark ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvis Ġ= Ġvis Ġor ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvis Ġ= Ġvis Ġand ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( decor View . system Ui Visibility Ġ!= Ġvis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= Ġvis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// è®¾ç½® Fly me Ġ çĬ¶æĢģ æłı æ·± èī² æµ ħ èī² åĪĩæį¢ ĊĠĠĠ Ġprivate Ġfun Ġset Fly me UI ( activity : ĠActivity , Ġdark : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġwindow . attributes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdark Flag Ġ= ĠWindow Manager . LayoutParams :: class . java . getDeclared Field (" ME IZ U _ FLAG _ DARK _ STATUS _ BAR _ ICON ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġme iz u Flags Ġ= ĠWindow Manager . LayoutParams :: class . java . getDeclared Field (" me iz u Flags ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdark Flag . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme iz u Flags . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbit Ġ= Ġdark Flag . getInt ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġme iz u Flags . getInt ( lp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dark ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue Ġor Ġbit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue Ġand Ġbit . inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme iz u Flags . setInt ( lp , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . attributes Ġ= Ġlp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// è®¾ç½® MI UI Ġ çĬ¶æĢģ æłı æ·± èī² æµ ħ èī² åĪĩæį¢ ĊĠĠĠ Ġprivate Ġfun Ġset Mi ui UI ( activity : ĠActivity , Ġdark : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġactivity . window . java Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Private Api ") Ġval Ġlayout Params Ġ= ĠClass . forName (" android . view . Mi ui WindowManager \$ LayoutParams ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Ġ= Ġlayout Params . getField (" EXTRA _ FLAG _ STATUS _ BAR _ DARK _ MODE ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdark Mode Flag Ġ= Ġfield . getInt ( layout Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextra Flag Field Ġ= Ġclazz . getDeclared Method (" set Extra Flags ", ĠInt :: class . java Primitive Type , ĠInt :: class . java Primitive Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextra Flag Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dark ) Ġ{ ĠĠĠ Ġ// çĬ¶æĢģ æłı äº ® èī² ä¸Ķ é»ĳ èī² åŃĹ ä½ĵ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Flag Field . invoke ( window , Ġdark Mode Flag , Ġdark Mode Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextra Flag Field . invoke ( window , Ġ 0 , Ġdark Mode Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }