package Ġcom . nak w one lec . wall paper . sh iny colors Ċ Ċ import Ġandroid . app . Presentation Ċ import Ġandroid . content .* Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . hardware . display . Display Manager Ċ import Ġandroid . hardware . display . Virtual Display Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . service . wall paper . Wall paper Service Ċ import Ġandroid . transition . Transition Manager Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Gesture Detector Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . Surface Ċ import Ġandroid . view . Surface Holder Ċ import Ġandroid . webkit . Web Resource Request Ċ import Ġandroid . webkit . Web Resource Response Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . local broadcast manager . content . Local Broadcast Manager Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . lang . Exception Ċ import Ġjava . net . URL Ċ import Ġjava . util .* Ċ import Ġjava . net . Http URLConnection Ċ Ċ /// Ġhttps :// stackoverflow . com / questions / 5 7 4 5 2 8 2 7 / android - how - to - use - a - virtual display - to - host - a - webview - in - a - wall papers ervice Ċ class ĠMy Wall paper Service : ĠWall paper Service () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġcan Ġhave Ġmultiple Ġengines Ġrunning Ġat Ġonce Ġ( since Ġyou Ġmight Ġhave Ġone Ġon Ġyour Ġhome Ġscreen ĊĠĠĠĠĠĠĠ Ġ// Ġand Ġanother Ġin Ġthe Ġsettings Ġpanel , Ġfor Ġinstance ), Ġso Ġfor Ġdebugging Ġit 's Ġuseful Ġto Ġkeep Ġtrack ĊĠĠĠĠĠĠĠ Ġ// Ġof Ġwhich Ġone Ġis Ġwhich . ĠWe Ġgive Ġeach Ġan Ġid Ġbased Ġon Ġthis Ġnext Engine Id . ĊĠĠĠĠĠĠĠ Ġvar Ġnext Engine Id Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġs ps : ĠSharedPreferences ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġs ps Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate Engine (): ĠEngine Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMy Engine ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠMy Engine ( context : ĠContext ): ĠEngine () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Id Ġ= Ġnext Engine Id ++ ĊĠĠĠĠĠĠĠ Ġval Ġmy Context : ĠContext Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġvar Ġmy WebView : ĠWebView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmy WebView Client : ĠMy WebView Client ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmy Holder : ĠSurface Holder ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmy Presentation : ĠPresentation ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmy Virtual Display : ĠVirtual Display ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmy Message Receiver : ĠMy Broadcast Receiver ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġmy Display Listener : ĠMy Display Listener Ġ= ĠMy Display Listener () ĊĠĠĠĠĠĠĠ Ġvar ĠIs On Surface Changed Executed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġon Vis iv ility Timer : ĠTimer ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġmy Gesture Detector Ġ= ĠGest ure Detector ( my Context , ĠMy Simple On Gesture Listener ()) ĊĠĠĠĠĠĠĠ Ġvar Ġorientation Ġ= ĠConfiguration . OR IENTATION _ POR TRA IT ĊĠĠĠĠĠĠĠ Ġvar Ġx Offset Ġ= Ġ 0 . 5 f ; ĊĠĠĠĠĠĠĠ Ġvar ĠIs Delay Visible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġlog ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" My W PS Ġ$ my Id ", Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġlog Error ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" My W PS Ġ$ my Id ", Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( surface Holder : ĠSurface Holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" onCreate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( surface Holder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Destroy ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Created ( holder : ĠSurface Holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Surface Created ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Surface Created ( holder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Holder Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Message Receiver Ġ= Ġmy Message Receiver ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( my Context ). unregister Receiver ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. run { destroy (); Ġnull } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Presentation ?. run { dismiss (); Ġnull } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Virtual Display ?. run Ġ{ Ġrelease (); Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Destroyed ( holder : ĠSurface Holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Surface Destroyed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Holder Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Message Receiver Ġ= Ġmy Message Receiver ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( my Context ). unregister Receiver ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( getSystem Service ( Context . DISPLAY _ SERVICE ) Ġas ĠDisplay Manager ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . unregister Display Listener ( my Display Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView Ġ= Ġmy WebView ?. run { destroy (); Ġnull } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Presentation Ġ= Ġmy Presentation ?. run { dismiss (); Ġnull } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Virtual Display Ġ= Ġmy Virtual Display ?. run Ġ{ Ġrelease (); Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Surface Destroyed ( holder ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Surface Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder : ĠSurface Holder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Surface Changed ( holder , Ġ$ format , Ġ$ width , Ġ$ height ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Surface Changed ( holder , Ġformat , Ġwidth , Ġheight ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflags Ġ= ĠDisplay Manager . VIRTUAL _ DISPLAY _ FLAG _ OWN _ CONTENT _ ONLY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdensity Ġ= ĠDisplay Metrics . D ENS ITY _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( my WebView Ġ!= Ġnull Ġ&& Ġmy Virtual Display Ġ!= Ġnull Ġ&& Ġmy Presentation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Surface Changed : Ġrotation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Virtual Display !!. resize ( width , height , density ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth > height Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Web view Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . OR IENTATION _ LAND SC APE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Holder !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠConfiguration . OR IENTATION _ LAND SC APE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Web view Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . OR IENTATION _ POR TRA IT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Holder !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠConfiguration . OR IENTATION _ POR TRA IT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIs On Surface Changed Executed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView Ġ= Ġmy WebView ?. run { destroy (); Ġnull } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Presentation Ġ= Ġmy Presentation ?. run { dismiss (); Ġnull } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Virtual Display Ġ= Ġmy Virtual Display ?. run Ġ{ Ġrelease (); Ġnull Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Holder Ġ= Ġholder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Display Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget System Service ( Context . DISPLAY _ SERVICE ) Ġas ĠDisplay Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Virtual Display Ġ= Ġm Display Manager . create Virtual Display ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Virtual Display ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , Ġheight , Ġdensity , Ġholder . surface , Ġflags ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Presentation Ġ= Ġobject : ĠPresentation ( my Context , Ġmy Virtual Display !!. getDisplay ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcancel () Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Display Changed () Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Presentation !!. set ContentView ( R . layout . presentation _ webview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWebView . set Web Contents Debugging Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView Ġ= Ġmy Presentation !!. findViewById < WebView >( R . id . webview _ presentation ) !!. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView Client Ġ= ĠMy WebView Client (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound Ġ= Ġs ps . getBoolean ( Settings . Boolean . Sound . toString (), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . web View Client Ġ= Ġmy WebView Client Ġas ĠMy WebView Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . settings . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdom Storage Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Zoom Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Playback Requires User Gesture Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Agent String Ġ= ĠgetString ( R . string . desktop _ ua ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . load Url ( getString ( R . string . sh iny ol ors _ home _ url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Message Receiver Ġ= ĠMy Broadcast Receiver (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( my Context ). register Receiver ( it , ĠIntent Filter ( intent . Settings . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Display Manager . register Display Listener ( my Display Listener , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= Ġmy Context . resources . configuration . orientation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Presentation !!. show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelayed Notify Colors Changed ( 3 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġdelayed Notify Colors Changed ( delay : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimer (). schedule ( object : ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O _ MR 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Colors Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġdelay ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Visibility Changed ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Visibility Changed ($ visible ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Visibility Changed ( visible ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( visible Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Vis iv ility Timer Ġ= Ġon Vis iv ility Timer ?. run Ġ{ Ġcancel (); Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Vis iv ility Timer Ġ= ĠTimer (). apply { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschedule ( object : Timer Task (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIs Delay Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( isVisible ) Ġmy WebView ?. post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView !!. on Resume () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Vis iv ility Timer Ġ= Ġon Vis iv ility Timer ?. run Ġ{ Ġcancel (); Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIs Delay Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. on Pause () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// Ġprevious Ġcode Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( my WebView Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( visible Ġ== Ġfalse ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. on Pause () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. on Resume () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġlast mult it ouch Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Touch Event ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Touch Event ( x : Ġ${ event . x } Ġy : Ġ${ event . y } Ġraw x : Ġ${ event . raw X } Ġraw y : Ġ${ event . raw Y } Ġpointer Count : Ġ${ event . pointer Count } Ġaction : Ġ${ event . action }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Is Delay Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġlog (" on Touch Event : ĠACTION _ DOWN ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġlog (" on Touch Event : ĠACTION _ UP ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ BUTTON _ PRESS Ġ-> Ġlog (" on Touch Event : ĠACTION _ BUTTON _ PRESS ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ BUTTON _ RELEASE Ġ-> Ġlog (" on Touch Event : ĠACTION _ BUTTON _ RELEASE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Gesture Detector . on Touch Event ( event ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . pointer Count Ġ> Ġ 1 Ġ&& Ġevent . action Ġ== ĠMotion Event . ACTION _ POINTER _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Touch Event : Ġmult it ouch (${ event . pointer Count }) Ġevent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . event Time Ġ- Ġlast mult it ouch Ġ< Ġ 1 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Touch Event : Ġreload ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( intent . Settings . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . Control . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . Control . Back . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Context ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( it ). send Broadcast ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast mult it ouch Ġ= Ġevent . event Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O _ MR 1 ) Ċ // ĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Compute Colors (): ĠWall paper Colors ? Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. let Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . width Ġ!= Ġ 0 Ġ&& Ġit . height Ġ!= Ġ 0 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( it . width , Ġit . height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw ( canvas ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcrop Bitmap : ĠBitmap Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( my WebView !!. width Ġ/ Ġ 2 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġmy Holder !!. surface Frame . right Ġ/ Ġ 2 Ġ< Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrop Bitmap Ġ= Ġbitmap Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrop Bitmap Ġ= ĠBitmap . create Bitmap ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView !!. width Ġ/ Ġ 2 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġmy Holder !!. surface Frame . right Ġ/ Ġ 2 , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Holder !!. surface Frame . right , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Holder !!. surface Frame . bottom Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstorage Ġ= Ġcache Dir Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġ" test . jpg " Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp File Ġ= ĠFile ( storage , ĠfileName ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp File . createNew File () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠFileOutputStream ( temp File ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . JPEG , Ġ 1 0 0 , Ġout ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . close () Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwall paper Colors Ġ= ĠWall paper Colors . from Bitmap ( crop Bitmap ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwall paper Colors Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Compute Colors () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O _ MR 1 ) Ċ // ĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Compute Colors (): ĠWall paper Colors ? Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. let Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Stream ( resources . assets . open (" sample . png ")) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwall paper Colors Ġ= ĠWall paper Colors . from Bitmap ( bitmap ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwall paper Colors Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Compute Colors () Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Offsets Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Offset : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset Step : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Offset Step : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Pixel Offset : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Pixel Offset : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Offsets Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset Step , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Offset Step , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Pixel Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Pixel Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Offsets Changed (${ x Offset }, Ġ${ y Offset }, Ġ${ x Offset Step }, Ġ${ y Offset Step }, Ġ${ x Pixel Offset }, Ġ${ y Pixel Offset }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Offsets Change : Ġhorizontal Bias Ġ= Ġ${ x Offset }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraint Layout Ġ= Ġmy Presentation !!. findViewById < Constraint Layout >( R . id . constraint layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( constraint Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . layout Params Ġ Ġ= Ġ( it . layout Params Ġas ĠConstraint Layout . LayoutParams ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Bias Ġ= Ġx Offset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . x Offset Ġ= Ġx Offset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠMy WebView Client (): ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvar Ġsound Ġ= Ġfalse Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Started ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠWebView ?, Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl : ĠString ?, Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfav icon : ĠBitmap ? Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Started ( view , Ġurl , Ġfav icon ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopen Ġ= Ġthis @ My Engine . my Context . resources . assets . open (" js / Sh iny Colors . user . js ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinput StreamReader Ġ= Ġopen . buffered Reader ( Charsets . UTF _ 8 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġscript Ġ= Ġinput StreamReader . read Text () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. evaluate Javascript (" javascript :"+ Ġscript , Ġ{ Ġvalue Ġ-> Ġ}) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Intercept Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠWebView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest : ĠWeb Resource Request ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠWeb Resource Response ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreplace Images Ġ= ĠarrayOf < String >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 7 f 6 9 7 4 8 1 9 3 9 6 4 6 e 7 3 7 1 fd 3 7 5 9 6 e 0 0 5 5 b 2 6 5 b 2 2 9 c 4 f 9 4 dff ac 3 8 bf 5 1 b 8 7 fce 6 a 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" new bie pr . github . io / Temporary _ K RTL / data / image / my _ page . parts . png ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 3 3 9 f 1 1 3 f 6 3 8 b 0 2 6 3 2 7 dc 3 b 5 f 6 7 8 0 8 3 c 1 cac f 4 9 0 7 3 f 2 fa 8 5 5 7 4 f 4 ae 9 c 7 dde 8 fbb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 3 4 b 6 2 a 9 e 7 c 7 dbc 6 a 6 5 2 3 6 8 6 3 c 9 7 8 4 6 b 0 c adc 7 a 2 7 ca 8 cd 2 ed 0 ff 5 f 5 1 7 7 2 9 1 f 4 0 c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 8 f 5 a 4 6 5 2 a 6 d 1 d 7 a 1 6 0 fa 5 3 c 7 c 0 6 f 2 4 5 4 6 3 0 6 6 3 5 8 eaf 5 9 2 a 4 be 1 8 e 5 a 7 a 6 3 4 f 2 4 a ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 8 3 8 bc 7 4 1 0 6 3 7 9 9 df 0 9 eef 6 f 0 3 2 f 9 7 7 0 4 eb 6 b 8 9 3 2 ec 4 5 ea 5 3 de 3 6 9 0 da 5 b 5 4 a 7 2 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 6 a 9 3 d 1 e 1 2 7 7 ff 6 4 d 8 e 3 8 7 d 0 9 7 0 ee 6 6 7 9 5 7 5 db 7 2 2 c 6 6 c 0 6 9 edc 1 fa 0 1 7 ef 9 3 6 2 f 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 2 ea 5 cb 0 8 f 0 6 1 9 8 ab 5 f 0 8 7 5 0 2 2 1 c 7 2 b 8 def b 8 8 ba 6 6 1 e 6 1 0 0 2 d 5 1 0 3 2 2 e abf 4 4 4 9 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 7 7 b 0 bc 6 5 a 8 7 2 2 4 4 9 de 6 0 7 7 d 0 1 0 3 d 9 cb ca 7 ad 0 8 1 3 cd 2 6 7 9 d 7 bb 1 9 a 3 5 e 6 f 8 f 7 ce 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 2 f 7 aa 4 ddb 3 a 3 4 dcc 2 9 e 0 0 5 3 5 6 2 6 fd 8 2 ca 9 d 1 4 9 6 5 5 8 8 3 bb 5 a 5 a 3 eac 7 bee 2 e 6 9 7 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 8 2 b 7 8 3 0 8 f 0 0 8 8 9 cc 2 fdf ae 6 1 2 fe 1 b 5 bdb 0 a 6 a 1 4 e 1 aa 5 8 6 8 3 3 e 1 3 7 b 5 2 5 eae 0 e 1 f ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/// ĠìĻ ¼ ì ª ½ Ġìĺ¤ ë¥¸ ì ª ½ ĠìĿ´ë ² ¤íĬ¸ Ġë²Ħ íĬ ¼ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 1 6 da 4 6 2 7 eb 3 9 a 4 cfc 9 5 6 4 f 8 be 2 6 3 a 1 2 a 8 1 0 7 4 6 dd 5 ca 2 e 8 de 4 bd 1 9 cdf a 6 d 9 6 9 6 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / a 5 ff ae 3 dda 6 9 9 0 f 5 a 8 8 ed 2 2 8 8 6 3 9 9 b 4 c 3 1 afa 7 d 4 5 7 5 9 b 9 0 ec dc 9 7 9 c 9 0 add 7 b 9 c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / e 9 2 d 5 0 a 2 cf ca 8 c 5 7 f 9 8 4 7 e 5 2 1 f 4 ff 5 da 7 8 8 fbc 1 5 de 5 9 3 d 0 0 2 2 c 7 5 5 ce 6 3 c 0 1 f 0 d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / b 2 2 3 0 9 0 f 1 1 5 e 9 0 3 4 2 4 0 7 c 2 ad bc 7 4 9 1 5 a 1 fc 0 3 1 6 a 5 dd 2 abc 5 9 afe 2 2 0 fb 7 6 b 5 5 cf ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 5 9 0 8 6 5 2 bb 2 4 ee 5 5 b 0 2 b 3 2 1 8 0 bf 6 d 1 6 9 ea 3 1 1 9 3 f 4 2 1 f 7 3 3 f 1 ed 4 6 0 2 da 6 0 1 a 1 1 c 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / f 5 d 2 aeb 7 ed 2 1 3 dd 2 a 1 b 9 4 4 0 d 7 0 ecf 5 8 4 b 8 f 2 dc 4 ef 0 bb 8 7 1 5 5 8 0 9 6 2 ea 0 1 de 3 2 5 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / e 7 1 7 d 7 f 3 3 3 9 8 fa 8 3 4 2 6 d 1 4 f 6 0 aac 9 2 2 9 a 9 f 5 f 7 4 4 3 1 2 2 7 6 9 f 7 dc 5 df 7 4 4 0 9 8 e 5 5 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 4 dbd 4 1 dbc 8 0 a 3 1 2 a 8 4 9 1 dd 9 5 0 4 3 7 0 f 8 9 2 b 7 4 ce 7 5 5 cc cef 4 1 d 8 0 dee 9 2 c 1 b 2 3 c 2 e ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 4 3 4 c 4 ab 4 df 5 d 1 ed 0 c 6 dda 9 8 8 9 d 7 0 5 6 1 2 b 7 f 6 8 9 a 4 9 2 9 8 3 3 bbc 0 b 6 4 e 9 1 e 0 f 5 6 2 a 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / bd 5 cda 7 4 4 ff 8 2 aee 0 bf 5 4 0 7 8 2 8 3 6 0 1 f 9 2 5 fb 9 2 7 ce cfd 1 2 2 6 9 6 5 9 4 de 5 0 0 9 d 8 cc 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / aef 2 9 0 4 1 9 a 4 7 d 1 c 1 ad 5 7 ef 9 2 a 4 8 4 ad 7 b 3 4 4 cda 1 2 a 7 7 2 0 3 6 8 3 8 2 d 9 b 4 4 fe 5 5 1 aff ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sh iny colors . enza . fun / assets / 7 4 c 4 8 4 bca 9 b 8 2 7 a 9 0 0 a 2 6 2 ab 1 f 2 0 cf 3 7 b 6 ce 4 0 fa 2 2 7 4 ea 4 5 9 bb 8 2 5 8 8 4 4 7 6 6 3 1 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( replace ImageUrl Ġin Ġreplace Images ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( request ?. url . toString (). contains ( replace ImageUrl )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( request !!. url . toString ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( url . open Connection () Ġas ĠHttp URLConnection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Ġ= ĠBitmap Factory . decode Stream ( inputStream ). copy ( Bitmap . Config . ARGB _ 8 8 8 8 , true ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġimg . width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( j Ġin Ġ 0 Ġuntil Ġimg . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg . set Pixel ( i , j , ĠColor . arg b ( 0 , 0 , 0 , 0 )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg . compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , Ġba os ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb ais Ġ= ĠByteArrayInputStream ( ba os . toByteArray ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠWeb Resource Response (" image / png ", null , Ġb ais ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/// Ġíı ° íĬ¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( request ?. url . toString (). contains (" sh iny colors . enza . fun / assets / fonts / prim ula - Hum ming Std - E . woff 2 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠWeb Resource Response (" font / woff 2 ", null , this @ My Engine . my Context . resources . assets . open (" prim ula - Hum ming Std - E . woff 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( request ?. url . toString (). contains (" sh iny colors . enza . fun / assets / fonts / prim ula - UD K ak ugo _ Small Pr 6 - B . woff 2 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠWeb Resource Response (" font / woff 2 ", null , this @ My Engine . my Context . resources . assets . open (" prim ula - UD K ak ugo _ Small Pr 6 - B . woff 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( request ?. url . toString (). contains (" new bie pr . github . io / Temporary _ K RTL / data / font / he iti . woff 2 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠWeb Resource Response (" font / woff 2 ", null , this @ My Engine . my Context . resources . assets . open (" he iti . woff 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! sound Ġ&& Ġrequest ?. url . toString (). contains (""" .* \. m 4 a .* """. to Regex ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠWeb Resource Response (" "," ", null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . should Intercept Request ( view , Ġrequest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠMy Broadcast Receiver : ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent ?. getString Extra ( Settings . Control . toString ()) ?. let Ġ{ Ġcommand Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( Settings . Control . valueOf ( command )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . Control . Reload Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Command . Reload ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . load Url ( getString ( R . string . sh iny ol ors _ home _ url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . reload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelayed Notify Colors Changed ( 2 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . Control . Back Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Command . Back ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Back Button ( it , 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Center 1 Button ( it , Ġ 8 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Back Button ( it , 6 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Center 1 Button ( it , Ġ 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Back Button ( it , 2 0 0 ) ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent ?. getString Extra ( Settings . Boolean . toString ()) ?. let Ġ{ Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( Settings . Boolean . valueOf ( b )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . Boolean . Sound Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Boolean . Sound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ps ?. getBoolean ( Settings . Boolean . Sound . toString (), Ġfalse )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb : ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView Client ?. sound Ġ= Ġb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. reload () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġclick Back Button ( it : ĠWebView , Ġdelay : ĠLong Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmotion Event 3 Ġ= ĠMotion Event . obtain ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay - 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay - 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width * 5 0 . 0 f / 1 1 3 6 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . height * 5 8 9 . 0 f / 6 4 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Touch Event ( motion Event 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmotion Event 4 Ġ= ĠMotion Event . obtain ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width * 5 0 . 0 f / 1 1 3 6 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . height * 5 8 9 . 0 f / 6 4 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Touch Event ( motion Event 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġclick Center 1 Button ( it : ĠWebView , Ġdelay : ĠLong Ġ= Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmotion Event Ġ= ĠMotion Event . obtain ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay - 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay - 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width * 5 2 8 . 0 f / 1 1 3 6 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . height * 5 5 5 . 0 f / 6 4 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Touch Event ( motion Event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmotion Event 2 Ġ= ĠMotion Event . obtain ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width * 5 2 8 . 0 f / 1 1 3 6 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . height * 5 5 5 . 0 f / 6 4 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Touch Event ( motion Event 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġclick Center 2 Button ( it : ĠWebView , Ġdelay : ĠLong Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmotion Event 3 Ġ= ĠMotion Event . obtain ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay - 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay - 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width * 5 3 7 . 0 f / 1 1 3 6 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . height * 5 1 1 . 0 f / 6 4 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Touch Event ( motion Event 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmotion Event 4 Ġ= ĠMotion Event . obtain ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . uptime Millis ()- delay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width * 5 3 7 . 0 f / 1 1 3 6 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . height * 5 1 1 . 0 f / 6 4 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Touch Event ( motion Event 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/// Ġhttp :// and r ask ind ler . com / blog / 2 0 1 5 / live - wall paper - on offset changed - scroll ing / ĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠMy Simple On Gesture Listener (): ĠGest ure Detector . Simple On Gesture Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Offset Ġ= Ġ 0 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnumberOf Pages Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// ĠTODO Ġmove Ġto Ġengine ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis On Offsets Changed Working Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdouble Tap Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinfinite Scrolling Enabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scroll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 1 : ĠMotion Event , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 2 : ĠMotion Event , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Y : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Scroll ( (${ e 1 . x }, Ġ${ e 1 . y }, Ġ${ e 1 . action }), Ġ(${ e 2 . x }, Ġ${ e 2 . y }, Ġ${ e 2 . action }), Ġ${ distance X }, Ġ${ distance Y }) ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ My Engine . my Holder ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew X Offset Ġ= Ġx Offset Ġ+ Ġdistance X Ġ/ Ġit . surface Frame . width () Ġ/ ĠnumberOf Pages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset Ġ= Ġnew X Offset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! infinite Scrolling Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Ġnew X Offset Ġ> Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Ġnew X Offset Ġ< Ġ 0 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Offset Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Scroll ( e 1 , Ġe 2 , Ġdistance X , Ġdistance Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fl ing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 1 : ĠMotion Event , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 2 : ĠMotion Event , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Y : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Fl ing ( (${ e 1 . x }, Ġ${ e 1 . y }, Ġ${ e 1 . action }), Ġ(${ e 2 . x }, Ġ${ e 2 . y }, Ġ${ e 2 . action }), Ġ${ velocity X }, Ġ${ velocity Y }) ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġend Value Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X Ġ> Ġ 0 Ġ-> Ġ( x Offset Ġ- Ġ( x Offset Ġ% Ġ( 1 f Ġ/ ĠnumberOf Pages ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ( x Offset Ġ- Ġ( x Offset Ġ% Ġ( 1 f Ġ/ ĠnumberOf Pages )) Ġ+ Ġ( 1 Ġ/ ĠnumberOf Pages )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! infinite Scrolling Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( end Value < 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( end Value > 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Value Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" x Offset : Ġ${ x Offset }, Ġend Value : Ġ${ end Value }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Fl ing ( e 1 , Ġe 2 , Ġvelocity X , Ġvelocity Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Tap Up ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Single Tap Up ( (${ e . x }, Ġ${ e . y }, Ġ${ e . action }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( my WebView Ġ!= Ġnull Ġ&& Ġmy Holder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( orientation Ġ== ĠConfiguration . OR IENTATION _ POR TRA IT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . setLocation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ( my WebView !!. width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġmy Holder !!. surface Frame . right )* this @ My Engine . x Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . setLocation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġmy WebView !!. height / 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġmy Holder !!. surface Frame . height ()/ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" new Ġx : Ġ" Ġ+ Ġe . x Ġ+ Ġ" Ġy : Ġ" Ġ+ Ġe . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( determine Valid Area ( my WebView !!. width , Ġmy WebView !!. height , Ġe )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . action Ġ= ĠMotion Event . ACTION _ DOWN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView !!. on Touch Event ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . action Ġ= ĠMotion Event . ACTION _ UP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView !!. on Touch Event ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Single Tap Up ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Tap Confirmed ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Single Tap Confirmed ( (${ e . x }, Ġ${ e . y }, Ġ${ e . action }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Single Tap Confirmed ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Double Tap ( e : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Double Tap ( (${ e . x }, Ġ${ e . y }, Ġ${ e . action }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Double Tap ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġdetermine Valid Area ( webview Width : ĠInt , Ġweb view Height : ĠInt , Ġe : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠWIDTH Ġ= Ġ 1 1 3 6 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠHEIGHT Ġ= Ġ 6 4 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . x Ġ< Ġweb view Width *( 3 1 5 f )/ WIDTH Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y Ġ> Ġweb view Height * 5 0 0 . 0 f / HEIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . x Ġ> Ġweb view Width * 3 2 5 . 0 f / WIDTH Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y Ġ> Ġweb view Height * 5 1 5 . 0 f / HEIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . x Ġ> Ġweb view Width *( 8 1 0 f )/ WIDTH Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y Ġ> Ġweb view Height * 4 8 0 . 0 f / HEIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . x Ġ> Ġweb view Width *( 8 8 5 f )/ WIDTH Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y Ġ> Ġweb view Height * 4 1 0 . 0 f / HEIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . x Ġ> Ġweb view Width *( 7 9 0 f )/ WIDTH Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y Ġ< Ġweb view Height * 7 5 . 0 f / HEIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . y Ġ< Ġweb view Height * 5 5 . 0 f / HEIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . x Ġ< Ġweb view Width *( 2 2 0 f )/ WIDTH Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y Ġ< Ġweb view Height * 1 5 0 . 0 f / HEIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e . x Ġ< Ġweb view Width *( 8 0 f )/ WIDTH Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . y Ġ< Ġweb view Height * 3 7 0 . 0 f / HEIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/// Ġhttps :// stackoverflow . com / questions / 9 9 0 9 0 3 7 / how - to - detect - screen - rotation - through - 1 8 0 - degrees - from - land scape - to - land scape - or ĊĠĠĠĠĠĠĠ Ġ/// Ġhttps :// jam ss oft . t istory . com / 1 0 4 ĊĠĠĠĠĠĠĠ Ġinner Ġclass ĠMy Display Listener (): ĠDisplay Manager . Display Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġget System Service ( Context . DISPLAY _ SERVICE ) Ġas ĠDisplay Manager ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Display Added ( display Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Display Ġ# ${ display Id } Ġadded ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Display Removed ( display Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Display Ġ# ${ display Id } Ġremoved ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Display Changed ( display Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" Display Ġ# ${ display Id } Ġchanged ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! Is On Surface Changed Executed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay . display s . isNotEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( display . display s [ 0 ]. rotation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSurface . ROT ATION _ 0 Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSurface . ROT ATION _ 9 0 Ġ-> Ġ 2 7 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSurface . ROT ATION _ 1 8 0 Ġ-> Ġ 1 8 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSurface . ROT ATION _ 2 7 0 Ġ-> Ġ 9 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig _ orientation Ġ= Ġwhen ( angle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 1 8 0 , Ġ 3 6 0 Ġ-> ĠConfiguration . OR IENTATION _ POR TRA IT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 0 , Ġ 2 7 0 Ġ-> ĠConfiguration . OR IENTATION _ LAND SC APE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠConfiguration . OR IENTATION _ UNDEFINED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ My Engine . orientation Ġ= Ġconfig _ orientation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Display Changed (): Ġorientation : Ġ${ config _ orientation } Ġrun Ġinstead Ġof Ġon Surface Changed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy WebView ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( angle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ 3 6 0 Ġ-> Ġit . rotation Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 0 Ġ-> Ġit . rotation Ġ= 2 7 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 8 0 Ġ-> Ġit . rotation Ġ= 1 8 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 7 0 Ġ-> Ġit . rotation Ġ= 9 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Web view Layout ( it , Ġmy Context . resources . configuration . orientation , Ġmy Holder !! , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġchange Web view Layout ( webview : ĠWebView , Ġorientation : ĠInt , Ġholder : ĠSurface Holder , Ġbug fix : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( orientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . OR IENTATION _ POR TRA IT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . OR IENTATION _ UNDEFINED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb view . layout Params ĠĠ Ġ= Ġ( webview . layout Params Ġas ĠConstraint Layout . LayoutParams ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 0 F , Ġresources . display Metrics ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= ĠConstraint Layout . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdimension Ratio Ġ= Ġ" 1 6 : 9 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . OR IENTATION _ LAND SC APE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb view . layout Params ĠĠ Ġ= Ġ( webview . layout Params Ġas ĠConstraint Layout . LayoutParams ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( bug fix ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġholder . surface Frame . height () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġholder . surface Frame . height ()* 1 6 / 9 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġholder . surface Frame . width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġholder . surface Frame . width ()* 1 6 / 9 + 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdimension Ratio Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }