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

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值