Android изменить цвет фона ImagreView в режиме реального времени - PullRequest
0 голосов
/ 18 мая 2018

Я должен градиент 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 для этого макета, и я хотел бы изменить цвет фона с colorFilter в реальном времени

Возможно ли это в Android?

1 Ответ

0 голосов
/ 18 мая 2018

Я изменяю цвет фона градиента вида программно.

view.setBackground(getGradient(startColor, endColor))

Функция getGradient на основе startColor и 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;
    }
...