package Ġres on ance . http . http downloader . activities Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġres on ance . http . http downloader . R Ċ import Ġres on ance . http . http downloader . core . log Ċ import Ġres on ance . http . http downloader . helpers . as Html Ċ Ċ @ Suppress Lint (" Registered ") Ċ open Ġclass ĠParent Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġ@ Suppress (" Private PropertyName ") ĊĠĠĠ Ġval Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠ Ġenum Ġclass ĠStatus Ġ{ ĠLO ADING , ĠLO ADED , ĠFAILED Ġ} ĊĊĠĠĠ Ġfun Ġdismiss Sn ackBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġsn ackBar ?. dismiss (); Ġsn ackBar Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġon Sn ackBar Dismiss ?. invoke () ĊĠĠĠĠĠĠĠ Ġon Sn ackBar Dismiss Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġsn ackBar : ĠSn ackbar ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Sn ackBar Dismiss : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġfun Ġshow Sn ackBar ( ĊĠĠĠĠĠĠĠ Ġmsg : ĠString , ĊĠĠĠĠĠĠĠ Ġbtn Txt : ĠString Ġ= Ġ" OK ", ĊĠĠĠĠĠĠĠ Ġduration : ĠInt Ġ= ĠSn ackbar . LENGTH _ IN DEFIN ITE , ĊĠĠĠĠĠĠĠ Ġon Dismiss : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠonClick : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" Simple Activity ", Ġ" show Sn ackBar : Ġ", Ġmsg , Ġbtn Txt , Ġduration , Ġon Dismiss , ĠonClick ) ĊĠĠĠĠĠĠĠ Ġon Sn ackBar Dismiss Ġ= Ġon Dismiss ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( findViewById ( R . id . parent View ), Ġmsg . as Html (), Ġduration ). also Ġ{ Ġsn ackBar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv : ĠTextView Ġ= Ġsn ackBar . view . findViewById ( R . id . sn ackbar _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv . max Lines Ġ= Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġclicked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( duration Ġ!= ĠSn ackbar . LENGTH _ IN DEFIN ITE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sn ackBar Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! clicked ) Ġon Sn ackBar Dismiss ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sn ackBar Dismiss Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( duration Ġ== ĠSn ackbar . LENGTH _ SHORT ) Ġ 2 0 0 0 L Ġelse Ġ 3 5 0 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackBar . setAction ( btn Txt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclicked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sn ackBar ?. also Ġ{ Ġit . dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sn ackBar Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sn ackBar ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sn ackBar Dismiss ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sn ackBar Dismiss Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sn ackBar Ġ= Ġsn ackBar ; Ġsn ackBar . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠInt . dp : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= Ġresources . display Metrics ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġthis . toFloat (), Ġmetrics ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () ĊĠĠĠĠĠĠĠ Ġ} Ċ }