关于自定义View相关知识

2019-11-19  本文已影响0人  林下人水边兵

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");

上一篇 下一篇

猜你喜欢

热点阅读