什么时候应根据其尺寸绘制自定义布局
我正在创建新的ViewGroup
。新视图将绘制一些圆圈。该视图应该有5个初始圆圈,所以我希望将它们均匀地分布在视图的宽度上,并且还要跟踪它们(它们的中心(x,y)位置),以便在视图为无效。什么时候应根据其尺寸绘制自定义布局
这是我onMeasure
:
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int desiredWidth = getPaddingLeft() + getPaddingRight() + PREFERED_SIZE;
int desiredHeight = getPaddingTop() + getPaddingBottom() + PREFERED_SIZE;
actualWidth = resolveSizeAndState(desiredWidth,widthMeasureSpec,0);
actualHeight = resolveSizeAndState(desiredHeight,heightMeasureSpec,0);
setMeasuredDimension(actualWidth, actualHeight);
}
什么我不知道的是当我要补充这些圈子。 onMeasure
可以多次调用,并获得不同的宽度和高度值,所以我不知道什么时候应该计算初始圆圈的(x,y)..在onMeasure
里面?在onDraw
开头?
回答:
只是检查的文档。还有就是在测量部分3个回调和我猜你可以在最后一个做:https://developer.android.com/reference/android/view/View.html
onMeasure(int, int)
调用,以确定该视图及其所有子项的大小要求。onLayout(boolean, int, int, int, int)
当此视图应为其所有子项指定大小和位置时调用。onSizeChanged(int, int, int, int)
当此视图的大小发生变化时调用。
所以我想你的计算最好的是onSizeChanged
。
回答:
您可以使用View.OnLayoutChangeListener
跟踪布局的变化:
public class CustomView extends View implements View.OnLayoutChangeListener { private int height;
private int width;
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
// add the layout listener
addOnLayoutChangeListener(this);
}
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
height = getHeight();
width = getWidth();
}
}
以上是 什么时候应根据其尺寸绘制自定义布局 的全部内容, 来源链接: utcz.com/qa/267163.html