您的位置:首页 > 其它

ScrollView在初始化滚动条在某一位置的时候为什么非得开一个线程?还有就是scrollTo与smoothScrollTo的区别是什么?

2015-05-11 16:36 519 查看
private Handler handler;

public HorizontalScrollView HSV;

private Runnable runnable = new Runnable(){

public void run() {

HSV.smoothScrollTo(3*266, 210);

}

};

handler=new Handler();

handler.post(runnable);

第一,handler.post(runnable);并不是新开线程,只是让UI主线程去并发执行run()方法。

第二,之所以放在handler里,是为了保证View都已经绘制完成。不然,你放在resume()中执行,应该也可以的。

第三,smoothScrollTo类似于scrollTo,但是滚动的时候是平缓的而不是立即滚动到某处。另外,smoothScrollTo()方法可以打断滑动动画。

它只是让UI主线程去间断的执行run()方法。你可以在run()方法内部打印执行时的线程名称,会发现是相同的。

0
能证明一下怎么保证View绘制完成么?

0
初始化时,Handler内的方法是会在onCreate方法执行完成之后才执行的。简单的打印观察就可以发现。View的绘制过程是:onMeasure(计算)、onLayout(布局)、onDraw(绘制)。至于其它更深入的东西,你可以参考官方API。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐