形状背景渐变中的淡入动画

8
我没有找到任何符合我要求的帖子……我有一个矩形:
<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 tween动画,但我不知道如何将android:background属性分配给动画。有什么想法吗?
1个回答

10
创建一个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);

这很重要:在XML中我没有<solid android:color="#000000"/>属性,它在4.3上不起作用。仅使用渐变属性是不行的。(我知道这是一个旧的线程)。 - midiwriter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接