package Ġcom . hack n ife . imm ers ive Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Build . VERSION Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ Ċ /** Ċ Ġ* Ġauthor Ġ Ġ: ĠHack n ife Ċ Ġ* Ġe - mail Ġ Ġ: Ġ 4 8 8 4 2 8 0 @ qq . com Ċ Ġ* Ġgithub Ġ Ġ: Ġhttp :// github . com / hack n ife Ċ Ġ* Ġproject Ġ: ĠImm ers ive Ċ Ġ*/ ĊĊ Ċ private Ġval Ġstate Map Ġ= Ġhash Map Of < String , ĠState >() Ċ Ċ private Ġfun Ġcompatible 1 9 ( activity : ĠFragment Activity ) Ġ{ ĊĠĠĠ Ġif Ġ( VERSION . SDK _ INT Ġ>= Ġ 1 9 Ġ&& ĠVERSION . SDK _ INT Ġ< Ġ 2 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . window . request Feature ( Window . FEATURE _ NO _ TITLE ) ĊĠĠĠĠĠĠĠ Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) ĊĠĠĠĠĠĠĠ Ġactivity . window ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ NAV IG ATION ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ private Ġfun Ġcompatible 2 1 ( activity : ĠFragment Activity ) Ġ{ ĊĠĠĠ Ġif Ġ( VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . window . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġactivity . window . navigation Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġactivity . window ?. decor View ?. system Ui Visibility Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Ui Flag ( true , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġstate Map . put ( activity . hashCode (). toString (), ĠState ( true , Ġtrue )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġsystem Ui Flag ( status Bar Dark : ĠBoolean , Ġnavigation Bar Dark : ĠBoolean ): ĠInt Ġ{ ĊĠĠĠ Ġvar Ġflag Ġ= Ġ( View . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ) ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ ĠVERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Bar Dark ) Ġflag Ġ= Ġflag Ġor ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( navigation Bar Dark ) Ġflag Ġ= Ġflag Ġor ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ NAV IG ATION _ BAR ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠVERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Bar Dark ) Ġflag Ġ= Ġflag Ġor ĠView . SYSTEM _ UI _ FLAG _ LIGHT _ STATUS _ BAR ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġflag Ċ } ĊĊ Ċ fun ĠAppCompatActivity . set ContentView ( ĊĠĠĠ Ġ@ Layout Res Ġlayout Res : ĠInt , ĊĠĠĠ Ġ@ Color Res Ġstatus Res : ĠInt , ĊĠĠĠ Ġ@ Color Res Ġnavigation Res : ĠInt , ĊĠĠĠ Ġstatus Embed : ĠBoolean , ĊĠĠĠ Ġnavigation Embed : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġcompatible 1 9 ( this ) ĊĠĠĠ Ġval Ġorientation Ġ= ĊĠĠĠĠĠĠĠ ĠImm ers ive Helper . getActivity Orientation For Context ( this ) ĊĠĠĠ Ġif Ġ( orientation Ġ== ĠOrientation ._ 0 Ġ|| Ġorientation Ġ== ĠOrientation ._ 1 8 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set ContentView ( R . layout . activity _ imm ers ive _ vertical ) ĊĠĠĠ Ġ} Ġelse Ġif Ġ( orientation Ġ== ĠOrientation ._ 9 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set ContentView ( R . layout . activity _ imm ers ive _ horizontal _ 9 0 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set ContentView ( R . layout . activity _ imm ers ive _ horizontal _ 2 7 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġcompatible 2 1 ( this ) ĊĠĠĠ Ġval Ġstatus View : ĠStatus View Ġ= Ġthis . findViewById ( R . id . imm ers ive _ status ) ĊĠĠĠ Ġval Ġcontent Ġ= Ġthis . findViewById < Frame Layout >( R . id . imm ers ive _ content ) ĊĠĠĠ Ġval Ġnavigation View : ĠNavigation View Ġ= Ġthis . findViewById ( R . id . imm ers ive _ navigation ) ĊĠĠĠ Ġstatus View . setBackground Resource ( status Res ) ĊĠĠĠ Ġnavigation View . setBackground Resource ( navigation Res ) ĊĠĠĠ Ġif Ġ( status Embed ) Ġstatus View . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġif Ġ( navigation Embed ) Ġnavigation View . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġcontent . addView ( LayoutInflater . from ( this ). inflate ( layout Res , Ġnull )) Ċ } ĊĊ Ċ fun ĠActivity . hide Status () Ġ{ ĊĠĠĠ Ġval Ġstatus View : ĠStatus View ? Ġ= ĠfindViewById ( R . id . imm ers ive _ status ) ĊĠĠĠ Ġif Ġ( status View Ġ!= Ġnull ) Ġstatus View . visibility Ġ= ĠView . GONE Ċ } ĊĊ Ċ fun ĠActivity . is Show Of Status (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġstatus View : ĠStatus View ? Ġ= ĠfindViewById ( R . id . imm ers ive _ status ) ĊĠĠĠ Ġreturn Ġif Ġ( status View Ġ!= Ġnull ) Ġstatus View . visibility Ġ== ĠView . VISIBLE Ġelse Ġfalse Ċ } ĊĊ Ċ fun ĠActivity . is Show Of Navigation (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġnavigation View : ĠNavigation View ? Ġ= ĠfindViewById ( R . id . imm ers ive _ navigation ) ĊĠĠĠ Ġreturn Ġif Ġ( navigation View Ġ!= Ġnull ) Ġnavigation View . visibility Ġ== ĠView . VISIBLE Ġelse Ġfalse Ċ } ĊĊ Ċ fun ĠActivity . show Status () Ġ{ ĊĠĠĠ Ġval Ġstatus View : ĠStatus View ? Ġ= ĠfindViewById ( R . id . imm ers ive _ status ) ĊĠĠĠ Ġif Ġ( status View Ġ!= Ġnull ) Ġstatus View . visibility Ġ= ĠView . VISIBLE Ċ } ĊĊ Ċ fun ĠActivity . hide Navigation () Ġ{ ĊĠĠĠ Ġval Ġnavigation View : ĠNavigation View ? Ġ= ĠfindViewById ( R . id . imm ers ive _ navigation ) ĊĠĠĠ Ġif Ġ( navigation View Ġ!= Ġnull ) Ġnavigation View . visibility Ġ= ĠView . GONE Ċ } ĊĊ Ċ fun ĠActivity . show Navigation () Ġ{ ĊĠĠĠ Ġval Ġnavigation View : ĠNavigation View ? Ġ= ĠfindViewById ( R . id . imm ers ive _ navigation ) ĊĠĠĠ Ġif Ġ( navigation View Ġ!= Ġnull ) Ġnavigation View . visibility Ġ= ĠView . VISIBLE Ċ } Ċ Ċ fun ĠActivity . setContent BackgroundColor (@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġcontent Ġ= ĠfindViewById < View >( R . id . imm ers ive _ content ) ĊĠĠĠ Ġcontent ?. set BackgroundColor ( color ) Ċ } Ċ Ċ fun ĠActivity . setContent BackgroundColor Resource (@ Color Res Ġcolor Res : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġcontent Ġ= ĠfindViewById < View >( R . id . imm ers ive _ content ) ĊĠĠĠ Ġcontent ?. setBackground Resource ( color Res ) Ċ } ĊĊ Ċ fun ĠActivity . setStatus Bar Color (@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġstatus Ġ= ĠfindViewById < View >( R . id . imm ers ive _ status ) ĊĠĠĠ Ġstatus ?. set BackgroundColor ( color ) Ċ } Ċ Ċ fun ĠActivity . setStatus Bar Color Resource (@ Color Res Ġcolor Res : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġstatus Ġ= ĠfindViewById < View >( R . id . imm ers ive _ status ) ĊĠĠĠ Ġstatus ?. setBackground Resource ( color Res ) Ċ } ĊĊ Ċ fun ĠActivity . set NavigationBar Color (@ Color Int Ġcolor : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġnavigation Ġ= ĠfindViewById < View >( R . id . imm ers ive _ navigation ) ĊĠĠĠ Ġnavigation ?. set BackgroundColor ( color ) Ċ } Ċ Ċ fun ĠActivity . set NavigationBar Color Resource (@ Color Res Ġcolor Res : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġnavigation Ġ= ĠfindViewById < View >( R . id . imm ers ive _ navigation ) ĊĠĠĠ Ġnavigation ?. setBackground Resource ( color Res ) Ċ } ĊĊ Ċ fun ĠActivity . setStatus Content Color ( mode : ĠMODE ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnavigation Bar Ġ= Ġstate Map [ this . hashCode (). toString ()] ?. navigation Bar Ġ?: Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== ĠMODE . WHITE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . window . decor View . system Ui Visibility Ġ= Ġsystem Ui Flag ( false , Ġnavigation Bar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Map [ this . hashCode (). toString ()] ?. state Bar Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . window . decor View . system Ui Visibility Ġ= Ġsystem Ui Flag ( true , Ġnavigation Bar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Map [ this . hashCode (). toString ()] ?. state Bar Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠActivity . set Navigation Content Color ( mode : ĠMODE ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Bar Ġ= Ġstate Map [ this . hashCode (). toString ()] ?. state Bar Ġ?: Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== ĠMODE . WHITE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . window . decor View . system Ui Visibility Ġ= Ġsystem Ui Flag ( state Bar , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Map [ this . hashCode (). toString ()] ?. navigation Bar Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . window . decor View . system Ui Visibility Ġ= Ġsystem Ui Flag ( state Bar , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Map [ this . hashCode (). toString ()] ?. navigation Bar Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ fun ĠActivity . setOn Soft Key Board ChangeListener ( ĊĠĠĠ Ġon Soft Key Board ChangeListener : ĠSoft Key Board Kit . On Soft Key Board ChangeListener Ċ ) Ġ{ ĊĠĠĠ Ġval Ġsoft Key Board Listener Ġ= ĠSoft Key Board Kit ( this ) ĊĠĠĠ Ġsoft Key Board Listener . setOn Soft Key Board ChangeListener ( on Soft Key Board ChangeListener ) Ċ } Ċ Ċ fun ĠActivity . root View (): ĠView ? Ġ{ ĊĠĠĠ Ġval Ġgroup Ġ= ĠfindViewById < ViewGroup >( R . id . imm ers ive _ content ) ĊĠĠĠ Ġreturn Ġgroup ?. getChild At ( 0 ) Ċ } Ċ Ċ enum Ġclass ĠMODE Ġ{ ĊĠĠĠ ĠWH ITE , ĠBLACK Ċ } Ċ