come fare android animazione delle immagini

sto cercando di ottenere una semplice immagine, animazione andando. voglio fare sembra come se l’elicottero pale dell’elica sono di svolta. ho 3 immagini per l’elicottero, e sto mostrando una di queste immagini, a seconda dell’animazione progresso. il problema è che tutte e tre le immagini finiscono per sovrapporsi a vicenda invece di uno solo immagine che mostra in una sola volta, creando in tal modo l’animazione. questo è quello che ho fatto finora, ho anche provato a cancellare tela facendo questa tela.drawColor(di Colore.NERO), ma che vorresti cancellare tutta la tela, che non è quello che voglio.

questo è quello che ho:

1) in Vista di classe:

classe statica Elicottero {
privato lungo mLastUpdate;
privato lungo mProgress = 0;
finale privati float mX;
finale privati float mio;

    private final Bitmap mHelicopter1;
    private final Bitmap mHelicopter2;
    private final Bitmap mHelicopter3;
    private final float mRadius;

    Helicopter(long mLastUpdate, float mX, float mY,
              Bitmap helicopter1, Bitmap helicopter2, Bitmap helicopter3) {
        this.mLastUpdate = mLastUpdate;
        this.mX = mX;
        this.mY = mY;
        this.mHelicopter1 = helicopter1;
        this.mHelicopter2 = helicopter2;
        this.mHelicopter3 = helicopter3;
        mRadius = ((float) mHelicopter1.getWidth()) / 2f;

    }

    public void update(long now) {
        mProgress += (now - mLastUpdate);

        if(mProgress >= 400L)
        {
         mProgress = 0;
        }
        mLastUpdate = now;
    }

    public void setNow(long now) {
        mLastUpdate = now;
    }

    public void draw(Canvas canvas, Paint paint) 
    {       

        if (mProgress < 150L) 
        {
            canvas.drawBitmap(mHelicopter1, mX - mRadius, mY - mRadius, paint);
        } 
        else if (mProgress < 300L) 
        {
            canvas.drawBitmap(mHelicopter2, mX - mRadius, mY - mRadius, paint);

        } 
        else if(mProgress < 400L)
        {
         canvas.drawBitmap(mHelicopter3, mX - mRadius, mY - mRadius, paint);
        }

    }

    public boolean done() {
        return mProgress > 700L;
    }
}

private ArrayList<Helicopter> mHelicopters = new ArrayList<Helicopter>();

2) questo viene chiamato nel run() del thread:

private void doDraw(Canvas canvas) 
    {
     final long now = SystemClock.elapsedRealtime();

        canvas.save();

        for (int i = 0; i < mHelicopters.size(); i++) {
            final Helicopter explosion = mHelicopters.get(i);
            explosion.update(now);
        }

        for (int i = 0; i < mHelicopters.size(); i++) {
            final Helicopter explosion = mHelicopters.get(i);
            explosion.draw(canvas, mPaint);
        }

        canvas.restore();
    }

qualcuno mi può aiutare? ho guardato un sacco di esempi sul web con animazione, sembrano sempre di coinvolgere il testo, ma non le immagini. grazie.

InformationsquelleAutor user270811 | 2010-04-23

 

3 Replies
  1. 1

    Di solito il filo che disegna l’area di lavoro deve ridisegnare l’intera area di lavoro e materiale di scena/gli attori. In tal modo, se si incrementa le pale di un elicottero indice dell’immagine sarà disegnato in luogo dopo che il resto del quadro è stato ridisegnato. Qualcosa di simile a: Sfondo->Elicottero->Blade1 prossima iterazione di Sfondo->Elicottero->Blade2.

Lascia un commento