/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 ĠGoogle ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . google . android . apps . mu ze i . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġandroid . view . animation . Interpolator Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġclass Ġthat Ġanim ates Ġdouble - touch Ġzoom Ġgest ures . ĠFunction ally Ġsimilar Ġto Ġa Ġ[ Ġ]. Ċ Ġ*/ Ċ internal Ġclass ĠZoom er ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġinterpol ator , Ġused Ġfor Ġmaking Ġzoom s Ġanimate Ġ' natur ally .' ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġinterpol ator : ĠInterpol ator Ġ= ĠDec el erate Interpolator () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġtotal Ġanimation Ġduration Ġfor Ġa Ġzoom . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġanimation Duration Millis : ĠInt Ġ= Ġcontext . resources . getInteger ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . integer . config _ short Anim Time ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġor Ġnot Ġthe Ġcurrent Ġzoom Ġhas Ġfinished . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġfinished Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġstarting Ġzoom Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġstart Zoom Ġ= Ġ 1 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcurrent Ġzoom Ġvalue ; Ġcomputed Ġby Ġ[. compute Zoom ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġcurrent Ġzoom Ġlevel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġandroid . widget . Scroller . get Curr X ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġcurr Zoom : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġtime Ġthe Ġzoom Ġstarted , Ġcomputed Ġusing Ġ[ android . os . System Clock . elapsed Realtime ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġstart RTC : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġdestination Ġzoom Ġfactor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġend Zoom : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor ces Ġthe Ġzoom Ġfinished Ġstate Ġto Ġthe Ġgiven Ġvalue . ĠUn like Ġ[. abort Animation ], Ġthe ĊĠĠĠĠ Ġ* Ġcurrent Ġzoom Ġvalue Ġisn 't Ġset Ġto Ġthe Ġending Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġandroid . widget . Scroller . force Finished ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġforce Finished ( finished : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . finished Ġ= Ġfinished ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAbort s Ġthe Ġanimation , Ġsetting Ġthe Ġcurrent Ġzoom Ġvalue Ġto Ġthe Ġending Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġandroid . widget . Scroller . abort Animation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġabort Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġfinished Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcurr Zoom Ġ= Ġend Zoom ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġa Ġzoom Ġfrom Ġstart Zoom Ġto Ġend Zoom . ĠThat Ġis , Ġto Ġzoom Ġfrom Ġ 1 0 0 % Ġto Ġ 1 2 5 %, Ġend Zoom Ġshould ĊĠĠĠĠ Ġ* Ġby Ġ 0 . 2 5 f . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġandroid . widget . Scroller . start Scroll ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart Zoom ( start Zoom : ĠFloat , Ġend Zoom : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart RTC Ġ= ĠSystem Clock . elapsed Realtime () ĊĠĠĠĠĠĠĠ Ġthis . end Zoom Ġ= Ġend Zoom ĊĊĠĠĠĠĠĠĠ Ġfinished Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġthis . start Zoom Ġ= Ġstart Zoom ĊĠĠĠĠĠĠĠ Ġcurr Zoom Ġ= Ġstart Zoom ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġcurrent Ġzoom Ġlevel , Ġreturning Ġtrue Ġif Ġthe Ġzoom Ġis Ġstill Ġactive Ġand Ġfalse Ġif Ġthe ĊĠĠĠĠ Ġ* Ġzoom Ġhas Ġfinished . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġandroid . widget . Scroller . compute Scroll Offset ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcompute Zoom (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( finished ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġt RTC Ġ= ĠSystem Clock . elapsed Realtime () Ġ- Ġstart RTC ĊĠĠĠĠĠĠĠ Ġif Ġ( t RTC Ġ>= Ġanimation Duration Millis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinished Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Zoom Ġ= Ġend Zoom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġt RTC Ġ* Ġ 1 f Ġ/ Ġanimation Duration Millis ĊĠĠĠĠĠĠĠ Ġcurr Zoom Ġ= Ġinterpolate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Zoom , Ġend Zoom , Ġinterpol ator . get Interpolation ( t )) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ