2015-05-14 60 views
11

我想在運行時的動畫我AnimatedVectorDrawable添加動畫,而無需使用.xml文件。其實我使用.xml文件一樣的文件的樣本顯示:在運行時

AnimatedVectorDrawable

所以,我有vector_drawable.xml包含<vector>嵌套<group><path>定義的形狀。

對於此載體我有animated_vector_drawable.xml包含<animated-vector>android:animation assinged <target>

最後一步是定義使用<objectAnimator>它使用animated_vector_drawable.xml

一切正常動畫文件rotation.xml,但出現的問題,當我需要創建很多不同的形狀(矢量)與許多不同的或類似的動畫,因爲這會生成很多.xml文件。

  1. 我不能包括準備從一個.xml文件到另一個(某種<include>標籤)準備<vector>所以我需要相同的代碼複製到另一個文件。這是非常煩人的。

  2. 如果我想使用一些<target>元素相同的動畫,但是每個動畫必須F.E.不同的延遲或任何屬性值(alpharotationinterpolator ...),我必須創建新.xml文件包含<objectAnimator>與改變一個屬性值,而不是使用相同的,一個文件,更改的屬性值。這也很煩人。

  3. 我發現我可以使用ObjectAnimator並設置alpha & fillColorAnimatedVectorDrawable但有一個問題,當我想改變它的translateXtranslateYrotation或任何其他屬性。沒有.xml沒有辦法做到這一點。我只想訪問<group>

+2

你怎麼做這個「我發現我可以使用ObjectAnimator並設置阿爾法和填充顏色爲AnimatedVectorDrawable編程」 – stack

+3

是。我也很想知道如何在這裏以編程方式訪問ObjectAnimator。 –

+0

我也有興趣知道這是否有解決方案 –

回答

0

您使用的構造函數使用絕對值(像素)創建動畫。

TranslateAnimation in = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 1.0f, 
Animation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f); 

嘗試使用Animation.RELATIVE_TO_PARENT以適合您的需求。