Autore Topic: Animazione non fluida su Lollipop  (Letto 667 volte)

Offline topperharley

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Animazione non fluida su Lollipop
« il: 13 Marzo 2015, 14:03:36 CET »
0
Ciao a tutti, sto implementando un progetto che prevede il flip di due imageview sovrapposte utilizzando la classe Animation. Prima di eseguire l'animazione cambio l'immagine "nascosta" che viene poi mostrata al termine del flip. L'animazione funziona alla perfezione se eseguita su qualsiasi dispositivo che monta un sistema operativo fino a KitKat compreso, mentre se la eseguo su Lollipop l'animazione si blocca circa a metà per una frazione di secondo per poi completare il suo corso a "velocità maggiorata" rendendo il movimento non fluido, da cosa può dipendere secondo voi? vi posto il codice che utilizzo e grazie a tutti per il vostro aiuto!

Codice (Java): [Seleziona]
public class FlipAnimator extends Animation {
    private Camera camera;
    private View fromView;
    private View toView;
    private float centerX;
    private float centerY;
    private boolean forward = true;
    private boolean visibilitySwapped;    
    public FlipAnimator(View fromView, View toView, int centerX, int centerY) {
        this.fromView = fromView;
        this.toView = toView;
        this.centerX = centerX;
        this.centerY = centerY;
        setDuration(500);
        setFillAfter(true);
        setInterpolator(new AccelerateDecelerateInterpolator());
    }
    public void reverse() {
        forward = false;
        View temp = toView;
        toView = fromView;
        fromView = temp;
    }
    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
        camera = new Camera();
    }
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {    
        final double radians = Math.PI * interpolatedTime;
        float degrees = (float) (180.0 * radians / Math.PI);
        if (interpolatedTime >= 0.5f) {
            degrees -= 180.f;
            if (!visibilitySwapped) {
                fromView.setVisibility(View.GONE);
                toView.setVisibility(View.VISIBLE);
                visibilitySwapped = true;
            }
        }
        if (forward)
            degrees = -degrees;
        final Matrix matrix = t.getMatrix();
        camera.save();
        camera.translate(0.0f, 0.0f, (float) (150.0 * Math.sin(radians)));
        camera.rotateY(degrees);
        camera.getMatrix(matrix);
        camera.restore();
        matrix.preTranslate(-centerX, -centerY);
        matrix.postTranslate(centerX, centerY);
    }
}

Offline topperharley

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Animazione non fluida su Lollipop
« Risposta #1 il: 27 Marzo 2015, 10:20:58 CET »
0
nessuna idea?

Offline MTWeb

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
Re:Animazione non fluida su Lollipop
« Risposta #2 il: 27 Marzo 2015, 21:56:05 CET »
0
Mmm non ti sono molto di aiuto, controllato che non sia qui il problema?

Codice (Java): [Seleziona]
setInterpolator(new AccelerateDecelerateInterpolator());
magari prova con un Interpolator diverso tipo LinearInterpolator, ovviamente l'animazione sarà diversa.

Offline topperharley

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Animazione non fluida su Lollipop
« Risposta #3 il: 07 Maggio 2015, 09:46:18 CEST »
0
Grazie per il consiglio MTWeb, purtroppo però ho provato tutti i tipi di interpolator ma il problema rimane lo stesso, sembra che lollipop "fatichi" nel momento dello switch delle view delle due imageview..per il momento ho ovviato escludendo dall'animazione l'SDK21 (non eseguirla è meglio che eseguirla male a mio parere)...e resto in attesa di illuminazione!!!  :D