package Ġcom . k ang ra oo . base kt lib . tools . bar Ċ Ċ 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 . ViewGroup . Margin LayoutParams Ċ import Ġandroid . view . Window Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Int Range Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġcom . k ang ra oo . base kt lib . R Ċ import Ġcom . k ang ra oo . base kt lib . tools . U Ui . getStatus Bar Height Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġset Color ( Color StatusBar Activity . this , Ġm Color , Ġm Alpha ); activity è®¾ç½® çĬ¶æĢģ æłı é¢ľèī² Ċ Ġ* Ġset Transparent è®¾ç½® çĬ¶æĢģ æłı åħ¨ éĢı æĺİ Ċ Ġ* Ġauthor Ġ: Ġs dw Ċ Ġ* Ġe - mail Ġ: Ġsh id awei @ xiao he . com Ċ Ġ* Ġtime Ġ: Ġ 2 0 1 9 / 0 8 / 0 2 Ċ Ġ* Ġdesc Ġ: Ġ å®Į ç¾İ çĬ¶æĢģ æłı å·¥åħ· ç±» Ċ Ġ* Ġversion : Ġ 1 . 0 Ċ Ġ*/ Ċ @ Deprecated (" å»ºè®® éĩĩçĶ¨ imm ersion bar ") Ċ object ĠU StatusBar Ġ{ ĊĠĠĠ Ġprivate Ġval ĠFA KE _ STATUS _ BAR _ VIEW _ ID Ġ= ĠR . id . status bar util _ fake _ status _ bar _ view ĊĠĠĠ Ġprivate Ġval ĠFA KE _ TRANSL UC ENT _ VIEW _ ID Ġ= ĠR . id . status bar util _ trans luc ent _ view ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG _ KEY _ HAVE _ SET _ OFFSET Ġ= Ġ- 1 2 3 ĊĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ STATUS _ BAR _ ALPHA Ġ= Ġ 1 1 2 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® çĬ¶æĢģ æłı é¢ľèī² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠéľĢè¦ģ è®¾ç½® çļĦ activity ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġ çĬ¶æĢģ æłı é¢ľèī² åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Bar Alpha Ġ çĬ¶æĢģ æłı éĢı æĺİ åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Color ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġ@ Color Int Ġcolor : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 , Ġto Ġ= Ġ 2 5 5 ) Ġstatus Bar Alpha : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . clear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . status Bar Color Ġ= Ġcalculate Status Color ( color , Ġstatus Bar Alpha ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . add Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecor View Ġ= Ġactivity . window . decor View Ġas ĠViewGroup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfake StatusBar View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . findViewById < View >( FA KE _ STATUS _ BAR _ VIEW _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fake StatusBar View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fake StatusBar View . visibility Ġ== ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake StatusBar View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake StatusBar View . set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Status Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Alpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . addView ( create StatusBar View ( activity , Ġcolor , Ġstatus Bar Alpha )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Root View ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® çĬ¶æĢģ æłı åħ¨ éĢı æĺİ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠéľĢè¦ģ è®¾ç½® çļĦ activity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Transparent ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtransparent StatusBar ( activity ) ĊĠĠĠĠĠĠĠ Ġset Root View ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä½¿ çĬ¶æĢģ æłı åįĬ éĢı æĺİ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ éĢĤ çĶ¨äºİ åĽ¾çīĩ ä½ľä¸º èĥĮæĻ¯ çļĦ çķĮéĿ¢ , æŃ¤ æĹ¶ éľĢè¦ģ åĽ¾çīĩ å¡« åħħ åĪ° çĬ¶æĢģ æłı ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠéľĢè¦ģ è®¾ç½® çļĦ activity ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Bar Alpha Ġ çĬ¶æĢģ æłı éĢı æĺİ åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Trans luc ent ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 , Ġto Ġ= Ġ 2 5 5 ) Ġstatus Bar Alpha : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Transparent ( activity ) ĊĠĠĠĠĠĠĠ Ġadd Trans luc ent View ( activity , Ġstatus Bar Alpha ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł åįĬ éĢı æĺİ çŁ© å½¢ æĿ¡ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠéľĢè¦ģ è®¾ç½® çļĦ Ġactivity ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Bar Alpha Ġ éĢı æĺİ åĢ¼ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Trans luc ent View ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= Ġ 2 5 5 ĊĠĠĠĠĠĠĠ Ġ) Ġstatus Bar Alpha : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . findViewById < View >( android . R . id . content ) Ġas ĠViewGroup ĊĠĠĠĠĠĠĠ Ġval Ġfake Trans luc ent View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View . findViewById < View >( FA KE _ TRANSL UC ENT _ VIEW _ ID ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fake Trans luc ent View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fake Trans luc ent View . visibility Ġ== ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfake Trans luc ent View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfake Trans luc ent View . set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . arg b ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Alpha , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View . addView ( create Trans luc ent StatusBar View ( activity , Ġstatus Bar Alpha )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º åįĬ éĢı æĺİ çŁ© å½¢ ĠView ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġalpha Ġ éĢı æĺİ åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ return Ġ åįĬ éĢı æĺİ ĠView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Trans luc ent StatusBar View ( activity : ĠActivity , Ġalpha : ĠInt ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ç»ĺ åĪ¶ ä¸Ģä¸ª åĴĮ çĬ¶æĢģ æłı ä¸Ģæł· é«ĺ çļĦ çŁ© å½¢ ĊĠĠĠĠĠĠĠ Ġval Ġstatus Bar View Ġ= ĠView ( activity ) ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget StatusBar Height ( activity ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġstatus Bar View . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġstatus Bar View . set BackgroundColor ( Color . arg b ( alpha , Ġ 0 , Ġ 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġstatus Bar View . id Ġ= ĠFA KE _ TRANSL UC ENT _ VIEW _ ID ĊĠĠĠĠĠĠĠ Ġreturn Ġstatus Bar View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä½¿ çĬ¶æĢģ æłı éĢı æĺİ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . KIT K AT ) ĊĠĠĠ Ġprivate Ġfun Ġtransparent StatusBar ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . clear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . add Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ NAV IG ATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . add Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠçĶŁæĪĲ ä¸Ģä¸ª åĴĮ çĬ¶æĢģ æłı å¤§å°ı çĽ¸åĲĮ çļĦ åįĬ éĢı æĺİ çŁ© å½¢ æĿ¡ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠéľĢè¦ģ è®¾ç½® çļĦ activity ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġ çĬ¶æĢģ æłı é¢ľèī² åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ param Ġalpha Ġ éĢı æĺİ åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ return Ġ çĬ¶æĢģ æłı çŁ© å½¢ æĿ¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate StatusBar View ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġ@ Color Int Ġcolor : ĠInt , ĊĠĠĠĠĠĠĠ Ġalpha : ĠInt ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ç»ĺ åĪ¶ ä¸Ģä¸ª åĴĮ çĬ¶æĢģ æłı ä¸Ģæł· é«ĺ çļĦ çŁ© å½¢ ĊĠĠĠĠĠĠĠ Ġval Ġstatus Bar View Ġ= ĠView ( activity ) ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget StatusBar Height ( activity ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġstatus Bar View . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġstatus Bar View . set BackgroundColor ( calculate Status Color ( color , Ġalpha )) ĊĠĠĠĠĠĠĠ Ġstatus Bar View . id Ġ= ĠFA KE _ STATUS _ BAR _ VIEW _ ID ĊĠĠĠĠĠĠĠ Ġreturn Ġstatus Bar View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® æł¹ å¸ĥå±Ģ åıĤæķ° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Root View ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . findViewById < View >( android . R . id . content ) Ġas ĠViewGroup ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġparent . child Count ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild View Ġ= Ġparent . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child View Ġis ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild View . set Fits System Windows ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild View . clip To Padding Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è®¡ç®Ĺ çĬ¶æĢģ æłı é¢ľèī² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġcolor åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ param Ġalpha Ġalpha åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ return Ġ æľĢç»Ī çļĦ çĬ¶æĢģ æłı é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcalculate Status Color (@ Color Int Ġcolor : ĠInt , Ġalpha : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( alpha Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcolor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġ 1 Ġ- Ġalpha Ġ/ Ġ 2 5 5 f ĊĠĠĠĠĠĠĠ Ġvar Ġred Ġ= Ġcolor Ġshr Ġ 1 6 Ġand Ġ 0 xff ĊĠĠĠĠĠĠĠ Ġvar Ġgreen Ġ= Ġcolor Ġshr Ġ 8 Ġand Ġ 0 xff ĊĠĠĠĠĠĠĠ Ġvar Ġblue Ġ= Ġcolor Ġand Ġ 0 xff ĊĠĠĠĠĠĠĠ Ġred Ġ= Ġ( red Ġ* Ġa Ġ+ Ġ 0 . 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġgreen Ġ= Ġ( green Ġ* Ġa Ġ+ Ġ 0 . 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġblue Ġ= Ġ( blue Ġ* Ġa Ġ+ Ġ 0 . 5 ). toInt () ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 xff Ġshl Ġ 2 4 Ġor Ġ( red Ġshl Ġ 1 6 ) Ġor Ġ( green Ġshl Ġ 8 ) Ġor Ġblue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸º å¤´ éĥ¨ æĺ¯ ĠImageView ĠçļĦ çķĮéĿ¢ è®¾ç½® çĬ¶æĢģ æłı éĢı æĺİ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠéľĢè¦ģ è®¾ç½® çļĦ activity ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Bar Alpha Ġ çĬ¶æĢģ æłı éĢı æĺİ åº¦ ĊĠĠĠĠ Ġ* Ġ@ param Ġneed Offset View ĠéľĢè¦ģ åĲĳ ä¸ĭ åģı ç§» çļĦ ĠView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Trans luc ent For ImageView ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 , Ġto Ġ= Ġ 2 5 5 ) Ġstatus Bar Alpha : ĠInt , ĊĠĠĠĠĠĠĠ Ġneed Offset View : ĠView ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Transparent For Window ( activity ) ĊĠĠĠĠĠĠĠ Ġadd Trans luc ent View ( activity , Ġstatus Bar Alpha ) ĊĠĠĠĠĠĠĠ Ġif Ġ( need Offset View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhave Set Offset Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneed Offset View . getTag ( TAG _ KEY _ HAVE _ SET _ OFFSET ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( have Set Offset Ġ!= Ġnull Ġ&& Ġhave Set Offset Ġas ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneed Offset View . layout Params Ġas ĠMargin LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . set Margins ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . left Margin , Ġlayout Params . top Margin Ġ+ Ġget StatusBar Height ( activity ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . right Margin , Ġlayout Params . bottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Offset View . setTag ( TAG _ KEY _ HAVE _ SET _ OFFSET , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠĠĠ ĠLAY OUT _ IN _ DISPLAY _ CUT OUT _ MODE _ DEFAULT ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ ĠLAY OUT _ IN _ DISPLAY _ CUT OUT _ MODE _ SHORT _ ED GES ĊĠĠĠ Ġ// ĠĠĠ ĠLAY OUT _ IN _ DISPLAY _ CUT OUT _ MODE _ NE VER ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠĠĠ Ġé»ĺè®¤ åĢ¼ æĺ¯ LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ DEFAULT ï¼Į åĪ ĺ æµ· åĮºåŁŁ ä¸įä¼ļ æĺ¾ç¤º åĨħå®¹ ï¼Į éľĢè¦ģ å°Ĩ åĢ¼ è®¾ç½®ä¸º LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ SHORT _ ED GES ĊĠĠĠ Ġfun Ġhide StatusBar ( activity : ĠActivity , Ġenable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġactivity . window . attributes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . layout In Display Cut out Mode Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ SHORT _ ED GES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . attributes Ġ= Ġlp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġui Flags Ġ= Ġ( View . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Flags Ġ= Ġui Flags Ġor Ġ 0 x 0 0 0 0 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . decor View . system Ui Visibility Ġ= Ġui Flags ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġui Flags Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Flags Ġ= Ġui Flags Ġor Ġ 0 x 0 0 0 0 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . decor View . system Ui Visibility Ġ= Ġui Flags ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ 1 . View . SYSTEM _ UI _ FLAG _ VISIBLE Ġ ï¼ļ çĬ¶æĢģ æłı åĴĮ Activity åħ± åŃĺ ï¼Į Activity ä¸į åħ¨ å±ı æĺ¾ç¤º ãĢĤ ä¹Łå°±æĺ¯ åºĶçĶ¨ å¹³ å¸¸ çļĦ æĺ¾ç¤º çĶ» éĿ¢ ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ 2 . View . SYSTEM _ UI _ FLAG _ FULL SCREEN Ġ ï¼ļ Activity åħ¨ å±ı æĺ¾ç¤º ï¼Į ä¸Ķ çĬ¶æĢģ æłı è¢« è¦ĨçĽĸ æİī ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ 3 . Âł View . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġ ï¼ļ Activity åħ¨ å±ı æĺ¾ç¤º ï¼Į ä½Ĩæĺ¯ çĬ¶æĢģ æłı ä¸įä¼ļ è¢« è¦ĨçĽĸ æİī ï¼Į èĢĮ æĺ¯ æŃ£å¸¸ æĺ¾ç¤º ï¼Į åıªæĺ¯ Activity é¡¶ ç«¯ å¸ĥ ĠÂł Ġ å±Ģ ä¼ļ è¢« è¦ĨçĽĸ ä½ı ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ 4 . View . IN VISIBLE Ġ ï¼ļ ĠActivity åħ¨ å±ı æĺ¾ç¤º ï¼Į éļĲèĹı çĬ¶æĢģ æłı ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® éĢı æĺİ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Transparent For Window ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. decor View . system Ui Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸º Ġfragment Ġ å¤´ éĥ¨ æĺ¯ ĠImageView ĠçļĦ è®¾ç½® çĬ¶æĢģ æłı éĢı æĺİ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Ġfragment Ġ å¯¹åºĶçļĦ Ġactivity ĊĠĠĠĠ Ġ* Ġ@ param Ġneed Offset View ĠéľĢè¦ģ åĲĳ ä¸ĭ åģı ç§» çļĦ ĠView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Trans luc ent For ImageView In Fragment ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġneed Offset View : ĠView ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Trans luc ent For ImageView In Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEFAULT _ STATUS _ BAR _ ALPHA , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġneed Offset View ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸º Ġfragment Ġ å¤´ éĥ¨ æĺ¯ ĠImageView ĠçļĦ è®¾ç½® çĬ¶æĢģ æłı éĢı æĺİ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity Ġfragment Ġ å¯¹åºĶçļĦ Ġactivity ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Bar Alpha Ġ çĬ¶æĢģ æłı éĢı æĺİ åº¦ ĊĠĠĠĠ Ġ* Ġ@ param Ġneed Offset View ĠéľĢè¦ģ åĲĳ ä¸ĭ åģı ç§» çļĦ ĠView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Trans luc ent For ImageView In Fragment ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 , Ġto Ġ= Ġ 2 5 5 ) Ġstatus Bar Alpha : ĠInt , ĊĠĠĠĠĠĠĠ Ġneed Offset View : ĠView ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Trans luc ent For ImageView ( activity , Ġstatus Bar Alpha , Ġneed Offset View ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT Ġ&& ĠBuild . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Previous Setting ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . KIT K AT ) ĊĠĠĠ Ġprivate Ġfun Ġclear Previous Setting ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecor View Ġ= Ġactivity . window . decor View Ġas ĠViewGroup ĊĠĠĠĠĠĠĠ Ġval Ġfake StatusBar View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . findViewById < View >( FA KE _ STATUS _ BAR _ VIEW _ ID ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fake StatusBar View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . remove View ( fake StatusBar View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity . findViewById < View >( android . R . id . content ) Ġas ĠViewGroup ). getChild At ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġas ĠViewGroup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . set Padding ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸º æ»ĳ åĬ¨ è¿ĶåĽŀ çķĮéĿ¢ è®¾ç½® çĬ¶æĢģ æłı é¢ľèī² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactivity ĠéľĢè¦ģ è®¾ç½® çļĦ activity ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġ çĬ¶æĢģ æłı é¢ľèī² åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ param Ġstatus Bar Alpha Ġ çĬ¶æĢģ æłı éĢı æĺİ åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Color For Swipe Back ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġ@ Color Int Ġcolor : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Int Range ( from Ġ= Ġ 0 , Ġto Ġ= Ġ 2 5 5 ) Ġstatus Bar Alpha : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . findViewById < View >( android . R . id . content ) Ġas ĠViewGroup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġcontent View . getChild At ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Bar Height Ġ= Ġget StatusBar Height ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( root View Ġ!= Ġnull Ġ&& Ġroot View Ġis ĠCoord inator Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoord inator Layout Ġ= Ġroot View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord inator Layout . fits System Windows Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View . set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Status Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Alpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Need Request Layout Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View . padding Top Ġ< Ġstatus Bar Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Need Request Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View . set Padding ( 0 , Ġstatus Bar Height , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord inator Layout . post Ġ{ Ġcoord inator Layout . request Layout () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord inator Layout . setStatus Bar BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Status Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Alpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View . set Padding ( 0 , Ġstatus Bar Height , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View . set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Status Color ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Bar Alpha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Transparent For Window ( activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġfun Ġset Light Mode ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset MI UI StatusBar Dark Icon ( activity , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġset Me iz u StatusBar Dark Icon ( activity , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . decor View . system Ui Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġfun Ġset Dark Mode ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset MI UI StatusBar Dark Icon ( activity , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset Me iz u StatusBar Dark Icon ( activity , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . decor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¿®æĶ¹ ĠMI UI ĠV 6 Ġ Ġ ä»¥ä¸Ĭ çĬ¶æĢģ æłı æĸĩåŃĹ é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset MI UI StatusBar Dark Icon ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġdark Icon : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclazz : ĠClass < out ĠWindow ?> Ġ= Ġactivity . window . java Class ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ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 . getMethod ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Extra Flags ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class . java Primitive Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class . java Primitive Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextra Flag Field . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dark Icon ) Ġdark Mode Flag Ġelse Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdark Mode Flag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġe . printStackTrace (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¿®æĶ¹ éŃ ħ æĹı çĬ¶æĢģ æłı åŃĹ ä½ĵ é¢ľèī² ĠFly me Ġ 4 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Me iz u StatusBar Dark Icon ( ĊĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠ Ġdark Icon : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġactivity . 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 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġif Ġ( dark Icon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġor Ġbit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġand Ġbit . inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme iz u Flags . setInt ( lp , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . window . attributes Ġ= Ġlp ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġe . printStackTrace (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ