在Android中动态更改形状颜色

时间:2017-06-23 05:08:17

标签: android

我需要在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

我该如何解决?

1 个答案:

答案 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;
    }