9

我想让我的图像水平翻转 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 中的模拟器上运行我的应用程序时,翻转图像显示出一种尴尬的效果。从图片中可以看出,有时在翻转时,垂直的一侧比另一侧长,产生拉伸效果,这不是我想要的。任何有助于消除这种影响?

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

4

1 回答 1

15

这种效果称为透视失真。这正是setCameraDistance()

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

当围绕 x 或 y 轴旋转时,相机与视图平面的距离会影响视图的透视失真。例如,距离远会导致视角大,旋转时视图不会有太大的透视失真。较短的距离可能会在旋转时导致更多的透视失真,并且如果旋转的视图最终部分位于相机后面,也可能导致一些绘图伪影(这就是为什么建议使用至少与视图,如果要旋转视图。)

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

view.setCameraDistance(10 * view.getWidth());
于 2014-07-06T04:55:59.587 回答