新しい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
? の先頭に?
onMeasureとほぼ同じようですか? –
正確には、 'onMeasure'は' onLayoutChange'よりも何度も呼び出されます。 'onMeasure'は親ビューがレイアウトを計算する必要があるたびに呼び出され、' onLayoutChange'は特定のビューのレイアウトが変更されたときに呼び出されます。 –