使用Runnable动画?

时间:2012-06-16 12:01:36

标签: android animation handler runnable

我正在尝试使用RunnableHandler.postDelayed为ImageView设置动画。位图操作都可以正常工作但不是动画我得到了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();
    }

1 个答案:

答案 0 :(得分:0)

您不会致电run()。要让Runnable对象在另一个线程中运行,必须创建一个Thread对象,将构造函数中的Runnable对象传递给Thread对象。然后在线程对象上调用start()。有关如何启动线程的详细说明,请参阅here