10

Nella mia applicazione voglio capovolgere la vista .. Ho visto questa animazione in iPhone. E la stessa cosa voglio nella mia applicazione Android.Android: come creare l'animazione di flip per l'attività di Android, come l'iPhone flip orizzontale da sinistra a destra?

voglio capovolgere la vista intera attività. È possibile ? Ho visto qualche esempio per il flip in Android. Ma in questo tutti gli esempi la vista è nella stessa attività. È possibile impostare tale vista per le diverse attività. o fare questo effetto mentre si passa da un'attività all'altra?

Si prega di consultare lo snap per l'effetto flip in iPhone:

enter image description here

Se sì, allora si prega di dare riferimento ad alcun esempio demo o di codice. Grazie.

+0

look per android.R.anim in resp. cartella versione sdk puoi trovare alcuni esempi. –

risposta

5

In primo luogo definire la propria animazione e né riporlo in XML sotto RES-> anim o classe Java. Non ho alcun esempio di lavoro diverso dalle demo API fornite con il download dell'SDK in Eclipse, se stai cercando un'animazione flipping prova a guardare alla classe Transition 3D.

Dopo di che hanno la vostra attività per caricare che l'animazione, preferibilmente caricarlo in onCreate. Si prega di fare riferimento a questo question

4

si può fare una molto simile con questi file 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" /> 

Poi nel codice di override di transizione dopo startActivity() o finitura():

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

questo è ruotare, non capovolgere – Boy

+0

@Boy, probabilmente è una scala, non ruota, ma sembra un lancio. – CoolMind

+0

Questo purtroppo non è affatto simile: https://ibb.co/jBaE6Q – matheszabi

1

A iOS ritratto: Rotation to middle ios

"Un sacco di altra tutorial e codici di esempio non producono lanci 3D credibili. Una semplice rotazione sull'asse y non è ciò che viene fatto in iOS. " Dopo quasi 30 ore alla ricerca di campioni devo essere d'accordo. Ho un film, dove potrei fare uno screenshot al centro. Il lato destro della vista ha: - un movimento a sinistra E una riduzione al 95%. Il lato sinistro della vista ha: - un movimento sul lato destro E un restringimento all'80%.

Alla Android completa (stato iniziale): android initial

mezzo Android: android middle

codice di 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 versione migliorata del codice può essere trovata nella maggior parte dei esempi :

// @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

Alcune differenze sono: - il lato destro della vista non si muove come come l'iOS.

Ecco gli assi della macchina fotografica Android: axes

io credo che una traslazione su Z. non risolvere il problema. Forse aveva bisogno anche di uno strizzacervelli in qualche modo.

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

Ancora non abbastanza. Per molto è il rimpicciolire il lato sinistro.

z