解决ScrollView滑动过程中ScrollTo()方法不起作用的问题

来源:互联网 发布:武汉工商学院淘宝地址 编辑:程序博客网 时间:2024/05/11 14:35

转载自 : http://blog.csdn.net/lovehong0306/article/details/7855950


案例:阅读软件中用ScrollView嵌套TextView显示章节内容

问题:当滑动ScrollView后(还在惯性滑动中)切换章节内容,并定位到ScrollView底部

此时调用scrollTo(int x, int y)不起作用。

分析原因:由于滑动动画还在继续,scrollTo在执行后效果被滑动动画覆盖,没起作用。


曾苦于一时没有解决方案,未曾找到取消滑动动画的方法,后偶然发现,smoothScrollTo()方法可以打断动画,将

scrollTo()换成smoothScrollTo()方法可正常定位位置,但定位过程有动画要耗费一些时间,不是本想要的快速定位。

经尝试发现以下写法即可满足需求:

[java] view plain copy
  1. //滚动到原点  
  2. scrollView.scrollTo(00);  
  3. scrollView.smoothScrollTo(00);  


注意两个方法调用先后顺序不可颠倒。

我个人对于这个写法可以成功的理解:

在滑动动画过程中,scrollTo在执行后效果被滑动动画覆盖不起作用,相当于scrollTo被实际执行了,但是被系统的滑动动画中的方法又迅速的掩盖,导致看到的效果像是scrollTo没有作用.  在这种情况下 实际的运行过程可能为滑动动画方法-->scrollto --> 滑动动画方法

当我们使用scrollTo和smoothScrollTo方法时,实际的运行过程可能为 滑动动画方法-->scrollto --> smoothScrollTo (这时界面已经处在(0,0)的位置,所以smoothScrollTo 不需要有定位过程,动画被打断,所以后面的滑动动画方法不会被执行)

0 0
原创粉丝点击