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