我想让我的图像水平翻转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中在模拟器上运行我的应用程序时,翻转图像显示出尴尬的效果。从图像中可以看出,有时在翻转时,一个垂直边比另一边长,产生拉伸效果,这不是我想要的。有没有帮助消除这种影响?
答案 0 :(得分:11)
该效果称为透视变形。这正是setCameraDistance()
的用途:
设置沿Z轴的距离(与X / Y平面正交) 从相机到该视图绘制了哪些视图。相机的 距离会影响3D变换,例如围绕变换 X和Y轴。如果更改了rotationX或rotationY属性 这个视图很大(超过屏幕大小的一半),它是 建议始终使用大于的相机距离 高度(X轴旋转)或此视图的宽度(Y轴旋转)。
相机距视平面的距离会产生影响 视图在围绕x旋转时的透视畸变 或y轴。例如,较大的距离将导致较大的距离 可视角度,并没有太大的透视失真 视图旋转。短距离可能会导致更多 旋转时的透视失真,也可能导致一些 如果旋转的视图在部分后面部分结束,则绘制工件 相机(这就是为什么建议至少使用距离 至于视图的大小,如果要旋转视图。)
您可能想要调整值,具体取决于视图的尺寸和您想要实现的视觉效果。我得到了一个好结果:
view.setCameraDistance(10 * view.getWidth());