天天看點

Android屬性動畫 XML

使用XML編寫動畫

我們可以使用代碼來編寫所有的動畫功能,這也是最常用的一種做法。不過,過去的補間動畫除了使用代碼編寫之外也是可以使用<code>XML</code>編寫的,是以屬性動畫也提供了這一功能,即通過<code>XML</code>來完成和代碼一樣的屬性動畫功能。

通過XML來編寫動畫可能會比通過代碼來編寫動畫要慢一些,但是在重用方面将會變得非常輕松,比如某個将通用的動畫編寫到<code>XML</code>裡面,我們就可以在各個界面當中輕松去重用它。

如果想要使用<code>XML</code>來編寫動畫,首先要在<code>res</code>目錄下面建立一個<code>animator</code>檔案夾,所有屬性動畫的<code>XML</code>檔案都應該存放在這個檔案夾當中。然後在<code>XML</code>檔案中我們一共可以使用如下三種标簽:

對應代碼中的ValueAnimator

對應代碼中的ObjectAnimator

對應代碼中的AnimatorSet

那麼比如說我們想要實作一個從0到100平滑過渡的動畫,在XML當中就可以這樣寫:

而如果我們想将一個視圖的alpha屬性從1變成0,就可以這樣寫:

其實XML編寫動畫在可讀性方面還是挺高的,上面的内容相信不用我做解釋大家也都看得懂吧。

另外,我們也可以使用XML來完成複雜的組合動畫操作,比如将一個視圖先從螢幕外移動進螢幕,然後開始旋轉360度,旋轉的同時進行淡入淡出操作,就可以這樣寫:

這段XML實作的效果和我們剛才通過代碼來實作的組合動畫的效果是一模一樣的,每個參數的含義都非常清楚,相信大家都是一看就懂,我就不再一一解釋了。

最後XML檔案是編寫好了,那麼我們如何在代碼中把檔案加載進來并将動畫啟動呢?隻需調用如下代碼即可:

調用AnimatorInflater的loadAnimator來将XML動畫檔案加載進來,然後再調用setTarget()方法将這個動畫設定到某一個對象上面,最後再調用start()方法啟動動畫就可以了,就是這麼簡單。

繼續閱讀