/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠK a ush ik ĠN . ĠSan ji Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mind ork s . ka ush ik ns an ji . instagram . demo . utils . display Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . os . Build Ċ import Ġandroid . view .* Ċ import Ġandroidx . activity . Component Activity Ċ import Ġcom . mind ork s . ka ush ik ns an ji . instagram . demo . R Ċ Ċ /** Ċ Ġ* ĠKotlin Ġfile Ġfor Ġextension Ġfunctions Ġto Ġfacilitate ĠFull screen ĠImm ers ive Ġmode Ġsetup Ċ Ġ* Ġfor Ġ` Component Activity `. Ċ Ġ* Ċ Ġ* Ġ( Based Ġon Ġthe Ġarticle Ġ- Ġhttps :// medium . com / sw lh / modify ing - system - ui - visibility - in - android - 1 1 - e 6 6 a 4 1 2 8 8 9 8 b ) Ċ Ġ* Ċ Ġ* Ġ@ author ĠK a ush ik ĠN ĠSan ji Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġon Ġ[ Component Activity ] Ġwhich Ġhide s Ġsystem Ġbars Ġto Ġmake Ġthe Ġ[ Component Activity ] Ċ Ġ* Ġgo Ġfullscreen . Ċ Ġ* Ċ Ġ* ĠIn Ġorder Ġto Ġshow Ġthe Ġ[ Component Activity ] Ġin Ġfullscreen Ġby Ġdefault Ġwhen Ġlaunched , Ġcall Ġto Ġthis Ċ Ġ* Ġextension Ġfunction Ġwhen Ġthe Ġ[ Component Activity . getWindow ] Ġgets Ġthe Ġfocus Ġin Ċ Ġ* Ġ[ Component Activity . on Window Focus Changed ] Ġcallback . Ċ Ġ* Ċ Ġ* ĠFor Ġdevices Ġwith Ġdisplay Ġcut outs , Ġensure Ġto Ġalso Ġcall Ġto Ġ[ show Below Cut out ] Ġin Ġorder Ġto Ġprevent Ċ Ġ* Ġapp Ġcontent Ġjump ing Ġin Ġand Ġout Ġof Ġcut out Ġarea Ġwhenever Ġimm ers ive Ġmode Ġis Ġactivated / de activated . Ċ Ġ* Ċ Ġ* Ġ@ see Ġshow System Ui Ċ Ġ* Ġ@ see Ġshow Below Cut out Ċ Ġ* Ġ@ see Ġadd System Ui Visibility Listener Ċ Ġ*/ Ċ fun ĠComponent Activity . hide System Ui () Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . R ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġdevices Ġwith ĠAndroid ĠR Ġ( API Ġlevel Ġ 3 0 ) Ġand Ġbeyond , ĊĠĠĠĠĠĠĠ Ġ// Ġuse ĠWindow Insets Controller Ġto Ġgo Ġimm ers ive ĊĠĠĠĠĠĠĠ Ġwindow . in sets Controller ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġbehavior Ġof Ġsystem Ġbars Ġto Ġbe Ġreve aled Ġtemporarily Ġonly Ġwhen Ġthe Ġuser Ġinteract s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwith Ġgest ures Ġsuch Ġas Ġsw ip ing Ġfrom Ġthe Ġedge Ġof Ġthe Ġscreen Ġwhere Ġthe Ġbar Ġis Ġhidden . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġprevents Ġreveal ing Ġthe Ġbars Ġon Ġusual Ġtouch / drag / zoom Ġgesture Ġinteractions . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( Alternative Ġto Ġthe Ġdeprecated Ġ" View . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Bars Behavior Ġ= ĠWindow Insets Controller . BE HAV IOR _ SHOW _ TRAN SI ENT _ BAR S _ BY _ SW I PE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe ĠColor Ġof ĠNavigation ĠBar Ġto Ġa Ġtrans luc ent Ġone , Ġso Ġthat Ġit Ġappears Ġtrans luc ent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen Ġreve aled Ġthrough Ġswipe / tap Ġgesture . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( Alternative Ġto Ġthe Ġdeprecated Ġwindow Ġflag Ġ" WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ NAV IG ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= Ġget Color ( R . color . imm ers ive Mode System Bar Color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFinally , Ġhide Ġall Ġthe Ġbars Ġ- Ġnavigation , Ġstatus Ġand Ġcaption Ġbars ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( Alternative Ġto Ġthe Ġdeprecated Ġ" View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION " Ġand Ġ" View . SYSTEM _ UI _ FLAG _ FULL SCREEN ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide ( Window Insets . Type . system Bars ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġdevices Ġnot Ġyet Ġin ĠAndroid ĠR Ġ( API Ġlevel Ġ 3 0 ), ĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġthe Ġlegacy ĠSystem ĠUI ĠVisibility Ġflags Ġto Ġgo Ġimm ers ive ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe ĠSystem ĠUI ĠVisibility Ġflags ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHide ĠNavigation Ġbar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHide ĠStatus Ġbar ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthe Ġapp Ġcontent Ġstays Ġbehind Ġthe Ġbars Ġwhen Ġreve aled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġorder Ġto Ġavoid Ġcontent Ġjump Ġand Ġresize Ġcaused Ġby Ġthe Ġbars Ġbeing Ġreve aled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ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 Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe veal Ġthe Ġbars Ġonly Ġon Ġswipe / tap Ġgesture ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure ĠNavigation Ġbar Ġis Ġtrans luc ent Ġby Ġincluding Ġits Ġwindow Ġflag , Ġso Ġthat Ġit Ġappears ĊĠĠĠĠĠĠĠ Ġ// Ġtrans luc ent Ġwhen Ġreve aled Ġthrough Ġswipe / tap Ġgesture ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ NAV IG ATION ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġon Ġ[ Component Activity ] Ġwhich Ġshows Ġsystem Ġbars Ġto Ġmake Ġthe Ġ[ Component Activity ] Ċ Ġ* Ġreturn Ġfrom Ġfullscreen . ĠApp Ġcontent Ġwill Ġstill Ġappear Ġbehind Ġthe Ġbars Ġin Ġorder Ġto Ġavoid Ġcontent Ċ Ġ* Ġjump Ġand Ġanother Ġlayout Ġmeasure Ġcaused Ġby Ġthe Ġbars Ġbeing Ġreve aled . Ċ Ġ* Ċ Ġ* Ġ@ see Ġhide System Ui Ċ Ġ* Ġ@ see Ġadd System Ui Visibility Listener Ċ Ġ*/ Ċ fun ĠComponent Activity . show System Ui () Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . R ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġdevices Ġwith ĠAndroid ĠR Ġ( API Ġlevel Ġ 3 0 ) Ġand Ġbeyond , ĊĠĠĠĠĠĠĠ Ġ// Ġuse ĠWindow Ġand ĠWindow Insets Controller Ġto Ġreturn Ġfrom Ġimm ers ive ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġthe Ġapp Ġcontent Ġstays Ġbehind Ġthe Ġbars Ġwhen Ġreve aled , ĊĠĠĠĠĠĠĠ Ġ// Ġin Ġorder Ġto Ġavoid Ġcontent Ġjump Ġand Ġresize Ġcaused Ġby Ġthe Ġbars Ġbeing Ġreve aled ĊĠĠĠĠĠĠĠ Ġ// Ġ( Alternative Ġto Ġthe Ġdeprecated Ġ" View . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION " Ġand ĊĠĠĠĠĠĠĠ Ġ// Ġ" View . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ") ĊĠĠĠĠĠĠĠ Ġwindow . set Decor Fits System Windows ( false ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFinally , Ġreveal Ġthe Ġsystem Ġbars ĊĠĠĠĠĠĠĠ Ġwindow . in sets Controller ?. show ( Window Insets . Type . system Bars ()) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġdevices Ġnot Ġyet Ġin ĠAndroid ĠR Ġ( API Ġlevel Ġ 3 0 ), ĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġthe Ġlegacy ĠSystem ĠUI ĠVisibility Ġflags Ġto Ġreturn Ġfrom Ġimm ers ive ĊĊĠĠĠĠĠĠĠ Ġ// ĠRe veal Ġthe Ġbars Ġby Ġensuring Ġthe Ġapp Ġcontent Ġstays Ġbehind Ġthem , ĊĠĠĠĠĠĠĠ Ġ// Ġin Ġorder Ġto Ġavoid Ġcontent Ġjump Ġand Ġresize Ġcaused Ġby Ġthe Ġbars Ġbeing Ġreve aled ĊĠĠĠĠĠĠĠ Ġ// Ġ( Setting Ġthe ĠSystem ĠUI ĠVisibility Ġflags Ġagain Ġclears Ġthe Ġflags Ġpreviously Ġset ) ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ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 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġon Ġ[ Component Activity ] Ġwhich Ġensures Ġapp Ġcontent Ġis Ġshown Ġalways Ċ Ġ* Ġbelow Ġthe Ġdisplay Ġcut outs . Ċ Ġ* Ċ Ġ* ĠApplic able Ġonly Ġto Ġdevices Ġwith Ġ[ Build . VERSION _ CODES . P ] Ġand Ġabove . ĠIn Ġdevices Ġwith Ċ Ġ* Ġ[ Build . VERSION _ CODES . P ] Ġand Ġabove , Ġapp Ġcontent Ġis Ġshown Ġin Ġthe Ġcut out Ġarea Ġby Ġdefault Ġunless Ġthe Ċ Ġ* ĠSystem ĠUI ĠVisibility Ġflags Ġ[ View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ] Ċ Ġ* Ġand Ġ[ View . SYSTEM _ UI _ FLAG _ FULL SCREEN ] Ġare Ġset / cleared Ġcausing Ġthe Ġcontent Ġto Ġjump Ġin Ġand Ġout Ġof Ċ Ġ* Ġcut out Ġarea Ġperforming Ġanother Ġlayout Ġmeasure Ġof Ġthe Ġwindow . ĠHence Ġto Ġavoid Ġthis Ġjump , Ġoverlap Ġand Ċ Ġ* Ġlayout Ġmeasure , Ġwe Ġneed Ġto Ġshow Ġthe Ġcontent Ġbelow Ġthe Ġcut out Ġarea Ġin Ġsuch Ġdevices . Ċ Ġ* Ċ Ġ* ĠTo Ġbe Ġcalled Ġfrom Ġ[ Component Activity . onCreate ]. Ċ Ġ* Ċ Ġ* Ġ@ see Ġhide System Ui Ċ Ġ*/ Ċ @ Target Api ( Build . VERSION _ CODES . P ) Ċ fun ĠComponent Activity . show Below Cut out () Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNever Ġallow Ġthe Ġwindow Ġto Ġoverlap Ġwith Ġthe Ġcut out Ġarea ĊĠĠĠĠĠĠĠ Ġwindow . attributes . layout In Display Cut out Mode Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . LAYOUT _ IN _ DISPLAY _ CUT OUT _ MODE _ NE VER ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġon Ġ[ Window ] Ġwhich Ġregisters Ġa ĠSystem ĠUI Ġvisibility Ġlistener Ċ Ġ* Ġto Ġreceive Ġevents Ġon Ġthe Ġvisibility Ġchange Ġof ĠSystem ĠB ars , Ġin Ġorder Ġto Ġcapture Ġthe Ċ Ġ* Ġcurrent Ġvisibility Ġstate Ġof ĠSystem ĠB ars . Ċ Ġ* Ċ Ġ* Ġ@ param Ġvisibility Listener ĠA ĠLambda Ġto Ġtake Ġaction Ġbased Ġon Ġthe ĠSystem ĠB ars Ġvisibility Ġstate Ċ Ġ* Ġ` isVisible ` Ġargument Ġvalue Ġpassed Ġto Ġit . Ġ` isVisible ` Ġwill Ġbe Ġ` true ` Ġwhen Ġthe ĠSystem ĠB ars Ċ Ġ* Ġare Ġshown ; Ġ` false ` Ġotherwise . Ċ Ġ* Ċ Ġ* ĠTo Ġbe Ġcalled Ġfrom Ġ[ Component Activity . onCreate ]. Ċ Ġ* Ċ Ġ* Ġ@ see Ġhide System Ui Ċ Ġ* Ġ@ see Ġshow System Ui Ċ Ġ*/ Ċ fun ĠWindow . add System Ui Visibility Listener ( visibility Listener : Ġ( isVisible : ĠBoolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . R ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġdevices Ġwith ĠAndroid ĠR Ġ( API Ġlevel Ġ 3 0 ) Ġand Ġbeyond , ĊĠĠĠĠĠĠĠ Ġ// Ġregister Ġlistener Ġon ĠWindow Insets Ġto Ġread Ġthe Ġin sets ĊĠĠĠĠĠĠĠ Ġdecor View . setOn Apply Window Insets Listener Ġ{ Ġview , Ġin sets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġnot Ġinterested Ġin Ġapplying Ġthe Ġin sets Ġourselves Ġsince Ġwe Ġare Ġonly Ġinterested ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġreading Ġthe Ġvisibility Ġof ĠSystem Ġbars , Ġso Ġdelegate Ġapplying Ġthe Ġin sets Ġto Ġthe ĠView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremaining Insets Ġ= Ġview . on Apply Window Insets ( in sets ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInvoke Ġthe Ġlambda Ġto Ġpass Ġthe Ġvisibility Ġstate Ġof ĠSystem Ġbars ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠChecking Ġindividually Ġthe Ġvisibility Ġof ĠNavigation Ġbars Ġand ĠStatus Ġbars , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsince Ġthe ĠCaption Ġbars Ġwhich Ġis Ġpart Ġof Ġsystem Bars () Ġcan Ġbut Ġnot Ġalways Ġbe Ġpresent . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremaining Insets . isVisible ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Insets . Type . navigation Bars () Ġor ĠWindow Insets . Type . status Bars () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn Ġthe Ġremaining Ġin sets Ġpresent Ġafter Ġapplying Ġthem Ġvia Ġthe ĠView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremaining Insets ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġdevices Ġnot Ġyet Ġin ĠAndroid ĠR Ġ( API Ġlevel Ġ 3 0 ), ĊĠĠĠĠĠĠĠ Ġ// Ġregister Ġthe Ġlegacy ĠSystem ĠUI ĠVisibility Ġchange Ġlistener Ġto Ġread Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġcurrent Ġvisibility Ġflags Ġset ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠ Ġdecor View . setOn System Ui Visibility ChangeListener Ġ{ Ġvisibility Flags : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInvoke Ġthe Ġlambda Ġto Ġpass Ġthe Ġvisibility Ġstate Ġof ĠSystem Ġbars ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠChecking Ġthe Ġvisibility Ġof ĠNavigation Ġbars ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġunset , Ġthis Ġflag Ġwill Ġbe Ġ 0 , Ġwhich Ġmeans Ġthe ĠSystem ĠB ars Ġare Ġshown ; Ġotherwise Ġhidden ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( visibility Flags Ġand ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ) Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠExtension Ġfunction Ġon Ġ[ Component Activity ] Ġwhich Ġtoggle s Ġwindow Ġimm ersion Ċ Ġ* Ġbased Ġon Ġthe Ġvalue Ġof Ġ[ imm ers ive Mode ] Ġpassed . Ċ Ġ* Ċ Ġ* Ġ@ param Ġimm ers ive Mode ĠA Ġ[ Boolean ] Ġvalue Ġto Ġtoggle Ġwindow Ġimm ersion . Ċ Ġ* ĠPass Ġ` true ` Ġto Ġgo Ġimm ers ive ; Ġ` false ` Ġotherwise . Ċ Ġ*/ Ċ fun ĠComponent Activity . go Imm ers ive When ( imm ers ive Mode : ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( imm ers ive Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġwe Ġneed Ġto Ġgo Ġimm ers ive , Ġhide Ġthe ĠSystem Ġbars ĊĠĠĠĠĠĠĠ Ġhide System Ui () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġwe Ġneed Ġto Ġreturn Ġfrom Ġimm ers ive , Ġshow Ġthe ĠSystem Ġbars ĊĠĠĠĠĠĠĠ Ġshow System Ui () ĊĠĠĠ Ġ} Ċ }