Android背景颜色从左到右过渡

时间:2017-08-19 21:53:27

标签: java android xml

我想知道是否有办法从相对布局动画背景,以便颜色从例如蓝色变为黄色,从左到右在大约1秒内变化。 (此动画应在触发时触发)。 感谢任何帮助, TY

2 个答案:

答案 0 :(得分:1)

我认为您可以使用AnimationDrawable,这是最基本的三种颜色方式:蓝色,渐变蓝黄色和黄色:

res / drawable 中创建一个gradient.xml文件(从左到右):

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:angle="0"
        android:endColor="#FFFF00"
        android:startColor="#0000FF" />
</shape>

然后在同一文件夹中创建一个animalion-list.xml文件:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="#0000FF" android:duration="333"/>

    <item android:drawable="@drawable/gradient" android:duration="333"/>

    <item android:drawable="#FFFF00" android:duration="333"/>
</animation-list>

将动画列表作为背景应用于相对布局:

<RelativeLayout:
    android:...
    android:...
    android:drawable="@drawable/animation-list"
    android:... >

    ...

</RelativeLayout>

在您的代码中:

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relative_layout_id);
AnimationDrawable animationDrawable = (AnimationDrawable) relativeLayout.getBackground();

mybutton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
            animationDrawable.start();
    }
});

我并不认为这段代码会给你你的确切期望,但想象一下,你应该得到你想要的。

希望这有帮助。

答案 1 :(得分:0)

Drawable gradient_2

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:startColor="@color/deep_purple_500"
        android:endColor="@color/blue_700"
        android:angle="0"/>
</shape>

以及xml

中的用法
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient_2"
    android:orientation="vertical">
</LinearLayout>

你可以改变颜色为0,45,90,180的agle

android:angle="0"

您还可以添加centerColor

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="0"
        android:centerColor="#D8EDFD"
        android:endColor="#D8EDFD "
        android:startColor="#F6F9FF " />
</shape>

background would be like