Animating propriedade weightSum usando ObjectAnimator

Intro:

Tenho um LinearLayout, que contém dois sub LinearLayouts, assim:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dual_pane"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:weightSum="1.0">

    <!-- Screen 1 -->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="#ff0000"
        android:layout_weight="1">
    </LinearLayout>

    <!-- Screen 2 -->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="#ff6600"
        android:layout_weight="1">
    </LinearLayout>
</LinearLayout>

Inicialmente, quero que a "Tela 1" leve toda a largura da tela disponível. Portanto, meu R.id.dual_pane tem seu atributo weightSum para 1.0. Isso funciona bem! se weightSum = 1.0, a tela 1 ocupa a tela inteira!

Depois de carregar alguns recursos, altero meu R.id.dual_pane weightSum para 2.0, o que resulta na Tela 1 e na Tela 2 diminuindo 50% da largura da tela. Isso também funciona perfeito. Quando weightSum = 2.0, as duas telas ocupam 50% da largur

Problema

Gostaria de animar a propriedade weightSum, para que meu Screen2 deslize. Estou direcionando o HoneyComb, então a versão minSDK é 11 e imaginei que, usando a nova estrutura ObjectAnimator, poderia animar facilmente essa propriedade, para obter uma aparência suave efeito. Eu verifiquei que o LinearLayout realmente tem os métodos getWeightSum () e setWeightSum () (que é necessário para usar o ObjectAnimator, eu acho).

sforço próprio:

Aqui está o meu código para mostrar e ocultar o Screen2 usando o ObjectAnimator:

private void showScreen2()
{
    //Not-animated will work...
    //mDualPane.setWeightSum(2.0f);

    // Now try to animate the weightSum
    float ws = mDualPane.getWeightSum();
    ObjectAnimator anim = ObjectAnimator.ofFloat(mDualPane, "weightSum", ws, 2.0f);
    anim.setDuration(5000);
    anim.start();
}

private void hideScreen2()
{
    //Not-animated will work...
    //mDualPane.setWeightSum(1.0f);

    // Now try to animate the weightSum
    float ws = mDualPane.getWeightSum();
    ObjectAnimator anim = ObjectAnimator.ofFloat(mDualPane, "weightSum", ws, 1.0f);
    anim.setDuration(5000);
    anim.start();
}

Aqui, meu mDualPane é minha raiz LinearLayout ...

Questão

Quando eu chamo essas funções, nada acontece. A tela permanece exatamente como era antes. Preciso chamar requestLayout () no meu mDualPane em algum lugar? Estou perdendo algum conhecimento do ObjectAnimator? Ou é impossível animar a propriedade weightSum?

ALÉM DISSO

1) Não quero mexer com larguras codificadas e animar. Por enquanto, eu quero 50-50 para as duas telas, mas posso alterá-lo mais tarde. De qualquer forma, preciso definir uma proporção específica entre as duas largura

2) Examinei o LayoutTransition combinado com a visibilidade alternada, mas sem sucesso

questionAnswers(1)

yourAnswerToTheQuestion