Android - Flip Animation没有顺利翻转

时间:2014-07-06 04:31:56

标签: android animation flip scaletransform

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

我有以下代码用于翻转:

ObjectAnimator flipAnimation = ObjectAnimator.ofFloat(view, "rotationY", 0.0f, 1440f);
flipAnimation.setDuration(4000);
flipAnimation.start();

我在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>

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

enter image description here enter image description here enter image description here

1 个答案:

答案 0 :(得分:11)

该效果称为透视变形。这正是setCameraDistance()的用途:

  

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

     

相机距视平面的距离会产生影响   视图在围绕x旋转时的透视畸变   或y轴。例如,较大的距离将导致较大的距离   可视角度,并没有太大的透视失真   视图旋转。短距离可能会导致更多   旋转时的透视失真,也可能导致一些   如果旋转的视图在部分后面部分结束,则绘制工件   相机(这就是为什么建议至少使用距离   至于视图的大小,如果要旋转视图。)

您可能想要调整值,具体取决于视图的尺寸和您想要实现的视觉效果。我得到了一个好结果:

view.setCameraDistance(10 * view.getWidth());