2013-01-19 92 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