旋转图像,逐个角度,等待刷新

时间:2013-05-08 19:10:29

标签: android multithreading view rotation runnable

我正在尝试将图像旋转一整圈,一次一个小角度增量。

每次进行的旋转应在显示上一次旋转后开始。

旋转发生的速度对我来说没有任何意义 - 只要显示每个旋转,我都可以。这意味着它实际上可以被认为是“太快”。

我为此尝试了几种不同的方法。我有一个工作解决方案(至少在这些方面 - 我一直在玩代码,所以它可能不完全可编译)。

handler是一个Handler实例,它与以下所有位于我正在开始的活动类主体中的代码一起使用。 rotationIncrement是0.36,所以我们通过在每次前一轮完成时将新的Runnable发布到UI线程来“旋转”图像1000次。

public void start(View view) {
    MainActivity.rotation=0;
    imageview.setScaleType(ScaleType.MATRIX);
    handler.post(new RotationRunnable());       
}

public class RotationRunnable implements Runnable {
        @Override
        public void run() {
            MainActivity.rotation+=rotationIncrement;
            //Log.d("Rotating", String.valueOf(rotation));
            Matrix matrix = new Matrix(imageview.getImageMatrix());
            matrix.setRotate(rotation);
            imageview.setImageMatrix(matrix);
            imageview.invalidate();

            if (MainActivity.rotation<360) {
                handler.post(new RotationRunnable());
            } else {
                Log.d("Elapsed", String.valueOf((System.nanoTime()-startTime)));
            }
        }
}

上面的代码给了我一个非常流畅的“动画”。旋转1000次,我的三星Galaxy Nexus需要大约16秒才能完成。

我的问题是这个;

有更好的方法吗 - 如果目标是让旋转尽可能快地发生 - 并保持每个旋转按顺序显示?

这不会被实现到产品或任何东西 - 这更像是一个人工测试,所以我不是在寻找任何更“方便”的动画旋转方式。

0 个答案:

没有答案