2013-06-17 6 views
4

J'ai commencé une nouvelle application Android et j'ai un problème.ViewFlipper 3D-Card-Flip

Je veux coder un ViewFlipper dans certains ImageViews. (Pas vraiment difficile)

Les éléments doivent tourner (avec cet anim 3D-Flip: http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html) lorsque l'utilisateur clique sur eux. (J'ai déjà implémenté ceci, aussi).

Mon idée ne fonctionne que pour le premier élément de ViewFlipper. J'ai commencé à gonfler cette première vue, mais le nouvel élément ne tourne pas.

Est-il possible de "cloner/copier" la première vue avec ses événements onclick, de sorte que la seconde vue est également retournée?

Merci pour votre aide.

Répondre

3

La solution la meilleure et la plus simple est ici: https://github.com/genzeb/flip

Utilisez en faisant la transition flip dans l'un de vos ViewAnimator (comme ViewFipper):

AnimationFactory.flipTransition (viewFlipper, FlipDirection.LEFT_RIGHT);

1

Vous pouvez l'utiliser comme exemple, voici un animateur d'objet. :

<?xml version="1.0" encoding="utf-8"?> 
    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
     android:propertyName="rotationY" 
     android:valueFrom="0" 
     android:valueTo="360" > 
    </objectAnimator> 

J'ai remarqué que certains états de tutoriel ne prennent que valueTo. Cela vous permettra de retourner une seule fois puisque votre vue est déjà sur 360, elle ne retournera plus alors utilisez toujours valueFrom aussi. Et voici le code qui renversera une vue:

public static void flip(Context context, View view) { 
    ObjectAnimator anim = (ObjectAnimator) AnimatorInflater.loadAnimator(
      context, R.animator.flip); 
    anim.setTarget(view); 
    anim.setDuration(1000); 
    anim.end(); 
    anim.start(); 
} 
+0

oui, cela fonctionne. Bon travail! quand il tourne, le dos de la vue devrait être une autre vue. J'ai essayé votre exemple avec 2 animateurs flip: le premier de 0 à 90 et l'autre de 90 à 180. La première vue tourne avec le premier animateur et le "backView" avec le second animateur. J'ai placé le 2ème vide au fond du premier et ça ne marche pas. – Billabong

+0

Pourquoi ne pas essayer d'ajouter AnimatorListener et commencer une deuxième animation quand la première finit. Vous ne pouvez pas simplement appeler une autre animation sur une nouvelle ligne, je pense que c'est ce que vous faites. – Milan

+0

comment puis-je connecter l'actionListener avec votre code? – Billabong