0

ライブ壁紙やってます。に何かを描画Runnableするメソッドを呼び出す (5 秒ごとに更新される) があります。一連のビットマップを描画することになっている別のクラスのメソッドを呼び出します (遅延があるため、アニメーション化されます)。次のビットマップが遅延して描画されるように、以下のコードをどのように変更しますか?draw()Canvas

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();
    }
4

1 に答える 1

1

Canvas と Drawablesに関する Android の API ガイドから:

グラフィックを Canvas に直接描画します。このようにして、適切なクラスの onDraw() メソッド (Canvas を渡す) を個人的に呼び出すか、Canvas draw...() メソッドの 1 つ (drawPicture() など) を呼び出します。そうすることで、アニメーションを制御することもできます。

これは、フレームごとに自分でアニメーションを実行する必要があることを意味します。複雑なグラフィックスを実際に描画する必要がない場合は、標準ビューに戻すことを検討してください。そうすれば、 のようなヘルプ クラスを使用できますAnimationDrawable。Canvas で独自のアニメーションを作成する方法の例については、こちらを確認してください。

于 2013-08-04T09:16:09.987 に答える