从形状drawable获取渐变资源

时间:2018-06-08 10:12:10

标签: android gradient android-drawable android-resources

我似乎真的遇到了以下问题:

我有一个在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>
&#13;
&#13;
&#13;

我在画布上多次绘制这个形状。

现在,我想做的是能够动态更改编程代码中渐变的中心。 我可以通过以下方式从我的资源中获取形状:

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

但是如何从中获取GradientDrawable?

1 个答案:

答案 0 :(得分:1)

终于找到答案以防其他人遇到类似的问题:

&#13;
&#13;
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();
&#13;
&#13;
&#13;