自定义布局或者自定义view都是一样的流程
周期如下
# 进入 onFinishInflate: onAttachedToWindow: onWindowVisibilityChanged: onVisibilityChanged: onMeasure: onLayout: onDraw: # 退出 onWindowVisibilityChanged: onVisibilityChanged: onDetachedFromWindow:
package com.la.allwater.view; import android.content.Context; import android.content.res.Configuration; import android.graphics.Canvas; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.LinearLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class MyLinearLayout extends LinearLayout { private String TAG = "MyLinearLayout"; public MyLinearLayout(Context context) { this(context, null); } public MyLinearLayout(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public MyLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onFinishInflate() { super.onFinishInflate(); Log.d(TAG, "onFinishInflate: "); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); Log.d(TAG, "onAttachedToWindow: "); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Log.d(TAG, "onMeasure: "); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); Log.d(TAG, "onLayout: "); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Log.d(TAG, "onDraw: "); } @Override protected void onWindowVisibilityChanged(int visibility) { super.onWindowVisibilityChanged(visibility); Log.d(TAG, "onWindowVisibilityChanged: "); } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.d(TAG, "onConfigurationChanged: "); } @Override protected void onVisibilityChanged(@NonNull View changedView, int visibility) { super.onVisibilityChanged(changedView, visibility); Log.d(TAG, "onVisibilityChanged: "); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); Log.d(TAG, "onDetachedFromWindow: "); } }
© 版权声明