2013-01-19 4 views
6

Ich habe nicht in der Lage gewesen, keine Beiträge zu finden, das zu tun, was ich will ... Ich habe ein Rechteck:Fade-Animation in Form Hintergrundgradienten

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

Die obige Form als Hintergrund Attribut in einem verwendet wird, 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" > 

ich möchte in diesem Rechteck in die und aus unterschiedlichen Steigungen langsam verblassen. Das Problem ist, dass RelativeLayout Größe dynamisch ändert, wie sein Inhalt ändert, so kann ich nicht einfach eine Bilddatei als Hintergrund verwenden (dies würde in der Tat den Textinhalt des Layouts verbergen, das sich häufig ändert). Ich habe versucht, das android:background Attribut zu entfernen und nur eine Bilddatei in meinem RelativeLayout zu verwenden, aber dann nimmt dieses Bild den ganzen Bildschirm, da ich wrap_content benutzen muss und diese Bilddatei in den Code gelegt werden muss, bevor die Textansichten die RelativeLayout besetzen (andernfalls ist der Text durch das Bild abgedeckt). Ich weiß, wie man eine Alpha-Tween-Animation macht, aber ich weiß nicht, wie man das Attribut android:background der Animation zuweist. Irgendwelche Ideen?

Antwort

7

Erstellen Sie ein TransitionDrawable, um zwischen zwei Zeichenobjekten zu wechseln, die Sie für den ausgeblichenen und den nicht vorhandenen Hintergrund verwenden.

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

Dann im Code verwenden, um den Übergang zu starten. Ich habe 2 Sekunden hart codiert (2000 millis)

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

Großen. Ich werde es versuchen. Vielen Dank. –

+0

Das ist ein mächtiges Werkzeug, vielen Dank. –

+0

Gern geschehen. – Simon