Android: realizar traducciones y objectAnimator en el mismo archivo XML

He estado tratando de hacer un efecto de rotación de Cubo 3D mientras deslizaba de un fragmento a otro. Primero estaba usando un efecto de traducción (en XML) llamando conFragmentTransaction.setCustomAnimations(...) y luego, al abrir / cerrar el fragmento, estaba jugando con la clasificación de Cámara para hacer la rotación.

Esto funcionaba BIEN, pero parece que TENGO DEMASIADO (no me preguntes por qué) uso toda esta animación usando solo el archivo XML. Después de una larga búsqueda descubrí que debería usar objectAnimator para hacer la rotación.

Seguí el ejemplo de Google y me las arreglo para hacer la animación flip. Ahora necesito traducir los fragmentos haciéndolos deslizarse dentro y fuera. Parece que no puedo usar objectAnimator y traducir el efecto en el mismo archivo XML. Desde que aparece este error:

java.lang.RuntimeException: Unknown animator name: translate at (...)

¿Alguna idea sobre cómo puedo hacer el efecto deslizante y usar el ObjectAnimator al mismo tiempo?

¡Gracias por tu tiempo!

Código que he estado usando:

card_flip_right_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Before rotating, immediately set the alpha to 0. -->
    <objectAnimator
        android:duration="0"
        android:propertyName="alpha"
        android:valueFrom="1.0"
        android:valueTo="0.0" />

    <!-- Rotate. -->
    <objectAnimator
        android:duration="@integer/card_flip_time_full"
        android:interpolator="@android:interpolator/accelerate_decelerate"
        android:propertyName="rotationY"
        android:valueFrom="180"
        android:valueTo="0" />

    <!-- Half-way through the rotation (see startOffset), set the alpha to 1. -->
    <objectAnimator
        android:duration="1"
        android:propertyName="alpha"
        android:startOffset="@integer/card_flip_time_half"
        android:valueFrom="0.0"
        android:valueTo="1.0" />

</set>

Fragmento que llama a otro fragmento: (la rotación del cubo debe ser visible entre este 2)

private void launchArticle(int prev, int pos){
        ArticleFragment newFragment = new ArticleFragment();
        Bundle args = new Bundle();
        args.putString("pos", pos);
        args.putInt("prev", prev);
        newFragment.setArguments(args);
        android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();
        Fragment currFrag = (Fragment)getFragmentManager().findFragmentById(R.id.headlines_fragment);
        if (currFrag != null) {
                transaction.hide(currFrag);
        }
        transaction.setCustomAnimations(
                R.animator.card_flip_right_in,
                R.animator.card_flip_right_out,
                R.animator.card_flip_left_in,
                R.animator.card_flip_left_out
                );

        transaction.replace(R.id.fragment_container, newFragment, pos);
        transaction.addToBackStack(null);

        transaction.commit();
}

ACTUALIZAR:

Me las arreglé para resolver el problema anterior usando una clase que extiende mi framelayout de los fragmentos que estoy usando

SlidingFrameLayout.java

public class SlidingFrameLayout extends FrameLayout
{
    private static final String TAG = SlidingFrameLayout.class.getName();
    public SlidingFrameLayout(Context context) {
        super(context);
    }

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

    public float getXFraction()
    {
        final int width = getWidth();  
        if(width != 0) return getX() / getWidth();  
        else return getX();  
    }

    public void setXFraction(float xFraction) {
        final int width = getWidth();  
        setX((width > 0) ? (xFraction * width) : -9999);  
    }

    public float getYFraction()
    {
        final int height = getHeight();  
        if(height != 0) return getY() / getHeight(); else return getY();   
    }

    public void setYFraction(float yFraction) {
        final int height = getHeight();  
        setY((height > 0) ? (yFraction * height) : -9999);  
    }
}

y agregando esto al objectAnimator:

<!-- Move -->
    <objectAnimator
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="@integer/card_flip_time_full"
        android:interpolator="@android:anim/linear_interpolator"
        android:propertyName="xFraction"
        android:valueFrom="-1"
        android:valueTo="0" />

Esto está funcionando mejor, pero los ejes de rottation están en el centro del FrameLayout y no está haciendo la ilusión de un cubo ... ¿Es posible establecer los ejes de rotación en un cierto punto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta