自定义控件的初次建立的时候方法调用顺序

package com.football.app.view;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

/**
 * Created by Administrator on 2015/9/17.
 */
public class TestView extends Button {
    public TestView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        Log.d("测试代码", "TestView---TestView");
    }

    public TestView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        Log.d("测试代码", "TestView---TestView");
    }

    public TestView(Context context, AttributeSet attrs) {
        super(context, attrs);
        Log.d("测试代码", "TestView---TestView");
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        Log.d("测试代码", "TestView---onMeasure");
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        Log.d("测试代码", "TestView---onLayout");
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Log.d("测试代码", "TestView---onDraw");
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        Log.d("测试代码", "TestView---onSizeChanged");
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            Log.d("测试代码", "TestView---ACTION_UP----invalidate");
            invalidate();
        }
        return super.onTouchEvent(event);

    }
}

 

 

 

09-17 15:27:22.930  17644-17644/com.football.app D/测试代码﹕ TestView---TestView
09-17 15:27:22.992  17644-17644/com.football.app D/测试代码﹕ TestView---onMeasure
09-17 15:27:22.993  17644-17644/com.football.app D/测试代码﹕ TestView---onMeasure
09-17 15:27:23.031  17644-17644/com.football.app D/测试代码﹕ TestView---onMeasure
09-17 15:27:23.032  17644-17644/com.football.app D/测试代码﹕ TestView---onMeasure
09-17 15:27:23.037  17644-17644/com.football.app D/测试代码﹕ TestView---onSizeChanged
09-17 15:27:23.037  17644-17644/com.football.app D/测试代码﹕ TestView---onLayout
09-17 15:27:23.062  17644-17644/com.football.app D/测试代码﹕ TestView---onMeasure
09-17 15:27:23.063  17644-17644/com.football.app D/测试代码﹕ TestView---onLayout
09-17 15:27:23.064  17644-17644/com.football.app D/测试代码﹕ TestView---onDraw
09-17 15:27:23.074  17644-17644/com.football.app D/测试代码﹕ TestView---onDraw
09-17 15:27:23.100  17644-17644/com.football.app D/测试代码﹕ TestView---onMeasure
09-17 15:27:23.102  17644-17644/com.football.app D/测试代码﹕ TestView---onMeasure
09-17 15:27:23.108  17644-17644/com.football.app D/测试代码﹕ TestView---onLayout
09-17 15:27:23.111  17644-17644/com.football.app D/测试代码﹕ TestView---onDraw

 

 

根据上面的代码,调用顺序应该是   构造函数------->onMeasure------->onSizeChanged------->onLayout------->onDraw

                                             后面有可能 onMeasure------->onLayout------->onDraw

你可能感兴趣的:(自定义控件的初次建立的时候方法调用顺序)