android改变imagreView的背景颜色实时

时间:2018-05-18 07:30:10

标签: android android-animation android-imageview android-drawable

我必须使用渐变xml文件。

第一个渐变文件

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
 <gradient
    android:angle="225"
    android:endColor="#53D671"
    android:startColor="#46C0AF" />

第二个渐变文件

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<gradient
    android:angle="225"
    android:endColor="#5C2678"
    android:startColor="#FF4A5A" />

我也有渐变动画xml文件

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">


<item
    android:drawable="@drawable/first_gradient"
    android:duration="6000"/>

<item
    android:drawable="@drawable/second_gradient"
    android:duration="6000"/>

我尝试在此布局中更改渐变背景(使用两个渐变文件)

    AnimationDrawable animationDrawable = (AnimationDrawable) layout.getBackground();

    animationDrawable.setEnterFadeDuration(6000);
    animationDrawable.setExitFadeDuration(6000);

    animationDrawable.start();

正如您所看到的,背景在6秒后发生了变化。我的问题是。是否可以实时检查渐变背景颜色? 我在这个布局上有一个imageView,我想在realTime中用colorFilter改变背景颜色

是否可以在Android中使用?

1 个答案:

答案 0 :(得分:0)

我以编程方式更改视图背景渐变颜色。

view.setBackground(getGradient(startColor, endColor))

基于startColor的getGradient函数和渐变的endColor(也可以为渐变提供两个以上的值)。

public GradientDrawable getGradient(int startColor, int endColor){
        GradientDrawable gd = new GradientDrawable();
        gd.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
        gd.setColors(new int[] {startGDColor, endGDColor});
        gd.setCornerRadius(0f);
        return gd;
    }