Bitmaps animieren inneren Leinwand
Mache ich ein Live Wallpaper. Ich habe eine Runnable
(die Aktualisierung alle 5 Sekunden) wo ich es nenne, ein draw()
Methode, die zieht etwas auf einem Canvas
. Es ruft eine Methode in einer anderen Klasse, die angeblich so zeichnen Sie eine Reihe von bitmaps (mit einer Verzögerung, so ist es animiert). Wie würde ich es ändern Sie den code unten, so dass das nächste bitmap gezogen würde mit einer Verzögerung?
int imageToDraw = 10;
while(imageToDraw>=0)
{
Bitmap b = BitmapFactory.decodeResource(mContext.getResources(), mContext.getResources().getIdentifier("image_"+imageToDraw, "raw", mContext.getPackageName()));
float centerX = (width - b.getWidth())/2;
float centerY = (height - b.getHeight())/2;
Paint p = new Paint();
p.setColor(Color.BLACK);
mCanvas.drawRect(0f, 0f, (float)width, (float)height, p); //draws a rectangle to clear the screen
mCanvas.drawBitmap(b, centerX, centerY, new Paint());
--imageToDraw;
b.recycle();
}
- Gibt es einen Grund, brauchen Sie Leinwand?
- Denn ich Tue ein Live-Wallpaper und ich bin Zeichnung einige andere Sachen auch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Android-API Guide Leinwand und Drawables:
Dies bedeutet, dass Sie zum ausführen der animation selbst, frame-by-frame. Wenn Sie nicht wirklich brauchen, das zeichnen von komplexen Grafiken, die Umstellung zurück zum standard-Ansichten, so dass Sie verwenden können, helfen, Klasse wie
AnimationDrawable
. Überprüfen Sie hier ein Beispiel dafür, wie selbst die animation im Canvas-Bereich.