以下是一個用視圖動畫實現(xiàn)先平移后縮放的動畫的xml代碼
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<translate
android:duration="1500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="300"
android:toYDelta="300" />
<scale
android:duration="1500"
android:startOffset="1500"
android:fromXScale="1"
android:fromYScale="1"
android:toXScale="2"
android:toYScale="2"
android:pivotY="50%"
android:pivotX="50%"/>
</set>
期望的執(zhí)行結果是先平移后縮放??墒前l(fā)現(xiàn)在縮放的時候還是會發(fā)生移動,這是怎么回事呢?實驗了很多次,都是這樣。然后我把第二個動畫改成了旋轉動畫,發(fā)現(xiàn)旋轉的中心點依然在執(zhí)行該動畫的View的最原始的位置?;腥淮笪颍繉?,視圖動畫并沒有真正改變View的真實位置(牢記)。
因為View真實的位置并沒有改變,所以雖然設置了android:pivotY="50%"和android:pivotX="50%",但是此時的縮放中心并不是移動之后所看到的View的中心,而是在視圖原來位置的中心。也就是說,此時的縮放中心在你所看到的View的外面。
那么對于縮放中心不處于View上面的時候,它是怎么縮放的呢?
經(jīng)過我的實驗發(fā)現(xiàn):假如該View離縮放中心的距離是s,縮放倍數(shù)為n,那么它縮放之后,它距離縮放中心的距離將變成s*n。
解決辦法:目前我還沒有想到直接用視圖動畫的解決辦法,只能用屬性動畫了。