Android - Flip Animation没有顺利翻转

Der*_*kyy 8 animation android flip scaletransform

我想让我的图像水平翻转4次,同时缩小图像.

我有以下代码用于翻转:

ObjectAnimator flipAnimation = ObjectAnimator.ofFloat(view, "rotationY", 0.0f, 1440f);
flipAnimation.setDuration(4000);
flipAnimation.start();
Run Code Online (Sandbox Code Playgroud)

我在scale_down.xml中有以下代码用于缩小:

<scale
        android:duration="4000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0.1"
        android:toYScale="0.1" >
    </scale>
Run Code Online (Sandbox Code Playgroud)

但是,当我在eclipse中在模拟器上运行我的应用程序时,翻转图像显示出一种尴尬的效果.从图像中可以看出,有时在翻转时,一个垂直边比另一边长,产生拉伸效果,这不是我想要的.任何有助于消除这种影响?

在此输入图像描述 在此输入图像描述 在此输入图像描述

mat*_*ash 11

这种效应称为透视变形.这正是setCameraDistance()为了:

设置从摄像机到此视图的沿Z轴(与绘制视图的X/Y平面正交)的距离.相机的距离会影响3D变换,例如围绕X轴和Y轴的旋转.如果更改了rotationX或rotationY属性并且此视图很大(超过屏幕大小的一半),建议始终使用大于高度(X轴旋转​​)或宽度(Y轴旋转)的摄像机距离)这个观点.

当摄像机围绕x轴或y轴旋转时,摄像机与视平面的距离会影响视图的透视畸变.例如,较大的距离将导致较大的视角,并且在旋转时视图将不会有太多的透视变形.短距离可能会在旋转时造成更多的透视扭曲,并且如果旋转的视图部分地在摄像机后面结束,也可能导致一些绘制伪影(这就是为什么建议使用距离至少远远大于如果要旋转视图,请查看.)

您可能想要根据视图的尺寸和想要实现的视觉效果来调整值.我得到了一个很好的结果:

view.setCameraDistance(10 * view.getWidth());
Run Code Online (Sandbox Code Playgroud)