我需要在android中创建一个圆形形状并设置为图像背景,有两个图像共享相同的形状,所以我需要为每个图像设置不同的背景。
这是形状代码:
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="@color/colorWhite"/>
</shape>
</item>
在XML文件中:
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_margin="2dp"
android:src="@drawable/color"
android:tag="#FF660000" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_margin="2dp"
android:src="@drawable/color"
android:tag="#FFFF0000" />
默认情况下,形状有白色,但我需要为不同的图像设置不同,我该怎么做。
它实际上是一个绘画应用程序,用户可以从特定的给定颜色中选择颜色。
请告诉我如何更改形状颜色?
更新
由于答案是提供它不再工作,我也检查了下面的评论,答案是不正确的。我检查了自己,并给出了错误。
检查出来:
btnCapturePicture = (ImageView) view.findViewById(R.id.btnCapturePicture);
if(btnCapturePicture != null) {
GradientDrawable bgShape = (GradientDrawable) btnCapturePicture.getBackground();
bgShape.setColor(Color.BLUE);
}
错误: Attempt to invoke virtual method 'void android.graphics.drawable.GradientDrawable.setColor(int)' on a null object reference
我该如何解决?
答案 0 :(得分:0)
您可以动态创建圆圈:
public static ShapeDrawable drawCircle(int width, int height, int color) {
ShapeDrawable oval = new ShapeDrawable(new OvalShape());
oval.setIntrinsicHeight(height);
oval.setIntrinsicWidth(width);
oval.getPaint().setColor(color);
return oval;
}