android - 从 shape drawable 获取渐变资源

标签 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>

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

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

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

但是我怎样才能从中得到 GradientDrawable?

最佳答案

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

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();

关于android - 从 shape drawable 获取渐变资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50758317/

相关文章:

android - Dagger2 - null 而不是注入(inject)的对象

android - 从 RemoteViews 获取 TextView 使其文本可滚动

android - ImageView 部分位于布局之上

Android:多渐变形状

android - 渐变不适用于 Lollipop API 21

java - 在应用程序中动态更改布局

html - 什么是首选且总重量更小 - CSS3 渐变/框阴影或 Sprite ?

android - TabHost TabSpec setIndicator 中的标签和图标是否相互排斥?

android - 带有头像、文本和图标的列表的 Material 设计建议

在 Android Studio 的插件中找不到 Android Drawable Importer