1

ビットマップをX、Yから新しいX'、Y'に移動し、アニメートしたいと思います。アクティビティの内部クラスとしてSurfaceViewがあり、そのSurfaceViewはスレッドとして実行されており、キャンバス上のすべての描画を処理しています。

スレッドのrunメソッドは次のとおりです。

public void run() 
    {
        while(threadOk == true)
        {
            if(!holder.getSurface().isValid())
                continue;

            Canvas canvas = null;
            try
            {
                canvas = holder.lockCanvas();
                letsDraw(canvas);
            }
            finally 
            {

                if (canvas != null)
                {
                    holder.unlockCanvasAndPost(canvas);
                }
            }
        }
    }

そして、ここにletsDraw(Canvas canvas)方法があります:

public void letsDraw(Canvas canvas)
    {
        canvas.drawARGB(255, 0, 102, 0);
        canvas.drawBitmap(card.getPic(), card.getX(), card.getY(), null);
    }

cardカスタムクラスのインスタンスですCard(Bitmap pic, float X, float Y)。問題は、私はこの状況にどのように取り組むかを知っているということです。ビットマップを数ピクセル「シフト」し、その間にアニメーション化したい。

4

2 に答える 2

1

あなたはそれをすべて間違っています。

これがあなたがすべきことの例です。

基本的に、x座標とy座標を更新する画像を「シフト」(アニメーション化)し、ビューを再描画します。invalidate()これは、ドローコールの最後にコールするだけで実行できます。

于 2013-02-13T11:30:35.543 に答える
0

これを実現する唯一の方法は、LinearInterpolatorを使用してビットマップのX位置とY位置を計算し、「letsDraw」メソッドで描画することだと思います。

于 2013-02-13T11:29:51.330 に答える