以下是一個用視圖動畫實現(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í)行結(jié)果是先平移后縮放获洲∧ト。可是發(fā)現(xiàn)在縮放的時候還是會發(fā)生移動元潘,這是怎么回事呢畔乙?實驗了很多次,都是這樣翩概。然后我把第二個動畫改成了旋轉(zhuǎn)動畫牲距,發(fā)現(xiàn)旋轉(zhuǎn)的中心點(diǎn)依然在執(zhí)行該動畫的View的最原始的位置≡勘樱恍然大悟牍鞠?對,視圖動畫并沒有真正改變View的真實位置
(牢記)上沐。
因為View真實的位置并沒有改變皮服,所以雖然設(shè)置了android:pivotY="50%"
和android:pivotX="50%"
,但是此時的縮放中心并不是移動之后所看到的View的中心参咙,而是在視圖原來位置的中心龄广。也就是說,此時的縮放中心在你所看到的View的外面蕴侧。
那么對于縮放中心不處于View上面的時候择同,它是怎么縮放的呢?
經(jīng)過我的實驗發(fā)現(xiàn):假如該View離縮放中心的距離是s净宵,縮放倍數(shù)為n,那么它縮放之后敲才,它距離縮放中心的距離將變成s*n裹纳。
解決辦法:目前我還沒有想到直接用視圖動畫的解決辦法,只能用屬性動畫了紧武。