package Ġir . eas az ade . d ail yn otes Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . interpol ator . view . animation . Fast Out Slow In Interpolator Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . activity _ splash _ screen .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠSpl ash Screen Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠ Ġprivate Ġval Ġsubscriptions Ġ= ĠComposite Disposable () ĊĠ Ġprivate Ġval Ġm Hide Handler Ġ= ĠHandler () ĊĠ Ġprivate Ġvar Ġasked For Permission Before Ġ= Ġfalse ĊĠ Ġprivate Ġval Ġm Hide Part 2 Runnable Ġ= ĠRunnable Ġ{ ĊĠĠĠ Ġ// ĠDelay ed Ġremoval Ġof Ġstatus Ġand Ġnavigator Ġbar ĊĊĠĠĠ Ġ// ĠNote Ġthat Ġsome Ġof Ġthese Ġconstants Ġare Ġnew Ġas Ġof ĠAPI Ġ 1 6 Ġ( J el ly ĠBean ) ĊĠĠĠ Ġ// Ġand ĠAPI Ġ 1 9 Ġ( Kit K at ). ĠIt Ġis Ġsafe Ġto Ġuse Ġthem , Ġas Ġthey Ġare Ġin lined ĊĠĠĠ Ġ// Ġat Ġcompile - time Ġand Ġdo Ġnothing Ġon Ġearlier Ġdevices . ĊĠĠĠ Ġm Splash Logo . system Ui Visibility Ġ= ĊĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LOW _ PROFILE Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION ĊĠ Ġ} ĊĠ Ġprivate Ġval Ġm Show Part 2 Runnable Ġ= ĠRunnable Ġ{ ĊĠĠĠ Ġ// ĠDelay ed Ġdisplay Ġof ĠUI Ġelements ĊĠĠĠ Ġsupport ActionBar ?. show () Ċ // ĠĠĠĠĠĠĠ Ġfullscreen _ content _ controls . visibility Ġ= ĠView . VISIBLE ĊĠ Ġ} ĊĠ Ġprivate Ġvar Ġm Visible : ĠBoolean Ġ= Ġfalse ĊĠ Ġprivate Ġval Ġm Hide Runnable Ġ= ĠRunnable Ġ{ Ġhide () Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTouch Ġlistener Ġto Ġuse Ġfor Ġin - layout ĠUI Ġcontrols Ġto Ġdelay Ġhiding Ġthe ĊĠĠ Ġ* Ġsystem ĠUI . ĠThis Ġis Ġto Ġprevent Ġthe Ġj arr ing Ġbehavior Ġof Ġcontrols Ġgoing Ġaway ĊĠĠ Ġ* Ġwhile Ġinteracting Ġwith Ġactivity ĠUI . ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġval Ġm Delay Hide Touch Listener Ġ= ĠView . On Touch Listener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠ Ġif Ġ( AUTO _ HIDE ) Ġ{ ĊĠĠĠĠĠ Ġdelayed Hide ( AUTO _ HIDE _ DELAY _ M ILL IS ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfalse ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) Ċ // ĠĠĠĠĠĠĠ ĠFabric . with ( this , ĠCrash ly t ics ()) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ splash _ screen ) ĊĠĠĠ Ġm Splash Version . text Ġ= ĠApp . get ( this ). getApp Version () ĊĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠ Ġhide () ĊĠĠĠ Ġm Visible Ġ= Ġtrue ĊĊĠĠĠ Ġ// ĠSet Ġup Ġthe Ġuser Ġinteraction Ġto Ġmanually Ġshow Ġor Ġhide Ġthe Ġsystem ĠUI . ĊĠĠĠ Ġm Splash Logo . setOnClickListener Ġ{ Ġtoggle () Ġ} ĊĊĠĠĠ Ġ// ĠUp on Ġinteracting Ġwith ĠUI Ġcontrols , Ġdelay Ġany Ġscheduled Ġhide () ĊĠĠĠ Ġ// Ġoperations Ġto Ġprevent Ġthe Ġj arr ing Ġbehavior Ġof Ġcontrols Ġgoing Ġaway ĊĠĠĠ Ġ// Ġwhile Ġinteracting Ġwith Ġthe ĠUI . ĊĠĠĠ Ġ// Ġdummy _ button . setOn Touch Listener ( m Delay Hide Touch Listener ) ĊĠĠĠ Ġlogo Animate ( m Splash Logo , Ġm Splash Version ) ĊĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) ĊĠĠĠ Ġsubscriptions . add ( ĊĠĠĠĠĠĠĠ ĠObservable . just ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delay ( 4 0 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . computation ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠĠĠ Ġsuper . on Resume () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠ Ġsubscriptions . clear () ĊĠĠĠ Ġsuper . on Pause () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġlogo Animate ( logo : ĠView , Ġversion : ĠView ) Ġ{ ĊĠĠĠ Ġval Ġversion Anim Ġ= ĠObject Animator ĊĠĠĠĠĠĠĠ Ġ. of Float ( version , Ġ" alpha ", Ġ 0 f , Ġ 1 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠFast Out Slow In Interpolator () ĊĠĠĠĠĠĠĠĠĠ Ġstart Delay Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠ Ġadd Listener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġlogo Alpha Anim Ġ= ĠObject Animator ĊĠĠĠĠĠĠĠ Ġ. of Float ( logo , Ġ" alpha ", Ġ 0 f , Ġ 1 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠFast Out Slow In Interpolator () ĊĠĠĠĠĠĠĠĠĠ Ġstart Delay Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠ Ġadd Listener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogo . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġanim Set Ġ= ĠAn imator Set () ĊĠĠĠ Ġanim Set . play ( logo Alpha Anim ). before ( version Anim ) ĊĠĠĠ Ġanim Set . start () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġtoggle () Ġ{ ĊĠĠĠ Ġif Ġ( m Visible ) Ġ{ ĊĠĠĠĠĠ Ġhide () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġshow () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġhide () Ġ{ ĊĠĠĠ Ġ// ĠHide ĠUI Ġfirst ĊĠĠĠ Ġsupport ActionBar ?. hide () Ċ // ĠĠĠĠĠĠĠ Ġfullscreen _ content _ controls . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġm Visible Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠSchedule Ġa Ġrunnable Ġto Ġremove Ġthe Ġstatus Ġand Ġnavigator Ġbar Ġafter Ġa Ġdelay ĊĠĠĠ Ġm Hide Handler . remove Callbacks ( m Show Part 2 Runnable ) ĊĠĠĠ Ġm Hide Handler . post Delayed ( m Hide Part 2 Runnable , ĠUI _ ANIM ATION _ DELAY . to Long ()) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow () Ġ{ ĊĠĠĠ Ġ// ĠShow Ġthe Ġsystem Ġbar ĊĠĠĠ Ġm Splash Logo . system Ui Visibility Ġ= ĊĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠ Ġm Visible Ġ= Ġtrue ĊĊĠĠĠ Ġ// ĠSchedule Ġa Ġrunnable Ġto Ġdisplay ĠUI Ġelements Ġafter Ġa Ġdelay ĊĠĠĠ Ġm Hide Handler . remove Callbacks ( m Hide Part 2 Runnable ) ĊĠĠĠ Ġm Hide Handler . post Delayed ( m Show Part 2 Runnable , ĠUI _ ANIM ATION _ DELAY . to Long ()) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠS chedules Ġa Ġcall Ġto Ġhide () Ġin Ġ[ delay Millis ], Ġcancel ing Ġany ĊĠĠ Ġ* Ġpreviously Ġscheduled Ġcalls . ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġdelayed Hide ( delay Millis : ĠInt ) Ġ{ ĊĠĠĠ Ġm Hide Handler . remove Callbacks ( m Hide Runnable ) ĊĠĠĠ Ġm Hide Handler . post Delayed ( m Hide Runnable , Ġdelay Millis . to Long ()) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġor Ġnot Ġthe Ġsystem ĠUI Ġshould Ġbe Ġauto - hidden Ġafter ĊĠĠĠĠ Ġ* Ġ[ AUTO _ HIDE _ DELAY _ M ILL IS ] Ġmilliseconds . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠAUTO _ HIDE Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġ[ AUTO _ HIDE ] Ġis Ġset Fab , Ġthe Ġnumber Ġof Ġmilliseconds Ġto Ġwait Ġafter ĊĠĠĠĠ Ġ* Ġuser Ġinteraction Ġbefore Ġhiding Ġthe Ġsystem ĠUI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠAUTO _ HIDE _ DELAY _ M ILL IS Ġ= Ġ 3 0 0 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSome Ġolder Ġdevices Ġneeds Ġa Ġsmall Ġdelay Ġbetween ĠUI Ġwidget Ġupdates ĊĠĠĠĠ Ġ* Ġand Ġa Ġchange Ġof Ġthe Ġstatus Ġand Ġnavigator Ġbar . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠUI _ ANIM ATION _ DELAY Ġ= Ġ 3 0 0 ĊĠ Ġ} Ċ }