10

En mi aplicación quiero voltear la vista .. He visto tal animación en iPhone. Y lo mismo que quiero en mi aplicación de Android.Android: ¿Cómo hacer la animación flip para la actividad de Android, como el iPhone flip horizontal de izquierda a derecha?

Quiero voltear toda la vista de actividades. Es posible ? He visto algunos ejemplos para el lanzamiento en Android. Pero en ese ejemplo, la vista está en la misma actividad. ¿Es posible establecer dicha vista para la actividad diferente? o para hacer tal efecto mientras pasas de una actividad a otra?

Por favor, vea el complemento para el efecto tirón en iPhone:

enter image description here

En caso afirmativo, por favor, dar referencia a ningún ejemplo de demostración o código. Gracias.

+0

look para android.R.anim en resp. La carpeta de la versión sdk puede encontrar algunos ejemplos. –

Respuesta

5

Primero defina su propia animación y guárdela en XML bajo res-> anim o java class. No tengo ningún otro ejemplo de trabajo que no sea API Demos que viene con la descarga de SDK en Eclipse, si está buscando una animación de inversión intente ver la clase de Transición 3D.

Después de eso, tenga su actividad para cargar esa animación, preferiblemente cárguela en Crear. Por favor refiérase a esta question

4

se puede hacer una muy similar con estos archivos XML.

rotate_out.xml

<?xml version="1.0" encoding="utf-8"?> 

<scale 
    android:duration="300" 
    android:fromXScale="1.0" 
    android:fromYScale="1.0" 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:toXScale="0.0" 
    android:toYScale="0.90" /> 

<alpha 
    android:duration="1" 
    android:fromAlpha="1.0" 
    android:startOffset="500" 
    android:toAlpha="0.0" /> 

rotate_in.xml

<?xml version="1.0" encoding="utf-8"?> 

<scale 
    android:duration="200" 
    android:fromXScale="0.0" 
    android:fromYScale="0.90" 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="500" 
    android:toXScale="1.0" 
    android:toYScale="1.0" /> 

<alpha 
    android:duration="1" 
    android:fromAlpha="0.0" 
    android:startOffset="500" 
    android:toAlpha="1.0" /> 

Luego, en la transición de anulación código después startActivity() o acabado():

overridePendingTransition(R.anim.rotate_in, R.anim.rotate_out); 
+0

esto es rotar, no voltear – Boy

+0

@Boy, probablemente es una escala, no rotar, pero parece una voltereta. – CoolMind

+0

Esto lamentablemente no es similar en absoluto: https://ibb.co/jBaE6Q – matheszabi

1

En iOS retrato: Rotation to middle ios

"Una gran cantidad de la otra los tutoriales y los códigos de muestra no producen saltos 3D creíbles. Una simple rotación en el eje y no es lo que se hace en iOS. " Después de casi 30 horas buscando muestras, tengo que estar de acuerdo. Tengo una película, donde podría tomar una captura de pantalla en el medio. El lado derecho de la vista tiene: - un movimiento hacia la izquierda Y una contracción al 95%. El lado izquierdo de la vista tiene: - un movimiento hacia el lado derecho Y un encogimiento al 80%.

En Android completa (estado inicial): android initial

media Android: android middle

código de Android:

// @param interpolatedTime The value of the normalized time (0.0 to 1.0) 
// @param t The Transformation object to fill in with the current transforms. 
protected void applyTransformation(float interpolatedTime, Transformation t){ 

    float degrees = toDegree*interpolatedTime; 
    //float rad = (float) (degrees * Math.PI/180.0f); 

    Matrix matrix = t.getMatrix(); 
    camera.save(); 

    camera.rotateY(degrees); 
    camera.getMatrix(matrix); 
    camera.restore(); 

    matrix.preTranslate(-centerX, -centerY);// M' = M * T(dx, dy) 
    matrix.postTranslate(centerX, centerY); // M' = T(dx, dy) * M 
} 

Una versión mejorada del código se puede encontrar en la mayoría de los ejemplos :

// @param interpolatedTime The value of the normalized time (0.0 to 1.0) 
    // @param t The Transformation object to fill in with the current transforms. 
    protected void applyTransformation(float interpolatedTime, Transformation t){ 

     float degrees = toDegree*interpolatedTime; 
     //float rad = (float) (degrees * Math.PI/180.0f); 

     Matrix matrix = t.getMatrix(); 
     camera.save(); 

     camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime); 
     camera.rotateY(degrees); 

     camera.getMatrix(matrix); 
     camera.restore(); 

     matrix.preTranslate(-centerX, -centerY);// M' = M * T(dx, dy) 
     matrix.postTranslate(centerX, centerY); // M' = T(dx, dy) * M 
    } 

improved android

Algunas diferencias son: - el lado derecho de la vista no se mueve como la forma en la IOS.

Aquí los ejes de la cámara de Android: axes

sí creo una traslación en los ejes Z no lo arregla. Quizás de alguna manera también necesitó un psiquiatra.

float dz = (float) (centerX * Math.sin(rad)); 
camera.translate(0f, 0f, -dz); 

Todavía no es suficiente. Para mucho es el encogimiento del lado izquierdo.

z

Cuestiones relacionadas