android之View的啓動過程

轉自:http://www.cdtarena.com/gpx/201308/9607.html

程序裏調用了onSizeChanged方法進行了一些設置,不知道onSizeChanged是在什麼時候啓動的,所以研究了一下View的啓動流程

代碼如下:

[java] view plaincopyprint?
  1. publicclass TestView extends View {  


  2. public TestView(Context context) {  

  3. super(context);  

  4.        Log.d("mDebug", "TestView context");  

  5.    }  


  6. public TestView(Context context, AttributeSet attrs) {  

  7. super(context, attrs);  

  8.                 Log.d("mDebug", "TestView context, attrs="+attrs.getAttributeValue(0));  

  9.         }    


  10. public TestView(Context context, AttributeSet attrs, int defStyle) {  

  11. super(context, attrs, defStyle);  

  12.        Log.d("mDebug", "TestView context,attrs,defStyle attrs="+attrs.getAttributeValue(0));  

  13.    }  




  14. @Override

  15. protectedvoid onDraw(Canvas canvas) {  

  16. super.onDraw(canvas);  

  17.        Log.d("mDebug", "onDraw");  

  18.    }  


  19. @Override

  20. protectedvoid onFinishInflate() {  

  21. super.onFinishInflate();  

  22.        Log.d("mDebug", "onFinishInflate");  

  23.    }  


  24. 成都安卓培訓成都android培訓


  25. @Override

  26. protectedvoid onSizeChanged(int w, int h, int oldw, int oldh) {  

  27. super.onSizeChanged(w, h, oldw, oldh);  

  28.        Log.d("mDebug", "onSizeChanged,w="+w+",h="+h+",oldw="+oldw+",oldh="+oldh);  

  29.    }  


  30. }  

輸出如下:http://www.cdtarena.com/net.html

[java] view plaincopyprint?
  1. 22:23:03.587: D/mDebug(9715): TestView context, attrs=@2131034112

  2. 22:23:03.597: D/mDebug(9715): onFinishInflate  

  3. 22:23:03.667: D/mDebug(9715): onSizeChanged,w=720,h=1080,oldw=0,oldh=0

  4. 22:23:03.727: D/mDebug(9715): onDraw  

  5. 22:23:03.757: D/mDebug(9715): onDraw  

很顯然,onSizeChanged的啓動時間在onDraw之前


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章