comment faire android image de l'animation
je suis en train d'essayer d'obtenir une image simple d'animation d'aller. je veux faire c'est comme si l'hélicoptère hélice à pales tournent. j'ai 3 images pour l'hélicoptère, et je suis en train de montrer l'une de ces images en fonction de l'animation de progrès. le problème est que tous les trois images finissent par se chevauchent les uns les autres plutôt que de simplement une image montrant à la fois, créant ainsi de l'animation. c'est ce que j'ai fait jusqu'à présent, j'ai même essayé d'effacer de la toile en faisant cette toile.drawColor(de Couleur.NOIR), mais qui permettrait d'effacer l'ensemble de la toile, ce qui n'est pas ce que je veux.
c'est ce que j'ai:
1) dans la classe d'Affichage:
statique de la classe Hélicoptère {
privé d'mLastUpdate;
privé d'mProgress = 0;
privé final float mX;
privé final float ma;
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) ce qui est appelé dans le run() du 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();
}
quelqu'un peut m'aider? j'ai regardé beaucoup d'exemples sur le web sur l'animation, ils semblent toujours impliquer le texte, mais pas les images. merci.
OriginalL'auteur user270811 | 2010-04-23
Vous devez vous connecter pour publier un commentaire.
Généralement le fil qui tire la toile retrace l'ensemble de la toile et tous les accessoires/acteurs. De cette façon, si vous incrément de pales d'hélicoptère index de l'image il doit être élaboré en place après le reste de la toile a été redessiné. Quelque chose comme: Background->Hélicoptère->Blade1 prochaine itération de Fond->Hélicoptère->Blade2.
OriginalL'auteur methodin
C'est peut-être tard, mais la réponse semble être ici :
http://developer.android.com/guide/topics/graphics/2d-graphics.html#frame-animation
OriginalL'auteur Patrick Ferreira
La documentation la plus récente semble être ici:
http://developer.android.com/guide/topics/graphics/drawable-animation.html
OriginalL'auteur bkurzius