Android FragmentTransaction Custom Animation (Unknown Animator Name: Translate)

SalicBlu3 picture SalicBlu3 · Jul 20, 2013 · Viewed 53.2k times · Source

I'm trying to get a custom animation to work with my fragment.

I've followed the online tutorials but I've been getting the below error:

java.lang.RuntimeException: Unknown animator name: translate

The XML for the animation is below:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
    android:fromXDelta="100%"
    android:toXDelta="0"
    android:duration="300" />
</set>

The Java file is shown below:

public void goCategory(View v) {        
    FragmentTransaction ft = fm.beginTransaction();     
    ft.setCustomAnimations(R.animator.anim_in_left, R.animator.anim_out_left);              
    ft.show(fragment);
    ft.commit();
}

I'm having trouble understanding the solutions in the other threads. If someone could dumb it down for me, I'd really appreciate it.

Answer

minivac picture minivac · Dec 1, 2013

Probably you are mixing two apis. There are two cases:

  • If targeting below 3.0 or using support v4 fragments: You have to use the old animations api, that is, the one you are using (they go into anim/, and are R.anim.thing)

  • If you are targeting above 3.0 and using native fragments: You have to use the new animation apis, that is, ObjectAnimators (they go into animator/ and are R.animator.thing).