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之前


你可能感兴趣的:(android,super,程序,public)