2013-06-17 3 views
4

Я начал новое Android-приложение, и у меня есть одна проблема.ViewFlipper 3D-Card-Flip

Я хочу закодировать ViewFlipper в некоторых ImageViews. (Не очень сложно)

Элементы должны быть повернуты (с помощью этого 3D-Flip anim .: http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html), когда пользователь нажимает на них. (Я уже реализовал это тоже).

Моя идея работает только для первого элемента в ViewFlipper. Я начал раздувать это первое представление, но новый элемент не переворачивается.

Возможно ли «клонировать/копировать» первый вид с его событиями onclick, так что второй вид тоже переворачивается?

Спасибо за помощь.

ответ

3

Лучшее и самое простое решение здесь: https://github.com/genzeb/flip

Используйте переход флип в любой из ваших ViewAnimator (таких как ViewFipper), выполнив:

AnimationFactory.flipTransition (viewFlipper, FlipDirection.LEFT_RIGHT);

1

Вы можете использовать это как образец, вот объект-аниматор. :

<?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> 

Я заметил, что в каком-то учебнике указано только значение. Это позволит вам перевернуть только один раз, так как ваше представление уже на 360, оно больше не будет переворачиваться, поэтому всегда используйте valueFrom. А вот код, который будет переворачивать любой вид:

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

Да, это работает. хорошая работа! когда он поворачивается, задняя часть представления должна быть другим видом. Я попробовал ваш пример с двумя флип-аниматорами: первый из 0 до 90, а другой - от 90 до 180. Первый вид превращается в первый аниматор, а «backView» - со вторым аниматором. Я разместил вторую пустоту в нижней части первой, и она не работает. – Billabong

+0

Почему бы не попробовать добавить AnimatorListener и начать вторую анимацию, когда заканчивается первая. Вы не можете просто вызвать другую анимацию в новой строке, я считаю, что вы это делаете. – Milan

+0

Как я могу подключить actionListener с вашим кодом? – Billabong