在onDraw中同步颜色变化

时间:2014-03-14 13:34:06

标签: android android-canvas

我有一个安卓游戏。我在触摸时更改颜色方案。代码是:

if(rect_dark.contains(x, y)) {    
    isdark = !isdark;
    invalidate();
}

然后在我的onDraw方法中:

        if(isdark){
            this.setBackgroundColor(getResources().getColor(R.color.black_color));
        } else{
            this.setBackgroundColor(getResources().getColor(R.color.light_color));
        }


        if(isdark){
            mScorePaint.setColor(getResources().getColor(R.color.light_color));

        } else{
            mScorePaint.setColor(getResources().getColor(R.color.black_color)); 
        }

因此,当我按下按钮时,颜色的变化不同步。首先更改背景颜色,然后更改文本颜色。眼睛看到了。

如何处理这个问题? 谢谢你的所有答案。

1 个答案:

答案 0 :(得分:3)

也许这会足够改善性能:

private int mCurrentColor;

if(rect_dark.contains(x, y)) {
    isdark = !isdark;

    if (isdark) {
        mCurrentColor = getResources().getColor(R.color.dark_color);
    } else {
        mCurrentColor = getResources().getColor(R.color.light_color);
    }

    invalidate();
}

这避免了onDraw方法中的颜色分配。如果这仍然不能令人满意,您可以尝试双缓冲,如上所述here