很久之前就看了view的三个方法,然后现在又记不清了,现在写了个简单的自定义view终于明白一点了
onMeasure() : 画多大,宽高各是多少,自己计算出来后通过调用super.onMeasure(widthMeasureSpec, heightMeasureSpec);来告诉view
onDraw() : 画什么东西,这个例子只是画了一个String
网上流传了一种方法用于测量画的string的宽和高,然而,并不一定有用,或许是我没设置对
先看网上的方法,来源
获取height : mPaint.ascent() + mPaint.descent()
获取width : mPaint.measureText(text)
测量高度是无效的,
测量宽度是有效的,
然后提供一种实际测试有效的方法,来源
/**
* 绘制时控制文本绘制的范围
*/
private Rect mBound;
mBound = new Rect();
mPaint.getTextBounds(mDrawText, 0, mDrawText.length(), mBound);
// 获得文字的高度
float textHeight = mBound.height() ;
// 获得文字宽度
float textWidth = mBound.width();
他写的博客很值得推荐
所以有些代码还是自己亲手实验一下为好