2

我需要向我的 View 添加渐变ImageView。我只是在使用这段代码:

    ShapeDrawable sd = new ShapeDrawable(new RectShape());
    sd.getPaint().setShader(new LinearGradient(0, 0, 0, 300, color, color, Shader.TileMode.REPEAT));

    mUpdateViews.setImageViewBitmap(R.id.imageview, ((BitmapDrawable)sd).getBitmap());

但问题是:

“无法从 ShapeDrawable 转换为 BitmapDrawable”

是否可以从代码加载渐变,而不是从 XML 加载?

4

1 回答 1

0

您不能投射ShapeDrawableBitmapDrawable

java.lang.Object
   ↳ android.graphics.drawable.Drawable
       ↳ android.graphics.drawable.ShapeDrawable

对比

java.lang.Object
   ↳ android.graphics.drawable.Drawable
       ↳ android.graphics.drawable.BitmapDrawable

所以你只能转换为 Drawable ,因为这是这两个类共享的唯一(除了 Object )通用功能。

是否可以从代码加载渐变,而不是从 XML 加载?

如果“加载”是指创建,那么有很多createFrom...()方法,但目前您可能希望坚持使用 XML 以获得更好的灵活性。

于 2013-03-06T10:32:03.423 回答