我有一个自定义类,它继承View
并覆盖了onDraw
方法。在此方法中,我使用Bitmap
作为参数创建getMeasuredWidth()
实例。
编译器不喜欢它说在onDraw
方法中创建对象并不酷。
所以我需要将Bitmap
实例创建移动到另一个方法。但我需要确保getMeasuredWidth()
能够返回最新的信息。
我的问题是:我应该使用什么方法来捕获已更改的getMeasuredWidth()
并重新创建我的Bitmap
对象?
答案 0 :(得分:1)
getMeasuredWidth()
返回测量值,如果您需要布局中视图的实际宽度,请使用getWidth()
。
如果位图应具有视图的宽度或高度,请在onSizeChanged()
/**
* This is called during layout when the size of this view has changed. If
* you were just added to the view hierarchy, you're called with the old
* values of 0.
*
* @param w Current width of this view.
* @param h Current height of this view.
* @param oldw Old width of this view.
* @param oldh Old height of this view.
*/
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if (w != 0 && h != 0) {
//create Bitmap here
}
}