Shape background gradient fade animation

I was not able to find entries that do what I want ... I have a rectangle:

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

The above form is used as a background attribute in a 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" > 

I want to slowly fade in and out of different gradients in this rectangle. The problem is that this RelativeLayout dynamically resizes as the content changes, so I can’t just use the image file as a background (this will actually hide the text content of the layout, which changes often). I tried to remove the android:background attribute and just use the image file in my RelativeLayout , but then this image takes up the whole screen, since I have to use wrap_content, and this image file has to be placed in the code before the text representations occupying the RelativeLayout ( otherwise the text is covered by the image). I know how to make an Alpha animation animation, but I don't know how to assign the android:background attribute of the animation. Any ideas?

+6
source share
1 answer

Create a TransitionDrawable to fade between the two drawings that you use for the faded and unset background.

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

Then use the code, start the transition. I hardcoded 2 seconds (2000 milliseconds)

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

All Articles