Получить ресурс градиента из фигуры - PullRequest
0 голосов
/ 08 июня 2018

Кажется, я действительно застрял со следующей проблемой:

У меня есть форма, определенная в файле XML, описанная следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/star_shape_item">
    <rotate android:fromDegrees="45">
        <shape android:shape="oval" >
            <gradient
                android:endColor="#32816f6f"
                android:gradientRadius="40%p"
                android:startColor="#ffffff"
                android:type="radial" >
            </gradient>
            <stroke
                android:width="1dp"
                android:color="@android:color/darker_gray" />
        </shape>
    </rotate>
</item>
</layer-list>

Я рисую эту форму на холсте несколько раз.

Теперь я хотел бы иметь возможность динамически изменять центрградиент в моем программном коде.Я могу получить форму из моих ресурсов с помощью:

LayerDrawable layers = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.star_shape);
RotateDrawable starShape = (RotateDrawable)(layers.findDrawableByLayerId(R.id.star_shape_item));

Но как мне получить GradientDrawable из этого?

1 Ответ

0 голосов
/ 11 июня 2018

наконец нашел ответ, если кто-то еще столкнулся с подобной проблемой:

LayerDrawable layers = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.star_shape);
RotateDrawable starShape = (RotateDrawable) (layers.findDrawableByLayerId(R.id.star_shape_item));
GradientDrawable shapeGradient = (GradientDrawable) starShape.getDrawable();
...