/* Ċ * ĠCopyright Ġ( C ) Ġ 2 0 1 2 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ * Ċ * Ġ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 . Ċ */ Ċ @ file : Suppress (" DE PREC ATION ") Ċ Ċ package Ġcom . example . android . advanced imm ers iv em ode Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . example . android . common . logger . Log Ċ Ċ /** Ċ Ġ* ĠD emon str ates Ġhow Ġto Ġupdate Ġthe Ġapp 's ĠUI Ġby Ġto g gling Ġimm ers ive Ġmode . Ċ Ġ* ĠCheck boxes Ġare Ġalso Ġmade Ġavailable Ġfor Ġto g gling Ġother ĠUI Ġflags Ġwhich Ġcan Ċ Ġ* Ġalter Ġthe Ġbehavior Ġof Ġimm ers ive Ġmode . Ċ Ġ* ĠTODO : ĠSwitch Ġto Ġandroid . view . Window Insets Controller Ġfor ĠSDK Ġ 3 0 + Ċ Ġ*/ Ċ class ĠAdvanced Imm ers ive Mode Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ CheckBox ] Ġlabeled Ġ" Hide ĠNavigation Ġbar " Ġresource ĠID Ġ[ R . id . flag _ hide _ navbar ], Ġtoggle s Ġthe ĊĠĠĠĠ Ġ* Ġ` set System Ui Visibility ` Ġflag Ġ[ View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ] Ġwhich Ġrequests Ġthat Ġthe ĊĠĠĠĠ Ġ* Ġsystem Ġnavigation Ġbe Ġtemporarily Ġhidden Ġwhen Ġset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Hide Nav Checkbox : ĠCheckBox ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ CheckBox ] Ġlabeled Ġ" Hide ĠStatus ĠBar " Ġresource ĠID Ġ[ R . id . flag _ hide _ stat bar ], Ġtoggle s Ġthe ĊĠĠĠĠ Ġ* Ġ` set System Ui Visibility ` Ġflag Ġ[ View . SYSTEM _ UI _ FLAG _ FULL SCREEN ] Ġwhich Ġrequests Ġthat Ġthe Ġ[ View ] ĊĠĠĠĠ Ġ* Ġgo Ġinto Ġthe Ġnormal Ġfullscreen Ġmode Ġso Ġthat Ġits Ġcontent Ġcan Ġtake Ġover Ġthe Ġscreen Ġwhile Ġstill ĊĠĠĠĠ Ġ* Ġallowing Ġthe Ġuser Ġto Ġinteract Ġwith Ġthe Ġapplication . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Hide StatusBar CheckBox : ĠCheckBox ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ CheckBox ] Ġlabeled Ġ" Enable ĠImm ers ive ĠMode " Ġresource ĠID Ġ[ R . id . flag _ enable _ imm ers ive ], ĊĠĠĠĠ Ġ* Ġtoggle s Ġthe Ġ` set System Ui Visibility ` Ġflag Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE ] Ġwhich Ġrequests Ġthat ĊĠĠĠĠ Ġ* Ġthe Ġ[ View ] Ġwould Ġlike Ġto Ġremain Ġinteractive Ġwhen Ġhiding Ġthe Ġnavigation Ġbar . ĠIf Ġthis Ġflag Ġis ĊĠĠĠĠ Ġ* Ġnot Ġset , Ġ[ View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ] Ġwill Ġbe Ġforce Ġcleared Ġby Ġthe Ġsystem Ġon Ġany ĊĠĠĠĠ Ġ* Ġuser Ġinteraction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Imm ers ive Mode CheckBox : ĠCheckBox ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ CheckBox ] Ġlabeled Ġ" Enable ĠImm ers ive ĠMode Ġ( Sticky )" Ġresource ĠID Ġ[ R . id . flag _ enable _ imm ers ive _ sticky ], ĊĠĠĠĠ Ġ* Ġtoggle s Ġthe Ġ` set System Ui Visibility ` Ġflag Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ] Ġwhich Ġrequests ĊĠĠĠĠ Ġ* Ġthat Ġthe Ġ[ View ] Ġwould Ġlike Ġto Ġremain Ġinteractive Ġwhen Ġhiding Ġthe Ġstatus Ġbar Ġand / or Ġhiding Ġthe ĊĠĠĠĠ Ġ* Ġnavigation Ġbar . ĠUse Ġthis Ġflag Ġto Ġcreate Ġan Ġimm ers ive Ġexperience Ġwhile Ġalso Ġhiding Ġthe Ġsystem ĊĠĠĠĠ Ġ* Ġbars . ĠIf Ġthis Ġflag Ġis Ġnot Ġset , Ġ[ View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ] Ġwill Ġbe Ġforce Ġcleared Ġby ĊĠĠĠĠ Ġ* Ġthe Ġsystem Ġon Ġany Ġuser Ġinteraction , Ġand Ġ[ View . SYSTEM _ UI _ FLAG _ FULL SCREEN ] Ġwill Ġbe Ġforce - cleared ĊĠĠĠĠ Ġ* Ġby Ġthe Ġsystem Ġif Ġthe Ġuser Ġsw ip es Ġfrom Ġthe Ġtop Ġof Ġthe Ġscreen . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Imm ers ive Mode Sticky CheckBox : ĠCheckBox ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ CheckBox ] Ġlabeled Ġ" Enable ĠLow ĠProfile ĠMode " Ġresource ĠID Ġ[ R . id . flag _ enable _ low prof ], ĊĠĠĠĠ Ġ* Ġtoggle s Ġthe Ġ` set System Ui Visibility ` Ġflag Ġ[ View . SYSTEM _ UI _ FLAG _ LOW _ PROFILE ] Ġwhich Ġrequests ĊĠĠĠĠ Ġ* Ġthat Ġthe Ġ[ View ] Ġenter Ġan Ġun ob tr usive Ġ" low Ġprofile " Ġmode . ĠThis Ġis Ġfor Ġuse Ġin Ġgames , Ġbook ĊĠĠĠĠ Ġ* Ġreaders , Ġvideo Ġplayers , Ġor Ġany Ġother Ġ" imm ers ive " Ġapplication Ġwhere Ġthe Ġusual Ġsystem Ġchrome Ġis ĊĠĠĠĠ Ġ* Ġdee med Ġtoo Ġdist r act ing . ĠIn Ġlow Ġprofile Ġmode , Ġthe Ġstatus Ġbar Ġand / or Ġnavigation Ġicons Ġmay Ġdim . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Low Profile CheckBox : ĠCheckBox ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġto Ġdo Ġinitial Ġcreation Ġof Ġa Ġfragment . ĠThis Ġis Ġcalled Ġafter Ġ[ on Attach ] Ġand Ġbefore ĊĠĠĠĠ Ġ* Ġ[ onCreate View ]. ĠNote Ġthat Ġthis Ġcan Ġbe Ġcalled Ġwhile Ġthe Ġfragment 's Ġactivity Ġis Ġstill Ġin Ġthe ĊĠĠĠĠ Ġ* Ġprocess Ġof Ġbeing Ġcreated . ĠAs Ġsuch , Ġyou Ġcan Ġnot Ġrely Ġon Ġthings Ġlike Ġthe Ġactivity 's Ġcontent ĊĠĠĠĠ Ġ* Ġview Ġhierarchy Ġbeing Ġinitialized Ġat Ġthis Ġpoint . ĠIf Ġyou Ġwant Ġto Ġdo Ġwork Ġonce Ġthe Ġactivity ĊĠĠĠĠ Ġ* Ġitself Ġis Ġcreated , Ġsee Ġ[ on Activity Created ]. ĠAny Ġrestored Ġchild Ġfragments Ġwill Ġbe Ġcreated ĊĠĠĠĠ Ġ* Ġbefore Ġthe Ġbase Ġ[ Fragment . onCreate ] Ġmethod Ġreturns . ĠFirst Ġwe Ġcall Ġour Ġsuper 's Ġimplementation ĊĠĠĠĠ Ġ* Ġof Ġ` onCreate `, Ġthen Ġwe Ġcall Ġthe Ġ[ set Has Options Menu ] Ġmethod Ġwith Ġ` true ` Ġto Ġreport Ġthat Ġthis ĊĠĠĠĠ Ġ* Ġfragment Ġwould Ġlike Ġto Ġparticip ate Ġin Ġpop ulating Ġthe Ġoptions Ġmenu Ġby Ġreceiving Ġa Ġcall Ġto ĊĠĠĠĠ Ġ* Ġ[ onCreate Options Menu ] Ġand Ġrelated Ġmethods . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠsavedInstanceState ĠIf Ġthe Ġfragment Ġis Ġbeing Ġre - created Ġfrom Ġa Ġprevious Ġsaved Ġstate , ĊĠĠĠĠ Ġ* Ġthis Ġis Ġthe Ġstate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġto Ġhave Ġthe Ġfragment Ġinstantiate Ġits Ġuser Ġinterface Ġview . ĠThis Ġwill Ġbe Ġcalled Ġbetween ĊĠĠĠĠ Ġ* Ġ[ onCreate ] Ġand Ġ{[ on Activity Created ]. ĠIt Ġis Ġrecommended Ġto Ġ__ only __ Ġinf late Ġthe Ġlayout Ġin Ġthis ĊĠĠĠĠ Ġ* Ġmethod Ġand Ġmove Ġlogic Ġthat Ġoper ates Ġon Ġthe Ġreturned Ġ[ View ] Ġto Ġ[ on View Created ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWe Ġuse Ġour Ġ[ LayoutInflater ] Ġparameter Ġ[ in flater ] Ġto Ġinf late Ġour Ġlayout Ġfile Ġ[ R . layout . fragment _ flags ], ĊĠĠĠĠ Ġ* Ġusing Ġour Ġ[ ViewGroup ] Ġparameter Ġ[ container ] Ġfor Ġits Ġ` LayoutParams ` Ġwithout Ġatt aching Ġto Ġit Ġand ĊĠĠĠĠ Ġ* Ġuse Ġthe Ġ[ View ] Ġthat Ġ[ in flater ] Ġreturns Ġto Ġinitialize Ġour Ġvariable Ġ` val Ġflags View `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWe Ġfind Ġthe Ġ[ CheckBox ] Ġin Ġ` flags View ` Ġwith ĠID Ġ[ R . id . flag _ enable _ low prof ] Ġ( labeled Ġ" Enable ĠLow ĊĠĠĠĠ Ġ* ĠProfile ĠMode ") Ġto Ġinitialize Ġ[ m Low Profile CheckBox ], Ġfind Ġthe Ġ[ CheckBox ] Ġin Ġ` flags View ` Ġwith ĠID ĊĠĠĠĠ Ġ* Ġ[ R . id . flag _ hide _ navbar ] Ġ( labeled Ġ" Hide ĠNavigation Ġbar ") Ġto Ġinitialize Ġ[ m Hide Nav Checkbox ], Ġfind ĊĠĠĠĠ Ġ* Ġthe Ġ[ CheckBox ] Ġin Ġ` flags View ` Ġwith ĠID Ġ[ R . id . flag _ hide _ stat bar ] Ġ( labeled Ġ" Hide ĠStatus ĠBar ") Ġto ĊĠĠĠĠ Ġ* Ġinitialize Ġ[ m Hide StatusBar CheckBox ], Ġfind Ġthe Ġ[ CheckBox ] Ġin Ġ` flags View ` Ġwith ĠID ĊĠĠĠĠ Ġ* Ġ[ R . id . flag _ enable _ imm ers ive ] Ġ( labeled Ġ" Enable ĠImm ers ive ĠMode ") Ġto Ġinitialize Ġ[ m Imm ers ive Mode CheckBox ], ĊĠĠĠĠ Ġ* Ġand Ġfind Ġthe Ġ[ CheckBox ] Ġin Ġ` flags View ` Ġwith ĠID Ġ[ R . id . flag _ enable _ imm ers ive _ sticky ] Ġ( labeled ĊĠĠĠĠ Ġ* Ġ" Enable ĠImm ers ive ĠMode Ġ( Sticky )") Ġto Ġinitialize Ġ[ m Imm ers ive Mode Sticky CheckBox ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWe Ġinitialize Ġour Ġ[ Button ] Ġvariable Ġ` val Ġtoggle Flags Button ` Ġto Ġthe Ġ[ Button ] Ġin Ġ` flags View ` Ġwith ĊĠĠĠĠ Ġ* ĠID Ġ[ R . id . btn _ change Flags ] Ġ( labeled Ġ" Do Ġthings !") Ġand Ġset Ġits Ġ` OnClickListener ` Ġto Ġa Ġlambda ĊĠĠĠĠ Ġ* Ġwhich Ġcalls Ġour Ġmethod Ġ[ toggle Ui Flags ] Ġto Ġhave Ġit Ġapply Ġthe Ġcurrent Ġ[ CheckBox ] Ġselections Ġto ĊĠĠĠĠ Ġ* Ġour ĠUI . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWe Ġinitialize Ġour Ġ[ Button ] Ġvariable Ġ` val Ġpresets Imm ers ive Mode Button ` Ġto Ġthe Ġ[ Button ] Ġin Ġ` flags View ` ĊĠĠĠĠ Ġ* Ġwith ĠID Ġ[ R . id . btn _ imm ers ive ] Ġ( labeled Ġ" Imm ers ive ĠMode ") Ġand Ġset Ġits Ġ` OnClickListener ` Ġto Ġa Ġlambda ĊĠĠĠĠ Ġ* Ġwhich Ġsets Ġthe Ġflags Ġ[ View . SYSTEM _ UI _ FLAG _ FULL SCREEN ], Ġ[ View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ], Ġand ĊĠĠĠĠ Ġ* Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE ] Ġand Ġclears Ġthe Ġflags Ġ[ View . SYSTEM _ UI _ FLAG _ LOW _ PROFILE ], Ġand ĊĠĠĠĠ Ġ* Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ] Ġand Ġdoes Ġthe Ġsame Ġthing Ġto Ġthe Ġchecked Ġstate Ġof Ġthe ĊĠĠĠĠ Ġ* Ġ[ CheckBox ] Ġwhich Ġtoggle s Ġeach Ġof Ġthese Ġflags . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWe Ġinitialize Ġour Ġ[ Button ] Ġvariable Ġ` val Ġpresets Lean back Mode Button ` Ġto Ġthe Ġ[ Button ] Ġin Ġ` flags View ` ĊĠĠĠĠ Ġ* Ġwith ĠID Ġ[ R . id . btn _ lean back ] Ġ( labeled Ġ" Lean back ĠMode ") Ġand Ġset Ġits Ġ` OnClickListener ` Ġto Ġa Ġlambda ĊĠĠĠĠ Ġ* Ġwhich Ġsets Ġthe Ġflags Ġ[ View . SYSTEM _ UI _ FLAG _ FULL SCREEN ], Ġ[ View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ], ĊĠĠĠĠ Ġ* Ġand Ġclears Ġthe Ġflags Ġ[ View . SYSTEM _ UI _ FLAG _ LOW _ PROFILE ], Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE ] Ġand ĊĠĠĠĠ Ġ* Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ] Ġand Ġdoes Ġthe Ġsame Ġthing Ġto Ġthe Ġchecked Ġstate Ġof Ġthe ĊĠĠĠĠ Ġ* Ġ[ CheckBox ] Ġwhich Ġtoggle s Ġeach Ġof Ġthese Ġflags . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNext Ġwe Ġset Ġsome Ġflags Ġwhich Ġwill Ġmake Ġthe Ġcontent Ġappear Ġunder Ġthe Ġnavigation Ġbars , Ġso Ġthat ĊĠĠĠĠ Ġ* Ġshowing Ġor Ġhiding Ġthe Ġnav Ġbars Ġdoesn 't Ġresize Ġthe Ġcontent Ġwindow , Ġwhich Ġcan Ġbe Ġj arr ing . ĠTo ĊĠĠĠĠ Ġ* Ġdo Ġthis Ġwe Ġinitialize Ġour Ġ[ Int ] Ġvariable Ġ` var Ġui Options ` Ġto Ġthe Ġcurrent Ġ` system Ui Visibility ` ĊĠĠĠĠ Ġ* Ġproperty Ġof Ġ` flags View `, Ġthen Ġwe Ġset Ġthese Ġflags Ġin Ġ` ui Options `: ĊĠĠĠĠ Ġ* Ġ Ġ- Ġ[ View . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ] Ġwhich Ġrequests Ġthat Ġthe Ġ[ View ] Ġwould Ġlike Ġits ĊĠĠĠĠ Ġ* Ġ Ġwindow Ġto Ġbe Ġla id Ġout Ġas Ġif Ġit Ġhas Ġrequested Ġ[ View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ], Ġeven Ġif ĊĠĠĠĠ Ġ* Ġ Ġit Ġcurrently Ġhasn 't . ĠThis Ġallows Ġit Ġto Ġavoid Ġartifacts Ġwhen Ġswitching Ġin Ġand Ġout Ġof Ġthat Ġmode , ĊĠĠĠĠ Ġ* Ġ Ġat Ġthe Ġexpense Ġthat Ġsome Ġof Ġits Ġuser Ġinterface Ġmay Ġbe Ġcovered Ġby Ġscreen Ġdecor ations Ġwhen Ġthey ĊĠĠĠĠ Ġ* Ġ Ġare Ġshown . ĊĠĠĠĠ Ġ* Ġ Ġ- Ġ[ View . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ] Ġwhich Ġrequests Ġthat Ġwhen Ġusing Ġother Ġlayout Ġflags , Ġwe ĊĠĠĠĠ Ġ* Ġ Ġwould Ġlike Ġa Ġstable Ġview Ġof Ġthe Ġcontent Ġin sets Ġgiven Ġto Ġ` fit System Windows `. ĠThis Ġmeans Ġthat ĊĠĠĠĠ Ġ* Ġ Ġthe Ġin sets Ġseen Ġthere Ġwill Ġalways Ġrepresent Ġthe Ġworst Ġcase Ġthat Ġthe Ġapplication Ġcan Ġexpect ĊĠĠĠĠ Ġ* Ġ Ġas Ġa Ġcontinuous Ġstate . ĠIn Ġthe Ġstock ĠAndroid ĠUI Ġthis Ġis Ġthe Ġspace Ġfor Ġthe Ġsystem Ġbar , Ġnav Ġbar , ĊĠĠĠĠ Ġ* Ġ Ġand Ġstatus Ġbar , Ġbut Ġnot Ġmore Ġtransient Ġelements Ġsuch Ġas Ġan Ġinput Ġmethod . ĊĠĠĠĠ Ġ* Ġ Ġ- Ġ[ View . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ] Ġwhich Ġrequests Ġthat Ġthe Ġ[ View ] Ġbe Ġla id Ġout Ġas Ġif ĊĠĠĠĠ Ġ* Ġ Ġit Ġhas Ġrequested Ġ[ View . SYSTEM _ UI _ FLAG _ FULL SCREEN ], Ġeven Ġif Ġit Ġcurrently Ġhasn 't . ĠThis Ġallows ĊĠĠĠĠ Ġ* Ġ Ġit Ġto Ġavoid Ġartifacts Ġwhen Ġswitching Ġin Ġand Ġout Ġof Ġthat Ġmode , Ġat Ġthe Ġexpense Ġthat Ġsome Ġof ĊĠĠĠĠ Ġ* Ġ Ġits Ġuser Ġinterface Ġmay Ġbe Ġcovered Ġby Ġscreen Ġdecor ations Ġwhen Ġthey Ġare Ġshown . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠHaving Ġadded Ġthese Ġflags Ġto Ġ` ui Options ` Ġwe Ġset Ġthe Ġ` system Ui Visibility ` Ġproperty Ġof Ġ` flags View ` ĊĠĠĠĠ Ġ* Ġto Ġ` ui Options ` Ġand Ġreturn Ġ' flags View ` Ġto Ġthe Ġcaller . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinflater ĠThe Ġ[ LayoutInflater ] Ġobject Ġthat Ġcan Ġbe Ġused Ġto Ġinf late ĊĠĠĠĠ Ġ* Ġany Ġviews Ġin Ġthe Ġfragment . ĊĠĠĠĠ Ġ* Ġ@ param Ġcontainer ĠIf Ġnon - ` null `, Ġthis Ġis Ġthe Ġparent Ġ[ ViewGroup ] Ġthat Ġthe Ġfragment 's ĠUI Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġattached Ġto . ĠThe Ġfragment Ġshould Ġnot Ġadd Ġthe Ġview Ġitself , Ġbut Ġthis Ġcan Ġbe Ġused Ġto Ġgenerate ĊĠĠĠĠ Ġ* Ġthe Ġ` LayoutParams ` Ġof Ġthe Ġview . ĊĠĠĠĠ Ġ* Ġ@ param Ġstate ĠIf Ġnon - ` null `, Ġthis Ġfragment Ġis Ġbeing Ġre - construct ed Ġfrom Ġa Ġprevious Ġsaved ĊĠĠĠĠ Ġ* Ġstate Ġas Ġgiven Ġhere . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ View ] Ġfor Ġthe Ġfragment 's ĠUI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ Ġstate : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġflags View Ġ= Ġinflater . inflate ( R . layout . fragment _ flags , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm Low Profile CheckBox Ġ= Ġflags View . findViewById < View >( R . id . flag _ enable _ low prof ) Ġas ĠCheckBox ĊĠĠĠĠĠĠĠ Ġm Hide Nav Checkbox Ġ= Ġflags View . findViewById < View >( R . id . flag _ hide _ navbar ) Ġas ĠCheckBox ĊĠĠĠĠĠĠĠ Ġm Hide StatusBar CheckBox Ġ= Ġflags View . findViewById < View >( R . id . flag _ hide _ stat bar ) Ġas ĠCheckBox ĊĠĠĠĠĠĠĠ Ġm Imm ers ive Mode CheckBox Ġ= Ġflags View . findViewById < View >( R . id . flag _ enable _ imm ers ive ) Ġas ĠCheckBox ĊĠĠĠĠĠĠĠ Ġm Imm ers ive Mode Sticky CheckBox Ġ= Ġflags View . findViewById < View >( R . id . flag _ enable _ imm ers ive _ sticky ) Ġas ĠCheckBox ĊĠĠĠĠĠĠĠ Ġval Ġtoggle Flags Button Ġ= Ġflags View . findViewById < View >( R . id . btn _ change Flags ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġtoggle Flags Button . setOnClickListener Ġ{ Ġtoggle Ui Flags () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpresets Imm ers ive Mode Button Ġ= Ġflags View . findViewById < View >( R . id . btn _ imm ers ive ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġpresets Imm ers ive Mode Button . setOnClickListener Ġ{ Ġ// ĠBEGIN _ INCLUDE ( imm ers ive _ presets ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġimm ers ive Ġmode , Ġthe ĠFULL SCREEN , ĠH IDE _ HAV IG ATION Ġand ĠI MM ER SIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġflags Ġshould Ġbe Ġset Ġ( you Ġcan Ġuse ĠI MM ER SIVE _ STICK Y Ġinstead Ġof ĠI MM ER SIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġas Ġappropriate Ġfor Ġyour Ġapp ). Ġ ĠThe ĠLOW _ PROFILE Ġflag Ġshould Ġbe Ġcleared . ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠImm ers ive Ġmode Ġis Ġprimarily Ġfor Ġsituations Ġwhere Ġthe Ġuser Ġwill Ġbe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinteracting Ġwith Ġthe Ġscreen , Ġlike Ġgames Ġor Ġreading Ġbooks . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġui Options Ġ= Ġflags View . system Ui Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ LOW _ PROFILE . inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y . inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags View . system Ui Visibility Ġ= Ġui Options ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE ( imm ers ive _ presets ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdump Flag State To Log ( ui Options ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġbelow Ġcode Ġjust Ġupdates Ġthe Ġcheck boxes Ġto Ġreflect Ġwhich Ġflags Ġhave Ġbeen Ġset . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Low Profile CheckBox . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hide Nav Checkbox . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hide StatusBar CheckBox . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Imm ers ive Mode CheckBox . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Imm ers ive Mode Sticky CheckBox . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpresets Lean back Mode Button Ġ= Ġflags View . findViewById < View >( R . id . btn _ lean back ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġpresets Lean back Mode Button . setOnClickListener Ġ{ Ġ// ĠBEGIN _ INCLUDE ( lean back _ presets ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġlean back Ġmode , Ġonly Ġthe ĠH IDE _ NA VE Ġand ĠH IDE _ STATUS BAR Ġflags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġbe Ġchecked . Ġ ĠIn Ġthis Ġcase ĠI MM ER SIVE Ġshould Ġ* not * Ġbe Ġset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsince Ġthis Ġmode Ġis Ġleft Ġas Ġsoon Ġas Ġthe Ġuser Ġto uches Ġthe Ġscreen . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġui Options Ġ= Ġflags View . system Ui Visibility ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ LOW _ PROFILE . inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE . inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y . inv () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags View . system Ui Visibility Ġ= Ġui Options ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE ( lean back _ presets ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdump Flag State To Log ( ui Options ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġbelow Ġcode Ġjust Ġupdates Ġthe Ġcheck boxes Ġto Ġreflect Ġwhich Ġflags Ġhave Ġbeen Ġset . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Low Profile CheckBox . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hide Nav Checkbox . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hide StatusBar CheckBox . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Imm ers ive Mode CheckBox . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Imm ers ive Mode Sticky CheckBox . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetting Ġthese Ġflags Ġmakes Ġthe Ġcontent Ġappear Ġunder Ġthe Ġnavigation ĊĠĠĠĠĠĠĠ Ġ// Ġbars , Ġso Ġthat Ġshowing / h iding Ġthe Ġnav Ġbars Ġdoesn 't Ġresize Ġthe Ġcontent ĊĠĠĠĠĠĠĠ Ġ// Ġwindow , Ġwhich Ġcan Ġbe Ġj arr ing . ĊĠĠĠĠĠĠĠ Ġvar Ġui Options : ĠInt Ġ= Ġflags View . system Ui Visibility ĊĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠ Ġui Options Ġ= Ġui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġflags View . system Ui Visibility Ġ= Ġui Options ĊĠĠĠĠĠĠĠ Ġreturn Ġflags View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHelper Ġmethod Ġto Ġdump Ġflag Ġstate Ġto Ġthe Ġlog . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġui Flags ĠSet Ġof ĠUI Ġflags Ġto Ġinspect ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdump Flag State To Log ( ui Flags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ui Flags Ġand ĠView . SYSTEM _ UI _ FLAG _ LOW _ PROFILE Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ LOW _ PROFILE Ġis Ġset ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ LOW _ PROFILE Ġis Ġunset ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( ui Flags Ġand ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ FULL SCREEN Ġis Ġset ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ FULL SCREEN Ġis Ġunset ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( ui Flags Ġand ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġis Ġset ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġis Ġunset ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( ui Flags Ġand ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ IM MER SIVE Ġis Ġset ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ IM MER SIVE Ġis Ġunset ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( ui Flags Ġand ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y Ġis Ġset ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y Ġis Ġunset ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplies Ġthe Ġsystem ĠUI Ġvisibility Ġflags Ġselected Ġby Ġthe Ġchecked Ġand Ġunchecked Ġstate Ġof Ġthe ĊĠĠĠĠ Ġ* Ġ[ CheckBox ]' s Ġof Ġour ĠUI Ġto Ġthe Ġ` system Ui Visibility ` Ġproperty Ġof Ġthe Ġtop - level Ġwindow Ġdecor ĊĠĠĠĠ Ġ* Ġview Ġ( the Ġ` Window ` Ġwhich Ġcontains Ġthe Ġstandard Ġwindow Ġframe / decor ations Ġand Ġour Ġcontent ĊĠĠĠĠ Ġ* Ġinside Ġof Ġthat ). ĠFirst Ġwe Ġinitialize Ġour Ġ[ View ] Ġvariable Ġ` val Ġdecor View ` Ġto Ġthe Ġtop - level ĊĠĠĠĠ Ġ* Ġwindow Ġdecor Ġview , Ġinitialize Ġour Ġ[ Int ] Ġvariable Ġ` val Ġui Options ` Ġto Ġthe Ġ` system Ui Visibility ` ĊĠĠĠĠ Ġ* Ġproperty Ġof Ġ` decor View ` Ġ( its Ġcurrent ĠSystem Ui Visibility Ġflags ), Ġand Ġinitialize Ġour Ġ[ Int ] ĊĠĠĠĠ Ġ* Ġvariable Ġ` var Ġnew Ui Options ` Ġto Ġ` ui Options `. ĠThen Ġwe Ġproceed Ġto Ġcheck Ġthe Ġchecked Ġstate Ġof ĊĠĠĠĠ Ġ* Ġeach Ġ[ CheckBox ] Ġin Ġour ĠUI Ġand Ġset Ġor Ġunset Ġthe ĠSystem Ui Visibility Ġflag Ġthat Ġthey Ġcontrol : ĊĠĠĠĠ Ġ* Ġ Ġ- Ġ[ m Low Profile CheckBox ] Ġsets Ġthe Ġ[ View . SYSTEM _ UI _ FLAG _ LOW _ PROFILE ] Ġflag Ġin Ġ` new Ui Options ` Ġif ĊĠĠĠĠ Ġ* Ġ Ġchecked Ġ( requests Ġthe Ġsystem ĠUI Ġto Ġenter Ġan Ġun ob tr usive Ġ" low Ġprofile " Ġmode Ġwhere Ġthe Ġstatus ĊĠĠĠĠ Ġ* Ġ Ġbar Ġand / or Ġnavigation Ġicons Ġmay Ġdim ). ĠClear s Ġthe Ġflag Ġif Ġunchecked . ĊĠĠĠĠ Ġ* Ġ Ġ- Ġ[ m Hide StatusBar CheckBox ] Ġsets Ġthe Ġ[ View . SYSTEM _ UI _ FLAG _ FULL SCREEN ] Ġflag Ġin Ġ` new Ui Options ` ĊĠĠĠĠ Ġ* Ġ Ġif Ġchecked Ġ( request Ġnon - critical ĠUI Ġbe Ġhidden , Ġsuch Ġas Ġthe Ġstatus Ġbar , Ġthe Ġbar Ġre appe ars ĊĠĠĠĠ Ġ* Ġ Ġwhen Ġthe Ġuser Ġsw ip es Ġit Ġdown ). ĠClear s Ġthe Ġflag Ġif Ġunchecked . ĊĠĠĠĠ Ġ* Ġ Ġ- Ġ[ m Hide Nav Checkbox ] Ġsets Ġthe Ġ[ View . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ] Ġflag Ġin Ġ` new Ui Options ` ĊĠĠĠĠ Ġ* Ġ Ġif Ġchecked Ġ( requests Ġthat Ġthe Ġsystem Ġnavigation Ġbe Ġtemporarily Ġhidden , Ġnav Ġbar Ġnormally ĊĠĠĠĠ Ġ* Ġ Ġinstant ly Ġre appe ars Ġwhen Ġthe Ġuser Ġto uches Ġthe Ġscreen Ġbut Ġ Ġwhen Ġimm ers ive Ġmode Ġis Ġalso Ġenabled , ĊĠĠĠĠ Ġ* Ġ Ġthe Ġnav Ġbar Ġstays Ġhidden Ġuntil Ġthe Ġuser Ġsw ip es Ġit Ġback ). ĠClear s Ġthe Ġflag Ġif Ġunchecked . ĊĠĠĠĠ Ġ* Ġ Ġ- Ġ[ m Imm ers ive Mode CheckBox ] Ġsets Ġthe Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE ] Ġflag Ġin Ġ` new Ui Options ` ĊĠĠĠĠ Ġ* Ġ Ġif Ġchecked Ġ( when Ġenabled , Ġit Ġallows Ġthe Ġuser Ġto Ġswipe Ġthe Ġstatus Ġand / or Ġnav Ġbars Ġoff - screen . ĊĠĠĠĠ Ġ* Ġ ĠWhen Ġthe Ġuser Ġsw ip es Ġthe Ġbars Ġback Ġonto Ġthe Ġscreen , Ġthe Ġflags Ġare Ġcleared Ġand Ġimm ers ive Ġmode ĊĠĠĠĠ Ġ* Ġ Ġis Ġautomatically Ġdisabled ). ĠClear s Ġthe Ġflag Ġif Ġunchecked . ĊĠĠĠĠ Ġ* Ġ Ġ- Ġ[ m Imm ers ive Mode Sticky CheckBox ] Ġsets Ġthe Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ] Ġflag Ġin ĊĠĠĠĠ Ġ* Ġ Ġ` new Ui Options ` Ġif Ġchecked Ġ( similar Ġto Ġ[ View . SYSTEM _ UI _ FLAG _ IM MER SIVE ] Ġbut Ġit Ġuses Ġsemi ĊĠĠĠĠ Ġ* Ġ Ġtransparent Ġbars Ġfor Ġthe Ġnav Ġand Ġstatus Ġbars , Ġand Ġthis ĠUI Ġflag Ġwill Ġ* not * Ġbe Ġcleared Ġwhen ĊĠĠĠĠ Ġ* Ġ Ġthe Ġuser Ġinteract s Ġwith Ġthe ĠUI . ĠWhen Ġthe Ġuser Ġsw ip es , Ġthe Ġbars Ġwill Ġtemporarily Ġappear Ġfor ĊĠĠĠĠ Ġ* Ġ Ġa Ġfew Ġseconds Ġand Ġthen Ġdis appear Ġagain ). ĠClear s Ġthe Ġflag Ġif Ġunchecked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAfter Ġsetting Ġor Ġclearing Ġthe Ġnew ĠUI Ġflags Ġselected Ġby Ġthe Ġ[ CheckBox ]' s Ġin Ġ` new Ui Options ` Ġwe ĊĠĠĠĠ Ġ* Ġset Ġthe Ġ` system Ui Visibility ` Ġto Ġ` new Ui Options `, Ġthen Ġcall Ġour Ġ[ dump Flag State To Log ] Ġmethod Ġwith ĊĠĠĠĠ Ġ* Ġ` ui Options ` Ġto Ġhave Ġit Ġlog Ġthe Ġold ĠUI Ġflags . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtoggle Ui Flags () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠBEGIN _ INCLUDE Ġ( get _ current _ ui _ flags ) ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġ" Decor ĠView " Ġis Ġthe Ġparent Ġview Ġof Ġthe ĠActivity . Ġ ĠIt 's Ġalso Ġconvenient ly Ġthe Ġeasiest ĊĠĠĠĠĠĠĠ Ġ// Ġone Ġto Ġfind Ġfrom Ġwithin Ġa Ġfragment , Ġsince Ġthere 's Ġa Ġhandy Ġhelper Ġmethod Ġto Ġpull Ġit , Ġand ĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġdon 't Ġhave Ġto Ġbother Ġwith Ġpicking Ġa Ġview Ġsomewhere Ġdeeper Ġin Ġthe Ġhierarchy Ġand Ġcalling ĊĠĠĠĠĠĠĠ Ġ// Ġ" findViewById " Ġon Ġit . ĊĠĠĠĠĠĠĠ Ġval Ġdecor View : ĠView Ġ= Ġrequire Activity (). window . decor View ĊĠĠĠĠĠĠĠ Ġval Ġui Options : ĠInt Ġ= Ġdecor View . system Ui Visibility ĊĠĠĠĠĠĠĠ Ġvar Ġnew Ui Options : ĠInt Ġ= Ġui Options ĊĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE Ġ( get _ current _ ui _ flags ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBEGIN _ INCLUDE Ġ( toggle _ low profile _ mode ) ĊĠĠĠĠĠĠĠ Ġ// ĠLow Ġprofile Ġmode Ġdoesn 't Ġresize Ġthe Ġscreen Ġat Ġall , Ġbut Ġit Ġcovers Ġthe Ġnav Ġ& Ġstatus Ġbar ĊĠĠĠĠĠĠĠ Ġ// Ġicons Ġwith Ġblack Ġso Ġthey 're Ġless Ġdist r act ing . Ġ ĠUn like Ġ" full Ġscreen " Ġand Ġ" hide Ġnav Ġbar ," ĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġmode Ġdoesn 't Ġinteract Ġwith Ġimm ers ive Ġmode Ġat Ġall , Ġbut Ġit 's Ġinstruct ive Ġwhen Ġrunning ĊĠĠĠĠĠĠĠ Ġ// Ġthis Ġsample Ġto Ġobserve Ġthe Ġdifferences Ġin Ġbehavior . ĊĠĠĠĠĠĠĠ Ġnew Ui Options Ġ= Ġif Ġ( m Low Profile CheckBox . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ LOW _ PROFILE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ LOW _ PROFILE . inv () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE Ġ( toggle _ low profile _ mode ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBEGIN _ INCLUDE Ġ( toggle _ fullscreen _ mode ) ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġenabled , Ġthis Ġflag Ġhide s Ġnon - critical ĠUI , Ġsuch Ġas Ġthe Ġstatus Ġbar , ĊĠĠĠĠĠĠĠ Ġ// Ġwhich Ġusually Ġshows Ġnotification Ġicons , Ġbattery Ġlife , Ġetc ĊĠĠĠĠĠĠĠ Ġ// Ġon Ġphone - sized Ġdevices . Ġ ĠThe Ġbar Ġre appe ars Ġwhen Ġthe Ġuser Ġsw ip es Ġit Ġdown . Ġ ĠWhen Ġimm ers ive ĊĠĠĠĠĠĠĠ Ġ// Ġmode Ġis Ġalso Ġenabled , Ġthe Ġapp - drawable Ġarea Ġexp ands , Ġand Ġwhen Ġthe Ġstatus Ġbar Ġis Ġsw ip ed ĊĠĠĠĠĠĠĠ Ġ// Ġdown , Ġit Ġappears Ġsemi - transparent ly Ġand Ġslides Ġin Ġover Ġthe Ġapp , Ġinstead Ġof Ġpushing Ġit ĊĠĠĠĠĠĠĠ Ġ// Ġdown . ĊĠĠĠĠĠĠĠ Ġnew Ui Options Ġ= Ġif Ġ( m Hide StatusBar CheckBox . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN . inv () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE Ġ( toggle _ fullscreen _ mode ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBEGIN _ INCLUDE Ġ( toggle _ h iden av _ mode ) ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġenabled , Ġthis Ġflag Ġhide s Ġthe Ġblack Ġnav Ġbar Ġalong Ġthe Ġbottom , ĊĠĠĠĠĠĠĠ Ġ// Ġwhere Ġthe Ġhome / back Ġbuttons Ġare . Ġ ĠThe Ġnav Ġbar Ġnormally Ġinstant ly Ġre appe ars ĊĠĠĠĠĠĠĠ Ġ// Ġwhen Ġthe Ġuser Ġto uches Ġthe Ġscreen . Ġ ĠWhen Ġimm ers ive Ġmode Ġis Ġalso Ġenabled , Ġthe Ġnav Ġbar ĊĠĠĠĠĠĠĠ Ġ// Ġstays Ġhidden Ġuntil Ġthe Ġuser Ġsw ip es Ġit Ġback . ĊĠĠĠĠĠĠĠ Ġnew Ui Options Ġ= Ġif Ġ( m Hide Nav Checkbox . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION . inv () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE Ġ( toggle _ h iden av _ mode ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBEGIN _ INCLUDE Ġ( toggle _ imm ers ive _ mode ) ĊĠĠĠĠĠĠĠ Ġ// ĠImm ers ive Ġmode Ġdoesn 't Ġdo Ġanything Ġwithout Ġat Ġleast Ġone Ġof Ġthe Ġprevious Ġflags ĊĠĠĠĠĠĠĠ Ġ// Ġenabled . Ġ ĠWhen Ġenabled , Ġit Ġallows Ġthe Ġuser Ġto Ġswipe Ġthe Ġstatus Ġand / or Ġnav Ġbars ĊĠĠĠĠĠĠĠ Ġ// Ġoff - screen . Ġ ĠWhen Ġthe Ġuser Ġsw ip es Ġthe Ġbars Ġback Ġonto Ġthe Ġscreen , Ġthe Ġflags Ġare Ġcleared ĊĠĠĠĠĠĠĠ Ġ// Ġand Ġimm ers ive Ġmode Ġis Ġautomatically Ġdisabled . ĊĠĠĠĠĠĠĠ Ġnew Ui Options Ġ= Ġif Ġ( m Imm ers ive Mode CheckBox . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE . inv () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE Ġ( toggle _ imm ers ive _ mode ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBEGIN _ INCLUDE Ġ( toggle _ imm ers ive _ mode _ sticky ) ĊĠĠĠĠĠĠĠ Ġ// ĠThere 's Ġactually Ġtwo Ġforms Ġof Ġimm ers ive Ġmode , Ġnormal Ġand Ġ" sticky ". Ġ ĠSt icky Ġimm ers ive Ġmode ĊĠĠĠĠĠĠĠ Ġ// Ġis Ġdifferent Ġin Ġ 2 Ġkey Ġways : ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġ* ĠUses Ġsemi - transparent Ġbars Ġfor Ġthe Ġnav Ġand Ġstatus Ġbars ĊĠĠĠĠĠĠĠ Ġ// Ġ* ĠThis ĠUI Ġflag Ġwill Ġ* not * Ġbe Ġcleared Ġwhen Ġthe Ġuser Ġinteract s Ġwith Ġthe ĠUI . ĊĠĠĠĠĠĠĠ Ġ// ĠĠ ĠWhen Ġthe Ġuser Ġsw ip es , Ġthe Ġbars Ġwill Ġtemporarily Ġappear Ġfor Ġa Ġfew Ġseconds Ġand Ġthen ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġdis appear Ġagain . ĊĠĠĠĠĠĠĠ Ġnew Ui Options Ġ= Ġif Ġ( m Imm ers ive Mode Sticky CheckBox . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Ui Options Ġand ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y . inv () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE Ġ( toggle _ imm ers ive _ mode _ sticky ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBEGIN _ INCLUDE Ġ( set _ ui _ flags ) ĊĠĠĠĠĠĠĠ Ġ// Set Ġthe Ġnew ĠUI Ġflags . ĊĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= Ġnew Ui Options ĊĠĠĠĠĠĠĠ Ġ// ĠEND _ INCLUDE Ġ( set _ ui _ flags ) ĊĠĠĠĠĠĠĠ Ġdump Flag State To Log ( ui Options ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTAG Ġused Ġfor Ġlogging . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Advanced Imm ers ive Mode Fragment " ĊĠĠĠ Ġ} Ċ }