getWidth getHeght
①getMeasuredWidth方法获得的值是setMeasuredDimension方法设置的值,它的值在measure方法运行后就会确定
②getWidth方法获得是layout方法中传递的四个参数中的mRight-mLeft,它的值是在layout方法运行后确定的
③一般情况下在onLayout方法中使用getMeasuredWidth方法,而在除onLayout方法之外的地方用getWidth方法。

onMeasure()测量宽高时,几个参数 含义
EXACTLY:精确值模式,在指定view具体数值的时候会用到。(比如指定 width=100dp)
AT_MOST:最大值模式,将控件设置为"wrap_content"用到,它会根据子控件或者内容变化而变化。
UNSPECIFIED:绘制控件想要多大就可以多大。
提示:
* wrap_parent -> MeasureSpec.AT_MOST
* match_parent -> MeasureSpec.EXACTLY
关于 Matrix的 绘制起点 设置 注意
Matrix 是为了改变 默认绘制的开始点 如果没有任何设置的话 默认是从 0 0 开始绘制
Matrix 设置的 定点 是 整个画布为参照物 如果超过了这个rectf 布局大小 是不会看到
e.g 如果你绘制图片在 ref(0,0,400,400) 图片规格是(200,200) 如果 设置 matrix.setTranslate(300, 300);* 那么你只会看到图片的一部分 一部分给遮挡了


paint 文字的 宽高 测量

baseLine: 灰色的线
ascent: 上面蓝色线距离baseline的距离, 这个是负值
top: 是所有ascent最小数值(因为是负值,就是最高的),图中是上面绿色的线,这个也是负值
descent: 是下面红色的线到baseline的距离,这个是正值
bottom: 是所有字符descent最大值
原文链接:https://blog.csdn.net/simpleistrue/article/details/70038110
获取文字高度
Paint.FontMetrics fm = textPaint.getFontMetrics();
textHeight = (int) (fm.bottom-fm.top);
注:fm.top 获取的值为负数
获取文字宽度
float textwidth = textPaint.measureText("Android");
网友评论