Как указать оттенок как пользовательский атрибут в ImageView при использовании MotionLayout

Как указать цвет оттенка для imageView в качестве пользовательского атрибута при использовании MotionLayout. В настоящее время я могу только указать собственный цвет фона в моем MotionScene XML-файл:

<ConstraintSet android:id="@+id/end">
    <Constraint
        android:id="@+id/imageView"
        android:layout_width="180dp"
        android:layout_height="180dp"
        motion:layout_constraintBottom_toBottomOf="parent"
        motion:layout_constraintEnd_toEndOf="parent"
        motion:layout_constraintStart_toStartOf="parent"
        motion:layout_constraintTop_toTopOf="parent"
        motion:layout_constraintVertical_bias="0.75"
        motion:srcCompat="@drawable/ic_android_black_24dp" >
        <CustomAttribute
            motion:attributeName="backgroundColor"
            motion:customColorValue="#9999FF" />
    </Constraint>
</ConstraintSet>

1 ответ

Обратите внимание, что вы используете backgroundColor но атрибут android:background, За tint Вы должны написать:

            <CustomAttribute
                motion:attributeName="ColorFilter"
                motion:customColorValue="#9999FF" />

Насколько я знаю, особенность CustomAttribute использует отражение, а не атрибуты из xml и т. д. Имейте это в виду для всех пользовательских атрибутов.

Вы можете использовать ColorFilter.

<CustomAttribute
    motion:attributeName="colorFilter"
    motion:customColorValue="@color/your_tint_color" />

Так как оттенок принимает значение цвета, он должен быть почти идентичен backgroundColor

<CustomAttribute motion:attributeName="tint" motion:customColorValue="@color/your_tint_color" />

Другие вопросы по тегам