2010-07-06 81 views
1

有什麼辦法可以將動畫應用到視圖的屬性?目前,我知道的唯一動畫是將動畫應用於整個視圖。我想知道我是否可以將動畫應用到屬性(例如,layout_width)android動畫屬性

回答

0

即使您只想將動畫應用於視圖的屬性,您仍然必須將其設置爲視圖的動畫。

<scale 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fromXScale="1.0" 
    android:toXScale="0" /> 

此動畫例如更改視圖的寬度。

您可以通過

yourView.setAnimation(AnimationUtils.loadAnimation(this, R.anim.animation_name)); 
+1

沒錯,但問題是,這種縮放整個視圖。因此,如果視圖具有1傾角邊框的背景(例如),則隨着動畫播放邊框變粗。我想將動畫應用到屬性,然後將xml drawable重新繪製,以使邊框保持1傾角。 – Ben 2010-07-06 16:25:13

+1

你可以使用9-Patch作爲背景的drawable,並將邊框定義爲非拉伸區域,所以邊框保持固定。 – Mannaz 2010-07-07 12:31:16

+0

我喜歡這個主意......但是......現在問題變成了,有沒有辦法通過xml drawable創建9patch ... :) – Ben 2010-07-07 22:22:53

3

設置動畫您可以編輯動畫影響的觀點的某些部分。例如,我想要一個ViewFlipper看起來像是垂直翻轉過來的,所以我將動畫的y縮小到中間的0,動畫從中間增長y。這是他們的樣子。

shrink_to_middle.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:interpolator="@android:anim/linear_interpolator" 
     android:fromXScale="1.0" 
     android:toXScale="1.0" 
     android:fromYScale="1.0" 
     android:toYScale="0.0" 
     android:fillAfter="false" 
     android:duration="200" /> 
    <translate 
     android:fromYDelta="0" 
     android:toYDelta="50%" 
     android:duration="200"/> 
</set> 

grow_from_middle.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:interpolator="@android:anim/linear_interpolator" 
     android:fromXScale="1.0" 
     android:toXScale="1.0" 
     android:fromYScale="0.0" 
     android:toYScale="1.0" 
     android:fillAfter="false" 
     android:startOffset="200" 
     android:duration="200" /> 
    <translate 
     android:fromYDelta="50%" 
     android:toYDelta="0" 
     android:startOffset="200" 
     android:duration="200"/> 
</set>