是否有可能将Matrix用于此Android View Rotation?

时间:2015-07-25 11:57:36

标签: android matrix android-animation android-transitions

我遇到过这段代码,在应用于视图时非常有效:

view.setPivotX(view.getWidth());
view.setPivotY(view.getHeight() * 0.5f);
view.setRotationY(90f * progress);

我尝试了很多配置,只使用Matrix和相机,但这不是我的强项......它甚至可能吗?

View的旋转和Matrix旋转之间的行为是如此根本不同?

我想要完成的是视图之间的动画转换,但我想在没有视图的情况下实现这一点!

特别是像this一样的立方体旋转。

我见过的所有其他例子不会导致同样的效果!!

不同之处在于我想让它在Animation对象中运行,如下所示:

public class CubeRotate
        extends Animation {

    public CubeRotate() {
    }

    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        final Matrix matrix = t.getMatrix();

        ...
        What should be here to get the same result?
        ...

        Log.d("Matrix", "\n" + matrix);
    }
}

1 个答案:

答案 0 :(得分:1)

public static class CubeRotate extends Animation {

    private Camera mCamera;

    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
        mCamera.setLocation(width, height * .5F, 0);
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {

        mCamera.rotateY(90f * interpolatedTime);
        mCamera.getMatrix(t.getMatrix());
    }
}