编译后可以更改 XML 可绘制对象中分配的颜色吗?



我的团队正在创建一个希望用户匹配形状和/或颜色的小型子应用程序。我们有一个main_shape,一个correct_shape和garbage_shape1/garbage_shape2显示在屏幕上。形状在运行时随机确定,并加载到活动中以向用户显示。现在,每个形状都是 XML 可绘制对象,并具有硬编码颜色。(红色圆圈,黄色星星,蓝色方块等(。这是游戏屏幕的图像

我的问题是这样的:

有没有办法以编程方式更改形状的颜色?假设我想将每个形状的颜色更改为蓝色:一个蓝色圆圈,另一个蓝色圆圈,三角形和星形,都是蓝色的?有没有办法在 Java 中做到这一点;是否正在编辑 XML 属性?

我们在一堆列表中拥有所有形状:


ShapeBuilder shapeBuilder = new ShapeBuilder(gameMode);
Stack<List<Shape>> stackOfShapes = shapeBuilder.getStackofShapes();
//gather first round and assign to activity
List<Shape> round = stackOfShapes.pop();
_mainShape.setBackgroundResource(R.drawable.circle);

然后我们尝试分配一种颜色,到目前为止我们已经尝试过将圆圈的_mainShape分配给蓝色:(但是我觉得这是错误的下行道路(

Drawable background = _mainShape.getBackground();
if (background instanceof ShapeDrawable) {
((ShapeDrawable)background).getPaint().setColor(ContextCompat.getColor(this,R.color.blue));
} else if (background instanceof GradientDrawable) {
((GradientDrawable)background).setColor(ContextCompat.getColor(this,R.color.blue));
} else if (background instanceof ColorDrawable) {
((ColorDrawable)background).setColor(ContextCompat.getColor(this,R.color.blue));
}

我正在尝试查看我们是否可以从中更改XML文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="#9F2200"/> <!-- red, to blue -->
<size android:width="80dp" android:height="80dp"/>
</shape>

我很抱歉这是我的第一个问题,因此可能写得很差,但我们都必须从某个地方开始。

yourview.setBackgroundColor(getResources().getColor(R.color.blue));

最新更新