颜色无法转换为int

时间:2014-11-21 17:35:40

标签: java android colors

我得到了一个奇怪的错误,我无法使用Color对象设置绘图对象的颜色,这很奇怪看paint.setColor(Color.RED)有效,而paint.setColor(this.color)不是

这是我的代码。

public class Shape{
    protected GameView2 game_view;
    protected int x;
    protected int y;
    protected int width;
    protected int height;
    protected Color color;

    public Shape(GameView2 game_view, Color color, int x, int y, int width, int height) {
        this.game_view = game_view;
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
        this.color = color;
    }

    public void onDraw(Canvas canvas){

        Paint paint = new Paint();
        Rect rec = new Rect(x, y, x + width, y + height);
        paint.setColor(this.color); //does not work
        paint.setStyle(Paint.Style.FILL);
        canvas.drawRect(rec, paint);        
    }
}

修改

Shape对象已被声明为另一个名为GameView的类, 它非常大,所以我不会粘贴整个类,但在创建一个Shape对象时,这就是完成的事情:

new Shape(this, Color.BLACK, 0, 0, 100, 100)

我得到的错误是incompatible types: Color cannot be converted to int

3 个答案:

答案 0 :(得分:3)

setColor 需要 int 类型,但 this.color 不是 int ,您尝试设置颜色对象而不是int值。

public native void setColor(int color);

答案 1 :(得分:1)

查看documentation,您会发现Color是一个实用程序类,它提供静态方法来处理颜色整数。您实际上可以实例化Color对象似乎是一个历史错误。

答案 2 :(得分:0)

您如何将Color传递给新的Shape

你应该使用

getResources().getColor(R.color.idcolor);

在xml中:

<color name="idcolor">#123456</color>

修改

根据您的编辑,尝试将颜色声明为int。颜色实际上是int,主要颜色在Color

中声明为静态字段
protected int color;