Como passar variáveis para o modo de exibição personalizado antes que onDraw () seja chamado?

O que estou tentando alcançar:

medir um recipienteView no meu layout, mainContainer, definido noXMLpasse omainContainer's width and height para um costume diferenteView antesonDraw() é chamadoQuero passar a largura e a altura para que o costumeView sabe para onde desenharcanvas.drawBitmap usando coordenadasA visualização personalizada seráprogrammatically criado a partir do código

Como posso passar a largura int e a altura int medidas para o meu View personalizado antes que onDraw () seja chamado?

Visualização personalizada

public class AvatarView extends ImageView {

private Bitmap body;
private Bitmap hat;

public AvatarView(Context context) {
    super(context);
    init();
}

public AvatarView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public AvatarView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

private void init() {
    body = BitmapFactory.decodeResource(getResources(), R.drawable.battle_run_char);
    hat = BitmapFactory.decodeResource(getResources(), R.drawable.red_cartoon_hat);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawBitmap(body, x, y, null);
    canvas.drawBitmap(hat, x, y, null);
}
}

Fragmento

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_customize_avatar, container, false);
    final RelativeLayout mainContainer = (RelativeLayout) view.findViewById(R.id.main_container);
    TwoWayView inventoryList = (TwoWayView) view.findViewById(R.id.inventory);

    inventoryList.setAdapter(null);

    inventoryList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

        }
    });

    mainContainer.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @SuppressLint("NewApi")
        @SuppressWarnings("deprecation")
        @Override
        public void onGlobalLayout() {
            // Retrieve the width and height
            containerWidth = mainContainer.getWidth();
            containerHeight = mainContainer.getHeight();

            // Remove global listener
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN)
                mainContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            else
                mainContainer.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        }
    });

    return view;
}

XML

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:clickable="true"
android:background="#fff" >

<com.walintukai.lfdate.CustomTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:textStyle="bold"
    android:textColor="#fff"
    android:textSize="20sp"
    android:textAllCaps="true"
    android:text="@string/customize_avatar"
    android:background="#009BFF" />

<RelativeLayout
    android:id="@+id/main_container"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />

<org.lucasr.twowayview.TwoWayView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/inventory"
    style="@style/HorizontalListView"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:drawSelectorOnTop="false"
    android:background="#f3f3f3" />

</LinearLayout>

questionAnswers(1)

yourAnswerToTheQuestion