Ich versuche, eine einfache Bild-Animation gehen zu bekommen. Ich möchte es sieht aus, als ob der Hubschrauber Propellerblätter drehen. Ich habe 3 Bilder für den Hubschrauber, und ich zeige eines dieser Bilder in Abhängigkeit von der Animation Fortschritt. das Problem ist, dass alle drei Bilder am Ende überlappen einander im Gegensatz zu nur ein Bild zeigt auf einmal, wodurch die Animation. dies ist, was ich bisher getan habe, ich habe sogar versucht, Leinwand zu löschen, indem Sie diese canvas.drawColor(Color.BLACK), aber das würde löschen Sie die gesamte Leinwand, die nicht das ist, was ich will.
Das ist, was ich habe:
1) in der Klasse View:
static class Hubschrauber { private long mLastUpdate; private long mFortschritt = 0; private final float mX; private final float mY;
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) dies wird in der run() eines Threads aufgerufen:
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();
}
kann mir jemand helfen? ich habe mir viele beispiele im internet zum thema animation angesehen, sie scheinen immer text zu beinhalten, aber keine bilder. danke.