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
).