【转载】View的周期记录。

View的生命周期,帮助自己把android磨的更新.

package com.example.viewdemo;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;

public class DemoView extends View{

public DemoView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
public DemoView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public DemoView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

@Override
protected void onFinishInflate() {
// TODO Auto-generated method stub
super.onFinishInflate();
Log.e(“VIEW”, “onFinishInflate() 当View中所有的子控件均被映射成xml后触发 “);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
Log.e(“VIEW”, “onMeasure( int , int ) 确定所有子元素的大小”);
}

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
// TODO Auto-generated method stub
super.onLayout(changed, left, top, right, bottom);
Log.e(“VIEW”, “onLayout( boolean , int , int , int , int ) 当View分配所有的子元素的大小和位置时触发 “);
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
// TODO Auto-generated method stub
super.onSizeChanged(w, h, oldw, oldh);
Log.e(“VIEW”, “onSizeChanged( int , int , int , int ) 当view的大小发生变化时触发”);
}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Log.e(“VIEW”, “onDraw(Canvas) view渲染内容的细节 “);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e(“VIEW”, “onKeyDown( int , KeyEvent) 有按键按下后触发”);
return super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e(“VIEW”, “onKeyUp( int , KeyEvent) 有按键按下后弹起时触发 “);
return super.onKeyUp(keyCode, event);
}

@Override
public boolean onTrackballEvent(MotionEvent event) {
// TODO Auto-generated method stub
Log.e(“VIEW”, “onTrackballEvent(MotionEvent) 轨迹球事件 “);
return super.onTrackballEvent(event);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
Log.e(“VIEW”, “onTouchEvent(MotionEvent) 触屏事件”);
return super.onTouchEvent(event);
}

@Override
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
// TODO Auto-generated method stub

super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
Log.e(“VIEW”, “onFocusChanged( boolean , int , Rect) 当View获取或失去焦点时触发”);
}

@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasWindowFocus);
Log.e(“VIEW”, “onWindowFocusChanged( boolean ) 当窗口包含的view获取或失去焦点时触发”);
}

@Override
protected void onAttachedToWindow() {
// TODO Auto-generated method stub
super.onAttachedToWindow();
Log.e(“VIEW”, “onAttachedToWindow() 当view被附着到一个窗口时触发”);
}

@Override
protected void onDetachedFromWindow() {
// TODO Auto-generated method stub
super.onDetachedFromWindow();
Log.e(“VIEW”, “onDetachedFromWindow() 当view离开附着的窗口时触发,Android123提示该方法和 onAttachedToWindow() 是相反的。”);
}

@Override
protected void onWindowVisibilityChanged(int visibility) {
// TODO Auto-generated method stub
super.onWindowVisibilityChanged(visibility);
Log.e(“VIEW”, “onWindowVisibilityChanged( int ) 当窗口中包含的可见的view发生变化时触发”);
}


}

【转载】View的周期记录。