46 votes

Transition standard d'Android Fragment non animée

Im en utilisant le v4 android bibliothèque de compatibilité de développer une tablette, l'INTERFACE utilisateur à l'aide de fragments spécialement pour Android 2.2 appareils et jusqu'.

Tout fonctionne comme il se doit, sauf que je ne peux pas obtenir toutes les animations de travail, pas même la norme animations.

Code:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ABCFragment abcFragment = new ABCFragment();
    ft.replace(R.id.main_frame_layout_fragment_holder,abcFragment);     
    ft.addToBackStack(null);
    ft.commit();

Au lieu d'utiliser un transit de l'animation, le fragment se fige pendant environ une seconde et disparait et le nouveau s'affiche.

À l'aide de ft.setCustomAnimations(android.R.anim.slide_in_left,android.R.anim.slide_out_right); ne marche pas non plus.

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.synergygb.mycustomapp"
android:id="@+id/LinearLayout01" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical"
android:gravity="bottom">
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/main_frame_layout_fragment_holder">
</FrameLayout>
<!-- OTHER FIXED UI ELEMENTS-->
</RelativeLayout>

J'ai lu que la coutume d'animation ont été battus à la bibliothèque de compatibilité, mais personne ne semble être d'avoir des problèmes avec la norme transitions. J'ai testé cela sur un 3.2.1 Motorola Xoom, 2.3 Galaxy Tab 7", 2.2 émulateur, et même sur un HTC G2 avec 2.3.4.

Ce qui pourrait être mal ici, je ne vois personne d'autre ayant ces questions.

38voto

blindstuff Points 7595

J'ai finalement obtenu ce travail après beaucoup d'essais et d'erreur.

Tout d'abord, obtenir la dernière ACL, il n'a fixer animations personnalisées, et bien que ce n'était pas mon problème exact, une fois ceux-travaillé, j'ai fini de les utiliser au lieu de la norme de transitions.

Maintenant im en utilisant:

ft.setCustomAnimations(android.R.anim.fade_in,android.R.anim.fade_out,android.R.anim.fade_in,android.R.anim.fade_out);

La clé pour faire fonctionner sur les deux sous Android 2.1, 2.2 et 2.3, ainsi que sous Android 3.0+ a été de faire ce qui suit:

  • Assurez-vous que vous utilisez UNIQUEMENT les Api disponibles à l'API de plus bas NIVEAU que vous souhaitez soutenir (dans mon cas 2.1).
  • Compiler à l'aide d'Android 3.0.
  • Dans le fichier de manifeste, ensemble android:hardwareAccelerated="true" à l'intérieur de votre balise application.

Fragment d'animations maintenant travailler sur tous les appareils. Si vous ne mettez pas les infos supplémentaires dans la balise application, l'animation sera ocurr, mais dans un très très agitée, ce qui vous semble qu'il n'est pas arrivé à tous.

Espérons que cela aide quelqu'un dans le futur!

Comme une note, il y a quelques API outils de vérification afin de vous assurer que vous n'utilisez pas n'importe quel Api qui ne coûtent pas disponible pour vous. Je préfère travailler sur 2.1 si l'IDE ne pas montrer quoi que ce soit je ne peux pas l'utiliser, une fois que j'ai stable code je saute en arrière à la compilation sur la 3.0

35voto

dvd Points 545

Essayez d’obtenir la liste ACL plus récente encore, ils ont fixé : http://code.Google.com/p/Android/issues/detail?ID=15623#C19

Aussi, j’ai remarqué que pour setCustomAnimations, il doit être défini avant la transaction appels comme remplacer pour pouvoir prendre effet.

4voto

Shubh Points 1009

pour réaliser des animations de top_to_bottom de fragment,

procédez de même pour faire de haut en bas

top_to_bottom_fragment.xml

où `` indiquer le bas de votre mise en page du fragment.

3voto

mark.kedzierski Points 494

J'ai ajouté le support NineOldAndroids à la bibliothèque de support Google. Voir http://www.github.com/kedzie/Support_v4_NineOldAndroids pour plus de détails. Il permet d’utiliser des animations de propriétés pour les transitions de fragments, les transformations de page, etc.

0voto

Gunnar Karlsson Points 15071

J'espère que ça aide quelqu'un. La documentation de l'API dit d'utiliser objectAnimator pour les animations de fragments, mais même avec le dernier package de compatibilité, objectAnimator au format xml n'a pas été accepté par le compilateur.

Cela fonctionne pour moi:

Pour Android 3.0 ou version ultérieure: déclarez xml objectAnimator dans le dossier res / animator.

Avec package de compatibilité inférieur à 3.0: déclarez une animation xml dans le dossier res / anim.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X