Android小部件动态渐变到背景

时间:2013-03-06 10:21:43

标签: android

我需要在我的视图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加载?

1 个答案:

答案 0 :(得分:0)

您无法将ShapeDrawable投射到BitmapDrawable

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

VS

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

因此,您只能投射到Drawable,因为这是这两个类共享的唯一(除了Object)常用功能。

  

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

如果通过"加载"你的意思是创建,然后有一堆createFrom...()方法,但目前你可能想要坚持使用XML以获得更好的灵活性。