Fragment de transition standard non animée

J'utilise la bibliothèque de compatibilité Android v4 pour développer une UI de tablette utilisant des fragments spécifiquement pour les périphériques Android 2.2 et plus haut.

Tout fonctionne comme il se doit, sauf que je ne peux pas animer d'animations, même pas les animations standard.

  • Fab.show () n'est pas animé la première fois après l'initialisation d'une nouvelle activité
  • Impossible de résoudre: com.android.support:customtabs:
  • L'appel nécessite un niveau API 23 (la minute actuelle est 14): android.app.Activity # requestPermissions, checkSelfPermission
  • Dialogue de progression personnalisée avec la rotation de l'image Squre avec AsynTask
  • Comment implémenter des feuilles de fond en utilisant la nouvelle bibliothèque de support de conception 23.2
  • Inheriting AppCompat 22.1.1 Dialog colorAccent from app theme ne fonctionne pas
  • 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 une animation de transit, le fragment se gèle pendant environ une seconde et le juste disparaît et le nouveau apparaît.

    En utilisant:

     ft.setCustomAnimations(android.R.anim.slide_in_left,android.R.anim.slide_out_right); 

    Ne fonctionne 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 l'animation personnalisée était cassée dans la bibliothèque de compatibilité, mais personne ne semble avoir des problèmes avec les transitions standard. J'ai testé ceci 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.

    Qu'est-ce qui pourrait être faux ici?

    6 Solutions collect form web for “Fragment de transition standard non animée”

    J'ai finalement réussi à fonctionner après de nombreux essais et erreurs.

    D'abord et avant tout, obtenez la dernière ACL, elle a réparé des animations personnalisées, et alors que ce n'était pas mon problème exact, une fois que cela a fonctionné, j'ai fini par les utiliser au lieu des transitions standard.

    En ce moment, j'utilise:

     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 le faire fonctionner sur Android 2.1, 2.2 et 2.3, ainsi que Android 3.0+ était de faire ce qui suit:

    • Assurez-vous d'utiliser SEULEMENT les API disponibles pour le niveau d'API le plus bas que vous souhaitez supporter (dans mon cas 2.1).
    • Compilez avec Android 3.0.
    • Dans le fichier manifeste, configurez android:hardwareAccelerated="true" dans votre tag d'application.

    Les animations de fragments fonctionnent maintenant sur tous les périphériques. Si vous ne définissez pas les informations supplémentaires dans la balise de l'application, l'animation se produira, mais d'une manière très agitée, il semble que cela n'arrive pas du tout.

    J'espère que cela aidera quelqu'un dans le futur!

    En tant que note, il existe des outils de vérification de l'API afin de vous assurer que vous n'utilisez aucune API qui ne vous est pas disponible. Je préfère travailler sur 2.1, donc l'IDE ne montre rien que je ne peux pas utiliser, une fois que j'ai un code stable, je retourne à la compilation sur 3.0

    Essayez d'obtenir l'ACL la plus récente, ils l'ont réparé: http://code.google.com/p/android/issues/detail?id=15623#c19

    Aussi, j'ai remarqué que pour setCustomAnimations, il doit être défini avant les appels de transaction comme remplacer pour prendre effet.

     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.in_from_left, R.anim.out_to_right, R.anim.in_from_right, R.anim.out_to_left); ft.replace(android.R.id.content, newFrag); ft.addToBackStack(null); ft.commit(); 

    J'ai ajouté NineOldAndroids à la bibliothèque Google Support. Voir http://www.github.com/kedzie/Support_v4_NineOldAndroids pour plus de détails. Il permet d'utiliser les animations de propriétés pour les transitions de fragments, les transformateurs de pages et d'autres choses.

    Pour effectuer l'animation top_to_bottom pour le fragment,

    Suivez-le pour faire de haut en bas

     FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.top_to_bottom_fragment, android.R.animator.fade_out); ft.replace(R.id.simple_fragment, fragment); ft.commit(); 

    Top_to_bottom_fragment.xml

     <objectAnimator android:duration="400" android:valueFrom="-800" android:valueTo="0" android:propertyName="y" android:valueType="floatType" xmlns:android="http://schemas.android.com/apk/res/android" /> 

    valueFrom="-800" indique le bas de votre disposition des fragments.

    Vous devez appeler setCustomAnimations avant d'ajouter le fragment. Cela permet d'ajouter plusieurs fragments avec des animations différentes.

    J'espère que ça aide quelqu'un. Les API indiquent utiliser l'objetAnimateur pour les animations de fragments, mais même avec le dernier objet de package de compatibilité L'éditeur dans xml n'a pas été accepté par le compilateur.

    Cela fonctionne pour moi:

    Pour Android 3.0 ou version ultérieure: déclarer xml objectAnimator dans res / animator folder.

    Avec le package Compatibility pour moins de 3.0: déclarez l'animation xml dans le dossier res / anim.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.