-1

Runnableと を使用して ImageView をアニメーション化しようとしていHandler.postDelayedます。ビットマップ操作はすべて正常に機能しますが、アニメーションの代わりに ImageView の最終結果を取得します。ここで何が問題なのですか?

final ImageView imageView = (ImageView) findViewById(R.id.imageView);
    final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.clock_flip_top);
    final Matrix matrix = new Matrix();
    for (i = 0; i < 30; i++) {
        float c = i/5;

        src = new float[] { 0, 0, bitmap.getWidth(), 0,
                    bitmap.getWidth(), bitmap.getHeight(), 0,
                    bitmap.getHeight() };
        dst = new float[] { 0 - c, 0, bitmap.getWidth() + c, 0,
                bitmap.getWidth(), bitmap.getHeight(), 0,
                bitmap.getHeight() };

        anim = new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub

                matrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1);
                Bitmap newBitmap = Bitmap
                        .createBitmap(bitmap, 0, 0, bitmap.getWidth(),
                                bitmap.getHeight(), matrix, true);
                imageView.setImageBitmap(newBitmap);
                handler.postDelayed(anim, i * 200);

            }

        };
        anim.run();
    }
4

1 に答える 1

0

あなたは電話しませんrun()。Runnable オブジェクトを別のスレッドで実行するには、コンストラクターで Runnable オブジェクトを Thread オブジェクトに渡す Thread オブジェクトを作成する必要があります。start()次に、スレッド オブジェクトを呼び出します。スレッドの開始方法の詳細については、こちらを参照してください。

于 2012-06-16T12:23:54.667 に答える