0

ここでのコードは値を受け取り、bmpXそれらbmpYを使用して画面上のその場所にビットマップを描画します。これは私が望んでいたとおりに機能しますが、他の描画要素をキャンバスに適用し、それらすべてを同じ量だけ移動させたいため、canvas.translate()関数を使用して画像の動きを処理したいと思います。canvas.drawBitmap()方向。

私の質問は、コードのどこに移動してcanvas.drawBitmap()、最初にキャンバスに描画するだけで、その後いつでも移動できるようにすることcanvas.translate()ですか? コードをどこに配置しても、 の位置をどれだけ変更しても、描画した時点で画像がフリーズしますcanvas.translate()。いわばキャンバスに画像を「貼り付ける」ことが可能であり、キャンバスを移動すると、画像も一緒に移動します。

public void run() {
        // TODO Auto-generated method stub
        while(isRunning) {
            if(!surfaceHolder.getSurface().isValid()) {
                continue;
            }

            canvas = surfaceHolder.lockCanvas();
            canvas.drawRGB(255, 255, 255);
            canvas.drawBitmap(bmp, bmpX-(bmp.getWidth()/2), 
                                     bmpY-(bmp.getHeight()/2), null);

            //canvas.translate(bmpX, bmpY);

            surfaceHolder.unlockCanvasAndPost(canvas);

        }
}

私の問題を十分に明確に説明したことを願っています。ありがとう!

4

1 に答える 1

0

明確にするために、ここで自分の質問に答えます。オフラインで入手した情報の後。このようなスレッドでは UI を実行できません。代わりに Android UI スレッドを使用する必要がありました。runOnUIUpdatethread および非同期タスク

于 2013-04-11T11:14:22.580 に答える