나는 간단한 이미지 애니메이션을 얻으려고하고있다. 마치 헬리콥터의 프로펠러 날개가 돌고있는 것처럼 보이게하고 싶습니다. 헬리콥터에 대한 3 개의 이미지가 있으며 애니메이션 진행 상황에 따라 이러한 이미지 중 하나를 표시하고 있습니다. 문제는 한 번에 하나의 이미지가 표시되는 것과 대조적으로 세 이미지가 모두 서로 겹쳐서 결국 애니메이션을 만드는 것입니다. 이것은 내가 지금까지 한 일이다. 나는이 canvas.drawColor (Color.BLACK)을 사용하여 캔버스를 지우려고 시도했으나 전체 캔버스를 지워 버렸다. 이는 내가 원하는 것이 아니다. 안드로이드 이미지 애니메이션을 수행하는 방법
이
내가 무엇을 가지고 : View 클래스에서1) :
정적 클래스 헬리콥터 { 개인 긴 mLastUpdate; private long mProgress = 0; private final float mX; 개인 최종 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)이이 스레드의 run()에서 호출되는 :
이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();
}
누군가가 나를 도울 수 있습니까? 애니메이션에서 웹의 예제를 많이 보았습니다. 텍스트는 항상 포함되지만 이미지는 포함하지 않는 것 같습니다. 감사.