1. 程式人生 > >ScrollView在初始化滾動條在某一位置的時候為什麼非得開一個執行緒?還有就是scrollTo與smoothScrollTo的區別是什麼?

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。