package Ġcom . ang cy o . widget . layout . touch Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gesture Detector Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Configuration Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . Over Scroller Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . core . view . Gesture Detector Compat Ċ import Ġcom . ang cy o . widget . base . is Touch Down Ċ import Ġcom . ang cy o . widget . base . is Touch Finish Ċ import Ġkotlin . math . abs Ċ Ċ /** Ċ Ġ* ĠæĶ¯æĮģ Ġ åĽĽ æĸ¹åĲĳ æīĭ åĬ¿ Ċ Ġ* ĠEmail : ang cy o @ 1 2 6 . com Ċ Ġ* Ġ@ author Ġang cy o Ċ Ġ* Ġ@ date Ġ 2 0 1 7 / 1 0 / 1 3 Ġ 1 4 : 5 9 Ċ Ġ*/ Ċ open Ġclass ĠTouch Layout ( context : ĠContext , Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull ) Ġ: ĊĠĠĠ ĠFrame Layout ( context , Ġattribute Set ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** å½ĵ æ»ļ åĬ¨ è·Ŀç¦» å¤§äºİ å¤ļå°ĳ æĹ¶ , Ġ è§Ĩ ä¸º æ»ļ åĬ¨ äºĨ */ ĊĠĠĠĠĠĠĠ Ġvar Ġscroll Distance S lop Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ/** å½ĵ Fl ing éĢŁåº¦ å¤§äºİ å¤ļå°ĳ æĹ¶ , Ġ è§Ĩ ä¸º Fl ing */ ĊĠĠĠĠĠĠĠ Ġvar Ġfl ing Velocity S lop Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHANDLE _ TO UCH _ TYPE _ DISPATCH Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠHANDLE _ TO UCH _ TYPE _ INTER CEPT Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** æīĭ æĮĩ æĮĩåĲĳ ç§»åĬ¨ çļĦ 4 ä¸ª æĸ¹åĲĳ */ ĊĠĠĠ Ġenum Ġclass ĠOR IENTATION Ġ{ ĠLEFT , ĠRIGHT , ĠTOP , ĠBOTTOM Ġ} ĊĊĠĠĠ Ġ/** éĩĩçĶ¨ ä»Ģä¹Ī æĸ¹å¼ı , Ġ å¤ĦçĲĨ touch äºĭä»¶ Ġ*/ ĊĠĠĠ Ġvar Ġhandle Touch Type Ġ= ĠHANDLE _ TO UCH _ TYPE _ INTER CEPT ĊĊĠĠĠ Ġval Ġover Scroller Ġ= ĠOver Scroller ( context ) ĊĊĠĠĠ Ġvar Ġfirst Motion Event : ĠMotion Event ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġsecond Motion Event : ĠMotion Event ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġtouch Down X Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġtouch Down Y Ġ= Ġ 0 f ĊĊĠĠĠ Ġvar Ġtouch Event X Ġ= Ġ 0 f ĊĠĠĠ Ġvar Ġtouch Event Y Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** æĺ¯åĲ¦ å¤Ħ äºİ éķ¿ æĮī çĬ¶æĢģ ä¸ĭ */ ĊĠĠĠ Ġvar Ġis Long Press Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġscaled Touch S lop Ġ= Ġ 0 ĊĊĠĠĠ Ġ// < editor - fold Ġdesc =" æīĭ åĬ¿ å¤ĦçĲĨ "> ĊĊĠĠĠ Ġvar Ġlong Press Runnable Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġperform Long Click () ĊĠĠĠĠĠĠĠ Ġis Long Press Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* çĶ¨æĿ¥ æ£Ģæµĭ æīĭ æĮĩ æ»ĳ åĬ¨ æĸ¹åĲĳ */ ĊĠĠĠ Ġval Ġorientation Gesture Detector Ġ= ĊĠĠĠĠĠĠĠ ĠGest ure Detector Compat ( context , Ġobject Ġ: ĠGest ure Detector . Simple On Gesture Listener () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fl ing ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 1 : ĠMotion Event ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 2 : ĠMotion Event ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Y : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// L . e (" call : Ġon Fl ing Ġ-> Ġ\ n $ e 1 Ġ\ n $ e 2 Ġ\ n $ velocity X Ġ$ velocity Y ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Motion Event Ġ= Ġe 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Motion Event Ġ= Ġe 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġabs X Ġ= Ġabs ( velocity X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġabs Y Ġ= Ġabs ( velocity Y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs X Ġ> Ġfl ing Velocity S lop Ġ|| Ġabs Y Ġ> Ġfl ing Velocity S lop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs Y Ġ> Ġabs X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç« ĸ çĽ´ æĸ¹åĲĳ çļĦ Fl ing æĵįä½ľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Fl ing Change ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( velocity Y Ġ> Ġ 0 ) ĠOR IENTATION . BOTTOM Ġelse ĠOR IENTATION . TOP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( abs X Ġ> Ġabs Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ°´ å¹³ æĸ¹åĲĳ çļĦ Fl ing æĵįä½ľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Fl ing Change ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( velocity X Ġ> Ġ 0 ) ĠOR IENTATION . RIGHT Ġelse ĠOR IENTATION . LEFT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Long Press Runnable () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scroll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 1 : ĠMotion Event ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 2 : ĠMotion Event ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance X : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Y : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// L . e (" call : Ġon Scroll Ġ-> Ġ\ n $ e 1 Ġ\ n $ e 2 Ġ\ n $ distance X Ġ$ distance Y ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Motion Event Ġ= Ġe 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Motion Event Ġ= Ġe 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġabs X Ġ= Ġabs ( distance X ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġabs Y Ġ= Ġabs ( distance Y ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs X Ġ> Ġscroll Distance S lop Ġ|| Ġabs Y Ġ> Ġscroll Distance S lop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs Y Ġ> Ġabs X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç« ĸ çĽ´ æĸ¹åĲĳ çļĦ Scroll æĵįä½ľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Scroll Change ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( distance Y Ġ> Ġ 0 ) ĠOR IENTATION . TOP Ġelse ĠOR IENTATION . BOTTOM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( abs X Ġ> Ġabs Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ°´ å¹³ æĸ¹åĲĳ çļĦ Scroll æĵįä½ľ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Scroll Change ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( distance X Ġ> Ġ 0 ) ĠOR IENTATION . LEFT Ġelse ĠOR IENTATION . RIGHT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Long Press Runnable () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Long Press ( e : ĠMotion Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Long Press ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetIs Long press Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġscaled Touch S lop Ġ= ĠView Configuration . get ( context ). scaled Touch S lop ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ev . action Mask ed Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġover Scroller . abort Animation () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( long Press Runnable , ĠView Configuration . getLong Press Timeout (). to Long ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ev . is Touch Finish ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Long Press Runnable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Long Press Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( handle Touch Type Ġ== ĠHANDLE _ TO UCH _ TYPE _ DISPATCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Gesture Detector . on Touch Event ( ev ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandle Common Touch Event ( ev ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Touch Event ( ev ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Intercept Touch Event ( ev : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( handle Touch Type Ġ== ĠHANDLE _ TO UCH _ TYPE _ INTER CEPT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Gesture Detector . on Touch Event ( ev ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandle Common Touch Event ( ev ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Intercept Touch Event ( ev ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġorientation Gesture Detector . on Touch Event ( event ) ĊĠĠĠĠĠĠĠ Ġhandle Common Touch Event ( event ) ĊĠĠĠĠĠĠĠ Ġsuper . on Touch Event ( event ) Ġ// éĺ² æŃ¢ on ClickListener æĹł æķĪ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġhandle Common Touch Event ( event : ĠMotion Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . is Touch Down ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtouch Down X Ġ= Ġevent . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtouch Down Y Ġ= Ġevent . y ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtouch Event X Ġ= Ġevent . x ĊĠĠĠĠĠĠĠ Ġtouch Event Y Ġ= Ġevent . y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġremove Long Press Runnable () Ġ{ ĊĠĠĠĠĠĠĠ Ġremove Callbacks ( long Press Runnable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompute Scroll () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( over Scroller . compute Scroll Offset ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll To ( over Scroller . curr X , Ġover Scroller . curr Y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// </ editor - fold Ġdesc =" æīĭ åĬ¿ å¤ĦçĲĨ "> ĊĊĠĠĠ Ġ// < editor - fold Ġdesc =" æ»ļ åĬ¨ æĵįä½ľ "> ĊĊĠĠĠ Ġfun Ġis Vertical ( orientation : ĠOR IENTATION ) Ġ= ĊĠĠĠĠĠĠĠ Ġorientation Ġ== ĠOR IENTATION . TOP Ġ|| Ġorientation Ġ== ĠOR IENTATION . BOTTOM ĊĊĠĠĠ Ġfun Ġis Horizontal ( orientation : ĠOR IENTATION ) Ġ= ĊĠĠĠĠĠĠĠ Ġorientation Ġ== ĠOR IENTATION . LEFT Ġ|| Ġorientation Ġ== ĠOR IENTATION . RIGHT ĊĊĠĠĠ Ġopen Ġfun Ġstart Scroll Y ( dy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Scroll ( 0 , Ġdy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġstart Scroll X ( dx : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Scroll ( dx , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġstart Scroll ( dx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġover Scroller . abort Animation () ĊĠĠĠĠĠĠĠ Ġover Scroller . start Scroll ( scroll X , Ġscroll Y , Ġdx , Ġdy , Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġpost Invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** å¼Ģå§ĭ æ»ļ åĬ¨ åĪ° æŁĲä¸ª ä½įç½® */ ĊĠĠĠ Ġopen Ġfun Ġstart Scroll To ( start X : ĠInt , Ġto X : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġover Scroller . abort Animation () ĊĠĠĠĠĠĠĠ Ġover Scroller . start Scroll ( start X , Ġscroll Y , Ġto X Ġ- Ġstart X , Ġ 0 , Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠ Ġpost Invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġstart Fl ing Y ( velocity Y : ĠInt , Ġmax Dy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Fl ing ( 0 , Ġvelocity Y , Ġ 0 , Ġmax Dy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġstart Fl ing X ( velocity X : ĠInt , Ġmax Dx : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Fl ing ( velocity X , Ġ 0 , Ġmax Dx , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġstart Fl ing ( velocity X : ĠInt , Ġvelocity Y : ĠInt , Ġmax Dx : ĠInt , Ġmax Dy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġover Scroller . abort Animation () ĊĠĠĠĠĠĠĠ Ġover Scroller . fl ing ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll X , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity X , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvelocity Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Dx , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Dy , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeasured Width , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeasured Height ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġpost Invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// </ editor - fold Ġdesc =" æ»ļ åĬ¨ æĵįä½ľ "> ĊĊĠĠĠ Ġ// < editor - fold Ġdesc =" åĽŀè°ĥ å¤ĦçĲĨ "> ĊĊĠĠĠ Ġ/** Fl ing æĵįä½ľ çļĦ å¤ĦçĲĨ æĸ¹æ³ķ */ ĊĠĠĠ Ġ@ Deprecated (" ä¸į æİ¨èįĲ ä½¿çĶ¨ ") ĊĠĠĠ Ġopen Ġfun Ġon Fl ing Change ( orientation : ĠOR IENTATION , Ġvelocity : ĠFloat Ġ/* ç ŀ ¬ æĹ¶ åĢ¼ */) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// L . e (" call : Ġon Fl ing Change Ġ-> Ġ$ orientation Ġ$ velocity ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Fl ing Change ( orientation : ĠOR IENTATION , Ġvelocity X : ĠFloat , Ġvelocity Y : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Fl ing Change ( orientation , Ġif Ġ( is Vertical ( orientation )) Ġvelocity Y Ġelse Ġvelocity X ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Scroll æĵįä½ľ çļĦ å¤ĦçĲĨ æĸ¹æ³ķ */ ĊĠĠĠ Ġ@ Deprecated (" ä¸į æİ¨èįĲ ä½¿çĶ¨ ") ĊĠĠĠ Ġopen Ġfun Ġon Scroll Change ( orientation : ĠOR IENTATION , Ġdistance : ĠFloat Ġ/* ç ŀ ¬ æĹ¶ åĢ¼ */) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Scroll Change ( orientation : ĠOR IENTATION , Ġdistance X : ĠFloat , Ġdistance Y : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Scroll Change ( orientation , Ġif Ġ( is Vertical ( orientation )) Ġdistance Y Ġelse Ġdistance X ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// </ editor - fold Ġdesc =" åĽŀè°ĥ å¤ĦçĲĨ "> Ċ }