我正试图在画布上移动一个球. a和b类似于x,y坐标位置.从我的代码中试图动态获取不同值的任何方式. a,b是全局变量.但似乎“invalidate()”或屏幕刷新仅在整个循环结束时发生.你知道为什么吗?.如果我必须在另一个线程上构建它,请建议我一些简单的代码.
private void shootBall(){
while (a>b){
a = getPositionX();
b = getPositionY();
invalidate();
}
}
}
解决方法:
这样做,并使用postInvalidate()代替:
private void shootBall(){
new Thread(new Runnable() {
public void run() {
while (a>b){
a = getPositionX();
b = getPositionY();
postInvalidate();
}
}
}).start();
}
编辑:但如前所述,不要假设无效重绘屏幕,它标记为要重绘,UI线程将绕过它.