在onDraw中同步颜色变化



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

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)); 
        }
所以,当我按下按钮时,颜色的变化是不同步的。首先改变背景颜色,然后是文本颜色。眼睛看得到。

如何处理这个问题?谢谢大家的回答。

也许这将足以提高性能:

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方法中的颜色分配。如果这仍然不能令人满意,您可以尝试双缓冲,正如这里提到的。

最新更新