我需要在我的视图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加载?
答案 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以获得更好的灵活性。