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。