package Ġeu . kan ade . t 4 chi y omi . ui . reader . viewer . web to on Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . Gesture Detector Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . Scale Gesture Detector Ċ import Ġandroid . widget . Frame Layout Ċ Ċ /** Ċ Ġ* ĠFrame Ġlayout Ġwhich Ġcontains Ġa Ġ[ Web to on RecyclerView ]. ĠIt 's Ġneeded Ġto Ġhandle Ġtouch Ġevents , Ċ Ġ* Ġbecause Ġthe Ġre cycler view Ġis Ġscaled Ġand Ġits Ġtouch Ġevents Ġare Ġtranslated , Ġwhich Ġbreaks Ġthe Ċ Ġ* Ġdetector s . Ċ Ġ* Ċ Ġ* ĠTODO Ġconsider Ġintegr ating Ġthis Ġclass Ġinto Ġ[ Web to on Viewer ]. Ċ Ġ*/ Ċ class ĠWeb to on Frame ( context : ĠContext ) Ġ: ĠFrame Layout ( context ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScale Ġdetector , Ġeither Ġwith Ġpin ch Ġor Ġquick Ġscale . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġscale Detector Ġ= ĠScale Gesture Detector ( context , ĠScale Listener ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF ling Ġdetector . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġfl ing Detector Ġ= ĠGest ure Detector ( context , ĠF ling Listener ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe cycler Ġview Ġadded Ġin Ġthis Ġframe . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġre cycler : ĠWeb to on RecyclerView ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Child At ( 0 ) Ġas ? ĠWeb to on RecyclerView ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDis patches Ġa Ġtouch Ġevent Ġto Ġthe Ġdetector s . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġscale Detector . on Touch Event ( ev ) ĊĠĠĠĠĠĠĠ Ġfl ing Detector . on Touch Event ( ev ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Touch Event ( ev ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠScale Ġlistener Ġused Ġto Ġdelegate Ġevents Ġto Ġthe Ġre cycler Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠScale Listener Ġ: ĠScale Gesture Detector . Simple On Scale Gesture Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scale Begin ( detector : ĠScale Gesture Detector ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler ?. on Scale Begin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scale ( detector : ĠScale Gesture Detector ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler ?. on Scale ( detector . scale Factor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scale End ( detector : ĠScale Gesture Detector ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler ?. on Scale End () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF ling Ġlistener Ġused Ġto Ġdelegate Ġevents Ġto Ġthe Ġre cycler Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠF ling Listener Ġ: ĠGest ure Detector . Simple On Gesture Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Down ( e : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fl ing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 1 : ĠMotion Event ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 2 : ĠMotion Event ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Y : ĠFloat ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġre cycler ?. zoom Fl ing ( velocity X . toInt (), Ġvelocity Y . toInt ()) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ