overridependingtransition fragments example entre animations animaciones android android-fragments android-animation

fragments - Android FragmentTransaction Custom Animation(Desconocido Nombre del animador: Traducir)



overridependingtransition fragment (3)

Como @minivac respondió que estás mezclando dos API. Consulte el ejemplo de las animaciones de la tarjeta gráfica desplegable de las guías de capacitación de Android para obtener más información sobre cómo agregar animaciones personalizadas para las transacciones de fragmentos. Resuelve exactamente tu problema.

Estoy tratando de obtener una animación personalizada para trabajar con mi fragmento.

Seguí los tutoriales en línea, pero obtuve el siguiente error:

java.lang.RuntimeException: nombre del animador desconocido: traducir

El XML para la animación está a continuación:

<?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>

El archivo de Java se muestra a continuación:

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(); }

Tengo problemas para entender las soluciones en los otros hilos. Si alguien pudiera dejarlo en ridículo, realmente lo agradecería.

Gracias


No funcionará, debe usar el animador de objetos

animator / slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:propertyName="x" android:valueFrom="1000" android:valueTo="0" android:valueType="floatType" /> </set>

animator / slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:propertyName="x" android:valueFrom="0" android:valueTo="-1000" android:valueType="floatType" /> </set>

Subcategoría de clase

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub // return super.onCreateView(inflater, container, savedInstanceState); View view = (ViewGroup) inflater.inflate(R.layout.product_frame, null); getFragmentManager().beginTransaction() .replace(R.id.sub_header, new Sub_Header()).commit(); getFragmentManager() .beginTransaction() .setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_right, 0, 0) .replace(R.id.product_frame, new Sub_Catagory_Grid()).commit(); view.getWidth(); return view; }


Probablemente estás mezclando dos apis. Hay dos casos:

  • Si la orientación es inferior a 3.0 o si se utilizan fragmentos de soporte v4: debe usar la API anterior, es decir, la que está utilizando (entran en anim / y son R.anim.thing )

  • Si tiene una orientación superior a 3.0 y usa fragmentos nativos: debe usar las nuevas api de animación, es decir, ObjectAnimators (entran en animator / y son R.animator.thing ).