2013-01-19 13 views
6

non sono stato in grado di trovare qualsiasi post che faccio quello che voglio ... ho un rettangolo:animazione Dissolvenza in forma sfondo sfumato

<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" /> 

La forma di cui sopra è utilizzato come un attributo di sfondo in un 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" > 

voglio svanire lentamente dentro e fuori diversi gradienti in questo rettangolo. Il problema è che questo RelativeLayout modifica le dimensioni dinamicamente mentre il suo contenuto cambia, quindi non posso semplicemente usare un file immagine come sfondo (questo in realtà nasconderebbe il contenuto del testo del layout che cambia frequentemente). Ho provato a rimuovere l'attributo android:background e ad usare semplicemente un file immagine nel mio RelativeLayout ma questa immagine occupa l'intero schermo poiché devo usare wrap_content e questo file immagine deve essere inserito nel codice prima delle visualizzazioni di testo che occupano lo RelativeLayout (altrimenti il ​​testo è coperto dall'immagine). So come creare un'animazione con interpolazione alfa, ma non so come assegnare l'attributo android:background all'animazione. Qualche idea?

risposta

7

Crea un TransitionDrawable per dissolvere tra due drawable che si utilizzano per lo sfondo sbiadito e non sfumato.

<?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

Quindi utilizzare nel codice, avviare la transizione. Ho hard coded 2 secondi (2000 millis)

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

Grande. Lo proverò. Grazie. –

+0

Questo è uno strumento potente, grazie mille. –

+0

Prego. – Simon

Problemi correlati