invalidate 可以 重新出发 生命周期的执行,但也不是每次都触发
自定义view 分类:
1:自定义view
没有现成的view 需要自己实现 一般继承已有的view,sufaceview
或者其他的view
2:自定义viewgroup
利用现有的组件更具特定的布局组成新的组件 大锁继承viewgroup或者layout
===================
自定view的三个构造函数
一个参数的构造函数 --一般用于代码中 new xxCustom();
2个参数的构造函数 --一般用xml布局三种使用;
3个参数的构造函数 --一般用自己的style时使用
===================
自定义view的三个步骤
=============================
onMeasure() 测量解决的根本问题就是
match_parent: 测量父亲多大
和wrap_content :测量孩子 多大
================
android:layout_width="100dp"
android:layout_width="match_parent"
android:layout_width="wrap_content"
测量有三个模式:
MeasureSpec.UNSPECIFIED不确定值==wrap_content
MeasureSpec.AT_MOST 最大值 === match_parent
MeasureSpec.EXACTLY 完全准确值 === 100dp
=============================
测量的大小===父亲给的大小 + 孩子的大小
===========================
onMeasure(int widthMeasureSpec, int heightMeasureSpec)
onMeasure中的测量模式哪里来的呢? 父容器给的
打个个比方: 我们自定义 了一个 xxViewGroup 在xml布局中使用的时候 放在 LinearLayout
流程就是:LinearLayout ----> xxViewGroup-->texview 依次把测量模式
给了子view
测量孩子宽高
案例 scroview 嵌套 listview 显示不全 为什么?
============================
布局
protected void onLayout(boolean changed, int l, int t, int r, int b)