2013-01-19 137 views
6

我一直沒能找到做我想做的任何職位......我有一個矩形:的動畫漸變

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<stroke android:width="2dp" android:color="#FFFFFF" /> 
<padding android:left="4dp" 
    android:top="4dp" 
    android:right="4dp" 
    android:bottom="4dp" /> 
<corners android:radius="6dp" /> 
<gradient 
     android:angle="90" 
     android:startColor="#FF000000" 
     android:centerColor="#FF000000" 
     android:endColor="#FF0000cd" 
     android:type="linear" /> 

上述形狀作爲一個背景屬性RelativeLayout

<RelativeLayout 
    android:id="@+id/layoutBottom" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:animation="@anim/slide_top_to_bottom" 
    android:background="@drawable/rectangle4" 
    android:orientation="vertical" > 

我想慢慢淡入和淡出此矩形中的不同漸變。 問題是,這RelativeLayout動態改變大小,因爲它的內容發生變化,所以我不能只使用圖像文件作爲背景(這實際上會隱藏經常更改的佈局的文本內容)。我試圖刪除android:background屬性,只是在我的RelativeLayout中使用了一個圖像文件,但是這個圖像佔據了整個屏幕,因爲我必須使用wrap_content,並且在文本視圖佔據RelativeLayout之前必須將此圖像文件置於代碼中(否則文本是由圖像覆蓋)。我知道如何製作Alpha補間動畫,但我不知道如何將android:background屬性分配給動畫。有任何想法嗎?

回答

7

創建一個TransitionDrawable以在用於褪色和無瑕背景的兩個可繪製物之間淡出。

<?xml version="1.0" encoding="UTF-8"?> 
<transition xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- use whatever drawables you want, gradients, shapes etc--> 
    <item android:drawable="@drawable/faded" /> 
    <item android:drawable="@drawable/unfaded" /> 
</transition> 

http://developer.android.com/reference/android/graphics/drawable/TransitionDrawable.html

代碼然後用,開始轉換。我硬編碼了2秒(2000毫秒)

TransitionDrawable trans = (TransitionDrawable) myLayout.getBackground(); 
trans.startTransition(2000); 
+0

太好了。我會嘗試一下。謝謝。 –

+0

這是一個強大的工具,非常感謝你。 –

+0

不客氣。 – Simon