我试图通过使其无效来在视图中绘制一些动画,从而改变onDraw方法中的位置。
看起来像这样:
控制器:
public void setStateProgress(int percent) {
stateProgress = percent;
view.invalidate();
}
主题:
public void run() {
long startTime = System.currentTimeMillis();
while (activity.STATE != MainActivity.State.ANIMATION_FINISHED) {
long timeDiff = System.currentTimeMillis() - startTime;
int percent = Math.round(((float) MainActivity.TIME_PER_STATE / 10000f)
* timeDiff);
// if this state's time is over, move on to the next.
if (timeDiff >= MainActivity.TIME_PER_STATE
&& activity.STATE != MainActivity.State.ANIMATION_FINISHED) {
activity.setState(activity.STATE + 1);
startTime = System.currentTimeMillis();
percent = 0;
}
final int finalPercent = percent;
activity.runOnUiThread(new Runnable() {
public void run() {
Log.d(TAG, "Updating progress to "+finalPercent+"%, invalidating view...");
activity.getAnalyzeController().setStateProgress(
finalPercent);
}
});
try {
Thread.sleep(50);
} catch (Exception e) {
}
}
}
我已经玩过睡眠时间了,但即使睡眠时间为50毫秒,也似乎没有重新绘制视图。
在onDraw方法中的视图并不算太多。只是用于测试目的的一些线和矩形。 有人知道如何加快速度吗?我应该以不同的方式处理线程吗?我是开放的建议,线程的时间不是我的专长。 :)
感谢您的帮助。
编辑:
我的猜测:通过runOnUiThread我调用另一个传递给某个处理程序(?)的线程,这需要一段时间......但是我应该怎么做呢?