onMeasure() 测量
getMySize
自定义的方法,measureSpec参数是:
onMeasure(int widthMeasureSpec, int heightMeasureSpec)
中的widthMeasureSpec,heightMeasureSpec:
private int getMySize(int measureSpec){
switch (MeasureSpec.getMode(measureSpec)){
case MeasureSpec.UNSPECIFIED:
//如果没有指定大小,就设置为默认大小
//例子:layout_width="0dp",layout_weight="1"
Log.d("getMySize","UNSPECIFIED");
return 200;
case MeasureSpec.EXACTLY:
//如果是固定的大小,那就不要去改变它
//对应 match_parent,具体值
Log.d("getMySize","EXACTLY");
return MeasureSpec.getSize(measureSpec);
case MeasureSpec.AT_MOST:
//如果测量模式是最大取值为size 对应:wrap_content
//我们将大小取最大值,你也可以取其他值
Log.d("getMySize","AT_MOST");
return MeasureSpec.getSize(measureSpec);
default:
return 200;
}
}
onMeasure()
重写View中onMeasure()
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMySize(widthMeasureSpec),getMySize(heightMeasureSpec));
}