Android – Flip Animation没有顺利翻转

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

我有以下代码用于翻转:

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

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

   

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

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

这种效应称为透视失真 。 这正是setCameraDistance()的用途:

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

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

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

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