package Ġorg . mat om oc amp . comp anion . widgets Ċ Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . core . view . isVisible Ċ Ċ /** Ċ Ġ* ĠContent Loading View Mediator Ġcontrols Ġthe Ġvisibility Ġof Ġa ĠView . ĠIt Ġwaits Ġa Ġminimum Ġtime Ċ Ġ* Ġto Ġbe Ġdis missed Ġbefore Ġshowing . ĠOnce Ġvisible , Ġthe Ġview Ġwill Ġbe Ġvisible Ġfor Ċ Ġ* Ġa Ġminimum Ġamount Ġof Ġtime Ġto Ġavoid Ġ" fl ashes " Ġin Ġthe ĠUI Ġwhen Ġan Ġevent Ġcould Ġtake Ċ Ġ* Ġa Ġlarge ly Ġvariable Ġtime Ġto Ġcomplete Ġ( from Ġnone , Ġto Ġa Ġuser Ġper ceiv able Ġamount ). Ċ Ġ* Ċ Ġ* Ġ@ author ĠCh ristop he ĠB ey ls Ċ Ġ*/ Ċ class ĠContent Loading View Mediator ( private Ġval Ġview : ĠView ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġview . add On Attach State ChangeListener ( object Ġ: ĠView . On Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isVisible Ġ&& Ġ! v . isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . post Delayed ( delayed Action , ĠMIN _ DELAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . remove Callbacks ( delayed Action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isVisible Ġ&& Ġv . isVisible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġ- 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdelayed Action Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvisible Ġ= Ġis Visible ĊĠĠĠĠĠĠĠ Ġview . isVisible Ġ= Ġvisible ĊĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġif Ġ( visible ) ĠSystem Clock . uptime Millis () Ġelse Ġ- 1 L ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar ĠstartTime Ġ= Ġ- 1 L ĊĊĠĠĠ Ġvar Ġis Visible Ġ= Ġview . isVisible ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( View Compat . is Attached To Window ( view )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . remove Callbacks ( delayed Action ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ&& ĠstartTime Ġ== Ġ- 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġview Ġafter Ġwaiting Ġfor Ġa Ġminimum Ġdelay . ĠIf Ġduring Ġthat Ġtime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis Visible Ġswitches Ġto Ġfalse , Ġthe Ġview Ġis Ġnever Ġmade Ġvisible . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . post Delayed ( delayed Action , ĠMIN _ DELAY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= ĠSystem Clock . uptime Millis () Ġ- ĠstartTime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( startTime Ġ== Ġ- 1 L Ġ|| Ġdiff Ġ>= ĠMIN _ SHOW _ TIME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġview Ġhas Ġbeen Ġshown Ġlong Ġenough ĠOR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwas Ġnot Ġshown Ġyet . ĠIf Ġit Ġwasn 't Ġshown Ġyet , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit Ġwill Ġjust Ġnever Ġbe Ġshown . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġ- 1 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġview Ġis Ġshown , Ġbut Ġnot Ġlong Ġenough , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġput Ġa Ġdelayed Ġmessage Ġin Ġto Ġhide Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen Ġit 's Ġbeen Ġshown Ġlong Ġenough . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . post Delayed ( delayed Action , ĠMIN _ SHOW _ TIME Ġ- Ġdiff ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMIN _ SHOW _ TIME Ġ= Ġ 5 0 0 L Ġ// Ġms ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMIN _ DELAY Ġ= Ġ 5 0 0 L Ġ// Ġms ĊĠĠĠ Ġ} Ċ }