2014-07-06 90 views
5

我想讓圖像水平翻轉4次,同時縮小翻頁。Android - 翻轉動畫不能平滑翻轉

我有以下代碼爲翻轉:

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> 

然而,當我在模擬器中運行我的應用程序日食,翻轉的圖像顯示出尷尬的效果。正如你從圖像中看到的,有時在翻轉時,一個垂直邊比另一邊長,產生拉伸效果,這不是我想要的。任何有助於消除這種影響?

enter image description hereenter image description here enter image description here

回答

5

即效應被稱爲透視畸變。而這正是setCameraDistance()是什麼:

設置到該視圖沿Z軸(上 哪些視圖繪製正交於X/Y平面)從攝像機的距離。相機的距離會影響3D變換,例如繞X軸和Y軸旋轉 。如果rotationX或rotationY屬性發生變化並且此視圖很大(大於屏幕大小的一半),建議您始終使用大於 高度(X軸旋轉​​)或寬度( Y軸旋轉)。

相機與視平面之間的距離可能會影響視圖在圍繞x軸或y軸旋轉時的視角失真。例如,較大的距離將導致較大的視角,並且在視圖旋轉時不會有太多的視角失真 。短距離旋轉時可能會導致更多的透視失真,並且如果旋轉後的視圖部分位於攝像機的後面(這就是爲什麼建議至少使用距離至少爲 的距離),也可能導致一些 繪製僞影視圖的大小,如果視圖要旋轉)。

您可能想要擺弄該值,具體取決於視圖的尺寸和要實現的視覺效果。我得到了一個好結果:

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

太棒了!這就是我要的。而thx的信息。設置數字= 10已經非常令人滿意。 – Derekyy