package Ġio . do ist . recyclerview ext . flip pers Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Observer Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . On Lifecycle Event Ċ Ċ class ĠDelay ed Flip per Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġlifecycle Owner : ĠLifecycle Owner , ĊĠĠĠ Ġvar Ġdelay : ĠLong Ġ= ĠDEFAULT _ DURATION Ċ ) Ġ: ĠFlip per () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġhandler : ĠHandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġprivate Ġvar Ġdelayed Runnable : ĠRunnable ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Owner . lifecycle . add Observer ( object Ġ: ĠLifecycle Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ DESTROY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun Ġon Destroyed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel Pending Flip () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelayed Runnable Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner . lifecycle . remove Observer ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġreplace Delayed ( ĊĠĠĠĠĠĠĠ Ġout View : ĠView , ĊĠĠĠĠĠĠĠ Ġin View : ĠView , ĊĠĠĠĠĠĠĠ Ġanimated : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġafter Replace Action : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcancel Pending Flip () ĊĠĠĠĠĠĠĠ Ġdelayed Runnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . replace ( out View , Ġin View , Ġafter Replace Action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . replace No Animation ( out View , Ġin View , Ġafter Replace Action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġrunnable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( run nable , Ġdelay ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel Pending Flip () Ġ{ ĊĠĠĠĠĠĠĠ Ġdelayed Runnable ?. let Ġ{ Ġhandler . remove Callbacks ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreplace Internal ( out View : ĠView , Ġin View : ĠView , Ġanimate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcancel Pending Flip () ĊĊĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġanimate Ġif Ġthe Ġout View Ġis Ġnot Ġvisible Ġto Ġavoid Ġb links . ĊĠĠĠĠĠĠĠ Ġval Ġdo Animate Ġ= Ġanimate Ġ&& Ġout View . isVisible ĊĊĠĠĠĠĠĠĠ Ġsuper . replace Internal ( out View , Ġin View , Ġdo Animate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ DURATION : ĠLong Ġ= Ġ 2 5 0 ĊĠĠĠ Ġ} Ċ } Ċ