AutoScrollHelper$ClampedScroller.smali 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. .class Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;
  2. .super Ljava/lang/Object;
  3. .source "AutoScrollHelper.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/EnclosingClass;
  6. value = Landroid/support/v4/widget/AutoScrollHelper;
  7. .end annotation
  8. .annotation system Ldalvik/annotation/InnerClass;
  9. accessFlags = 0xa
  10. name = "ClampedScroller"
  11. .end annotation
  12. # instance fields
  13. .field private mDeltaTime:J
  14. .field private mDeltaX:I
  15. .field private mDeltaY:I
  16. .field private mEffectiveRampDown:I
  17. .field private mRampDownDuration:I
  18. .field private mRampUpDuration:I
  19. .field private mStartTime:J
  20. .field private mStopTime:J
  21. .field private mStopValue:F
  22. .field private mTargetVelocityX:F
  23. .field private mTargetVelocityY:F
  24. # direct methods
  25. .method public constructor <init>()V
  26. .locals 3
  27. .prologue
  28. const/4 v2, 0x0
  29. .line 743
  30. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  31. .line 744
  32. const-wide/high16 v0, -0x8000000000000000L
  33. iput-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStartTime:J
  34. .line 745
  35. const-wide/16 v0, -0x1
  36. iput-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopTime:J
  37. .line 746
  38. const-wide/16 v0, 0x0
  39. iput-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaTime:J
  40. .line 747
  41. iput v2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaX:I
  42. .line 748
  43. iput v2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaY:I
  44. .line 749
  45. return-void
  46. .end method
  47. .method private getValueAt(J)F
  48. .locals 10
  49. .param p1, "currentTime" # J
  50. .prologue
  51. const/high16 v9, 0x3f800000 # 1.0f
  52. const/4 v4, 0x0
  53. .line 787
  54. iget-wide v5, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStartTime:J
  55. cmp-long v5, p1, v5
  56. if-gez v5, :cond_0
  57. .line 794
  58. :goto_0
  59. return v4
  60. .line 789
  61. :cond_0
  62. iget-wide v5, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopTime:J
  63. const-wide/16 v7, 0x0
  64. cmp-long v5, v5, v7
  65. if-ltz v5, :cond_1
  66. iget-wide v5, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopTime:J
  67. cmp-long v5, p1, v5
  68. if-gez v5, :cond_2
  69. .line 790
  70. :cond_1
  71. iget-wide v5, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStartTime:J
  72. sub-long v2, p1, v5
  73. .line 791
  74. .local v2, "elapsedSinceStart":J
  75. const/high16 v5, 0x3f000000 # 0.5f
  76. long-to-float v6, v2
  77. iget v7, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mRampUpDuration:I
  78. int-to-float v7, v7
  79. div-float/2addr v6, v7
  80. invoke-static {v6, v4, v9}, Landroid/support/v4/widget/AutoScrollHelper;->access$900(FFF)F
  81. move-result v4
  82. mul-float/2addr v4, v5
  83. goto :goto_0
  84. .line 793
  85. .end local v2 # "elapsedSinceStart":J
  86. :cond_2
  87. iget-wide v5, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopTime:J
  88. sub-long v0, p1, v5
  89. .line 794
  90. .local v0, "elapsedSinceEnd":J
  91. iget v5, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopValue:F
  92. sub-float v5, v9, v5
  93. iget v6, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopValue:F
  94. long-to-float v7, v0
  95. iget v8, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mEffectiveRampDown:I
  96. int-to-float v8, v8
  97. div-float/2addr v7, v8
  98. invoke-static {v7, v4, v9}, Landroid/support/v4/widget/AutoScrollHelper;->access$900(FFF)F
  99. move-result v4
  100. mul-float/2addr v4, v6
  101. add-float/2addr v4, v5
  102. goto :goto_0
  103. .end method
  104. .method private interpolateValue(F)F
  105. .locals 2
  106. .param p1, "value" # F
  107. .prologue
  108. .line 807
  109. const/high16 v0, -0x3f800000 # -4.0f
  110. mul-float/2addr v0, p1
  111. mul-float/2addr v0, p1
  112. const/high16 v1, 0x40800000 # 4.0f
  113. mul-float/2addr v1, p1
  114. add-float/2addr v0, v1
  115. return v0
  116. .end method
  117. # virtual methods
  118. .method public computeScrollDelta()V
  119. .locals 10
  120. .prologue
  121. .line 818
  122. iget-wide v6, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaTime:J
  123. const-wide/16 v8, 0x0
  124. cmp-long v6, v6, v8
  125. if-nez v6, :cond_0
  126. .line 819
  127. new-instance v6, Ljava/lang/RuntimeException;
  128. const-string v7, "Cannot compute scroll delta before calling start()"
  129. invoke-direct {v6, v7}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
  130. throw v6
  131. .line 822
  132. :cond_0
  133. invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
  134. move-result-wide v0
  135. .line 823
  136. .local v0, "currentTime":J
  137. invoke-direct {p0, v0, v1}, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->getValueAt(J)F
  138. move-result v5
  139. .line 824
  140. .local v5, "value":F
  141. invoke-direct {p0, v5}, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->interpolateValue(F)F
  142. move-result v4
  143. .line 825
  144. .local v4, "scale":F
  145. iget-wide v6, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaTime:J
  146. sub-long v2, v0, v6
  147. .line 827
  148. .local v2, "elapsedSinceDelta":J
  149. iput-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaTime:J
  150. .line 828
  151. long-to-float v6, v2
  152. mul-float/2addr v6, v4
  153. iget v7, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mTargetVelocityX:F
  154. mul-float/2addr v6, v7
  155. float-to-int v6, v6
  156. iput v6, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaX:I
  157. .line 829
  158. long-to-float v6, v2
  159. mul-float/2addr v6, v4
  160. iget v7, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mTargetVelocityY:F
  161. mul-float/2addr v6, v7
  162. float-to-int v6, v6
  163. iput v6, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaY:I
  164. .line 830
  165. return-void
  166. .end method
  167. .method public getDeltaX()I
  168. .locals 1
  169. .prologue
  170. .line 856
  171. iget v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaX:I
  172. return v0
  173. .end method
  174. .method public getDeltaY()I
  175. .locals 1
  176. .prologue
  177. .line 864
  178. iget v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaY:I
  179. return v0
  180. .end method
  181. .method public getHorizontalDirection()I
  182. .locals 2
  183. .prologue
  184. .line 844
  185. iget v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mTargetVelocityX:F
  186. iget v1, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mTargetVelocityX:F
  187. invoke-static {v1}, Ljava/lang/Math;->abs(F)F
  188. move-result v1
  189. div-float/2addr v0, v1
  190. float-to-int v0, v0
  191. return v0
  192. .end method
  193. .method public getVerticalDirection()I
  194. .locals 2
  195. .prologue
  196. .line 848
  197. iget v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mTargetVelocityY:F
  198. iget v1, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mTargetVelocityY:F
  199. invoke-static {v1}, Ljava/lang/Math;->abs(F)F
  200. move-result v1
  201. div-float/2addr v0, v1
  202. float-to-int v0, v0
  203. return v0
  204. .end method
  205. .method public isFinished()Z
  206. .locals 6
  207. .prologue
  208. .line 782
  209. iget-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopTime:J
  210. const-wide/16 v2, 0x0
  211. cmp-long v0, v0, v2
  212. if-lez v0, :cond_0
  213. invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
  214. move-result-wide v0
  215. iget-wide v2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopTime:J
  216. iget v4, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mEffectiveRampDown:I
  217. int-to-long v4, v4
  218. add-long/2addr v2, v4
  219. cmp-long v0, v0, v2
  220. if-lez v0, :cond_0
  221. const/4 v0, 0x1
  222. :goto_0
  223. return v0
  224. :cond_0
  225. const/4 v0, 0x0
  226. goto :goto_0
  227. .end method
  228. .method public requestStop()V
  229. .locals 5
  230. .prologue
  231. .line 775
  232. invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
  233. move-result-wide v0
  234. .line 776
  235. .local v0, "currentTime":J
  236. iget-wide v2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStartTime:J
  237. sub-long v2, v0, v2
  238. long-to-int v2, v2
  239. const/4 v3, 0x0
  240. iget v4, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mRampDownDuration:I
  241. invoke-static {v2, v3, v4}, Landroid/support/v4/widget/AutoScrollHelper;->access$800(III)I
  242. move-result v2
  243. iput v2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mEffectiveRampDown:I
  244. .line 777
  245. invoke-direct {p0, v0, v1}, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->getValueAt(J)F
  246. move-result v2
  247. iput v2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopValue:F
  248. .line 778
  249. iput-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopTime:J
  250. .line 779
  251. return-void
  252. .end method
  253. .method public setRampDownDuration(I)V
  254. .locals 0
  255. .param p1, "durationMillis" # I
  256. .prologue
  257. .line 756
  258. iput p1, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mRampDownDuration:I
  259. .line 757
  260. return-void
  261. .end method
  262. .method public setRampUpDuration(I)V
  263. .locals 0
  264. .param p1, "durationMillis" # I
  265. .prologue
  266. .line 752
  267. iput p1, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mRampUpDuration:I
  268. .line 753
  269. return-void
  270. .end method
  271. .method public setTargetVelocity(FF)V
  272. .locals 0
  273. .param p1, "x" # F
  274. .param p2, "y" # F
  275. .prologue
  276. .line 839
  277. iput p1, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mTargetVelocityX:F
  278. .line 840
  279. iput p2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mTargetVelocityY:F
  280. .line 841
  281. return-void
  282. .end method
  283. .method public start()V
  284. .locals 3
  285. .prologue
  286. const/4 v2, 0x0
  287. .line 763
  288. invoke-static {}, Landroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
  289. move-result-wide v0
  290. iput-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStartTime:J
  291. .line 764
  292. const-wide/16 v0, -0x1
  293. iput-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopTime:J
  294. .line 765
  295. iget-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStartTime:J
  296. iput-wide v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaTime:J
  297. .line 766
  298. const/high16 v0, 0x3f000000 # 0.5f
  299. iput v0, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mStopValue:F
  300. .line 767
  301. iput v2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaX:I
  302. .line 768
  303. iput v2, p0, Landroid/support/v4/widget/AutoScrollHelper$ClampedScroller;->mDeltaY:I
  304. .line 769
  305. return-void
  306. .end method