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' ViewPager
ViewTransformer
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.
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
Ciao Shashidhar, è possibile farlo con tutte le direzioni? (Orizzontale e verticale) alla volta. –
non l'ho mai fatto, ma puoi esaminare quel codice sorgente e combinare le animazioni. –
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