2014-09-16 8 views
5

Voglio implementare un cubo 3d di base e ruotarlo di 90 gradi sia in orizzontale che in verticale su Touch. Quello che voglio implementare è qualcosa di simile a ciò che è mostrato nell'immagine qui sotto.Animazione di Cube Flip per frammenti su Android

ho realizzato questo usando s' ViewPagerViewTransformer Ma io non sono contento del risultato. L'animazione non è molto fluida e non riesco a capovolgerla, devo trascinare il dito sull'intera larghezza dello schermo per ruotare il cubo. Voglio solo capovolgerlo, ma non sono in grado di ottenerlo.

enter image description hereenter image description here

ho usato BTGridPager-Android per realizzare quanto sopra. Ma come detto, non è molto convincente.

Ecco il mio codice ViewTransformer:

public abstract class ABaseTransformer implements PageTransformer { 
@Override 
public void transformPage(View page, float position) { 
    onPreTransform(page, position); 
    onTransform(page, position); 
    onPostTransform(page, position); 
} 
protected void onPreTransform(View page, float position) { 
    final float width = page.getWidth(); 

    page.setRotationX(0); 
    page.setRotationY(0); 
    page.setRotation(0); 
    page.setScaleX(1); 
    page.setScaleY(1); 
    page.setPivotX(0); 
    page.setPivotY(0); 
    page.setTranslationY(0); 
    page.setTranslationX(isPagingEnabled() ? 0f : -width * position); 

    if (hideOffscreenPages()) { 
    page.setAlpha(position <= -1f || position >= 1f ? 0f : 1f); 
    } else { 
    page.setAlpha(1f); 
    } 
} 


public class HorizontalCubeOutTransformer extends ABaseTransformer { 

@Override 
protected void onTransform(View view, float position) { 

    final float normalizedposition = Math.abs(1 - Math.abs(position)); 

    view.setPivotX(position < 0f ? view.getWidth() : 0f); 
    view.setPivotY(view.getHeight() * 0.5f); 
    view.setRotationY(90f * position); 
    view.setAlpha(normalizedposition); 
} 

@Override 
public boolean isPagingEnabled() { 
    return true; 
} 

} 



public class VerticalCubeOutTransformer extends ABaseTransformer { 


@Override 
protected void onTransform(View view, float position) { 

    final float normalizedposition = Math.abs(Math.abs(position) - 1); 
    view.setAlpha(normalizedposition); 
    view.setTranslationX(view.getWidth() * -position); 
    view.setTranslationY(position * view.getHeight()); 

    view.setPivotX(view.getWidth() * 0.5f); 
    view.setPivotY(position < 0f ? view.getHeight() : 0f); 
    view.setRotationX(90f * -position); 

} 

@Override 
public boolean isPagingEnabled() { 
    return false; 
} 
} 

Quello che vorrei sapere è come ruotare il cubo sul gesto a fogli mobili. Nota: mi piacerebbe farlo senza OpenGL o SurfaceView.

UPDATE: fino ad ora ho implementato il flip cubo utilizzando fragmenttransactionExtended ma ora ho altri problemi, come il frammento corrente scompare non appena il flip inizia

enter image description here

risposta

1

È possibile utilizzare FragmentTransactionExtended

FragmentTransactionExtended

fornisce tutte tip es delle animazioni tra gli spunti

+0

Ciao Shashidhar, è possibile farlo con tutte le direzioni? (Orizzontale e verticale) alla volta. –

+0

non l'ho mai fatto, ma puoi esaminare quel codice sorgente e combinare le animazioni. –

+0

Ehi @SHASHIDHARMANCHUKONDA, ho implementato la transazione come cubo usando FragmentTransactionExtended, ma ora il problema è mentre eseguo la transazione, il frammento corrente viene distrutto prima dell'inizio della transazione, e il frammento successivo sta funzionando bene (la transazione sembra che il prossimo frammento sia scostato moda cubo) – inni

Problemi correlati