-1

我正在尝试使用Runnableand为 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 对象在另一个线程中运行,您必须创建一个 Thread 对象,将构造函数中的 Runnable 对象传递给 Thread 对象。然后调用start()线程对象。有关如何启动线程的详细说明,请参见此处。

于 2012-06-16T12:23:54.667 回答