2014-08-29 6 views
1

Je développe un jeu basé sur le tour, et il y a 2 plateaux de jeu, et quand je veux basculer entre les 2 plateaux, j'utilise une animation coulissante. Mais voici le problème. J'ai 4 fichiers XML d'animation, dans-droit, dehors-droit, dedans gauche, dehors-gauche. ici est l'un d'entre eux:Réglage dynamique des valeurs xml de l'animateur

<objectAnimator 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="1000" 
    android:propertyName="x" 
    android:valueFrom="1000" 
    android:valueTo="0" 
    android:valueType="floatType" /> 

Le glissement fonctionne, mais je tester ce jeu sur un émulateur avec 1280px de hauteur (et le jeu est en cours d'exécution en mode paysage), à la fin de la diapositive, il est une partie large de 280px, qui ne glisse pas, se cache juste à la fin de l'animation coulissante. Lorsque je mets la valeur valuefrom à 2000, c'est mieux, parce que les deux cartes ne se fondent pas dans l'autre, mais dans ce cas il y a une zone noire large de 720 px. Savez-vous, comment puis-je définir ces valeurs dynamiquement en fonction de la taille réelle de l'écran? Merci.

+0

double possible de [animer la transition entre les fragments] (http://stackoverflow.com/questions/4932462/animate-the-transition-between-fragments) vérifier spécifiquement la réponse choisie. – Simas

Répondre

1

Utilisez les méthodes d'affacturage de ObjectAnimator.

Exemple:

ObjectAnimator anim = ObjectAnimator.ofFloat(targetObject, "x", 0.f, 1000.f); 
anim.setDuration(300); 
anim.start(); 

Vous pouvez obtenir les paramètres de l'affichage ou la taille des vues par programmation avec le code comme

getWindowManager().getDefaultDisplay().getWidth(); 

View view = ...; 
view.getHeight(); 

Voir:

Questions connexes