Activity 中View 加载顺序

示例代码:

View:

public class FirstView extends View{

    private Paint mPaint;
    private int radiu = 100;
    private String TAG = FirstView.class.getName();


    private void initPaint(){
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mPaint.setTextSize(getResources().getDimension(R.dimen.DIMEN_80PX));
        mPaint.setColor(getResources().getColor(R.color.color_red));
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeWidth(5f);
        mPaint.setAlpha(50);
    }


    public FirstView(Context context) {
        super(context);
        Log.i(TAG, "----------- Constructors—01 -----------");
        initPaint();
    }

    /**
     * View 构造函数
     */
    public FirstView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        Log.i(TAG, "----------- Constructors—02 -----------");
        initPaint();
    }

    /**
     * View 构造函数
     */
    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        Log.i(TAG, "----------- onFinishInflate -----------");
    }

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        super.onWindowFocusChanged(hasWindowFocus);
        Log.i(TAG, "----------- onWindowFocusChanged -----------");
    }

    @Override
    protected void onFocusChanged(boolean gainFocus, int direction, @Nullable Rect previouslyFocusedRect) {
        super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
        Log.i(TAG, "----------- onFocusChanged -----------");
    }

    @Override
    protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);
        Log.i(TAG, "----------- onVisibilityChanged -----------");
    }

    @Override
    protected void onWindowVisibilityChanged(int visibility) {
        super.onWindowVisibilityChanged(visibility);
        Log.i(TAG, "----------- onWindowVisibilityChanged -----------");
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        Log.i(TAG, "----------- onDetachedFromWindow -----------");
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        Log.i(TAG, "----------- onAttachedToWindow -----------");
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        Log.i(TAG, "----------- onMeasure -----------");
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        Log.i(TAG, "----------- onSizeChanged -----------");
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        Log.i(TAG, "----------- onLayout -----------");
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Log.i(TAG, "----------- onDraw -----------");
        canvas.drawRect(400, 100, 600, 600, mPaint);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        return super.onTouchEvent(event);
    }
}

Activity:

public class CustomViewActivity extends AppCompatActivity {

    private LinearLayout layoutSecond;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom_view);
        initView();
    }

    private void initView(){
        layoutSecond = (LinearLayout) findViewById(R.id.layout_second);
        FirstView firstView = new FirstView(this);
        layoutSecond.addView(firstView);
    }
}

xml布局文件:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1">
        <!--<com.wdp.designtest.view.custom_view.FirstView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />-->
    </LinearLayout>
    <LinearLayout
        android:id="@+id/layout_second"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1">
    </LinearLayout>
</LinearLayout>

运行结果:

1. View在xml布局文件中

03-15 14:31:17.887 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- Constructors—02 -----------
03-15 14:31:17.888 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onFinishInflate -----------
03-15 14:31:17.910 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onAttachedToWindow -----------
03-15 14:31:17.910 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onWindowVisibilityChanged -----------
03-15 14:31:17.910 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onVisibilityChanged -----------
03-15 14:31:17.913 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onMeasure -----------
03-15 14:31:17.913 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onMeasure -----------
03-15 14:31:17.942 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onMeasure -----------
03-15 14:31:17.942 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onMeasure -----------
03-15 14:31:17.942 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onSizeChanged -----------
03-15 14:31:17.942 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onLayout -----------
03-15 14:31:17.947 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onWindowFocusChanged -----------
03-15 14:31:17.962 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onDraw -----------
03-15 14:34:25.135 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onWindowFocusChanged -----------
03-15 14:34:25.231 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onWindowVisibilityChanged -----------
03-15 14:34:25.657 29347-29347/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onDetachedFromWindow -----------


2. View 在代码中添加

03-15 14:36:04.798 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- Constructors—01 -----------
03-15 14:36:04.845 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onAttachedToWindow -----------
03-15 14:36:04.846 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onWindowVisibilityChanged -----------
03-15 14:36:04.846 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onVisibilityChanged -----------
03-15 14:36:04.854 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onMeasure -----------
03-15 14:36:04.854 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onMeasure -----------
03-15 14:36:04.880 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onMeasure -----------
03-15 14:36:04.880 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onMeasure -----------
03-15 14:36:04.881 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onSizeChanged -----------
03-15 14:36:04.882 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onLayout -----------
03-15 14:36:04.902 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onWindowFocusChanged -----------
03-15 14:36:04.908 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onDraw -----------
03-15 14:36:08.654 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onWindowFocusChanged -----------
03-15 14:36:08.768 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onWindowVisibilityChanged -----------
03-15 14:36:09.181 29688-29688/com.wdp.designtest I/com.wdp.designtest.view.custom_view.FirstView: ----------- onDetachedFromWindow -----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值