Я хочу сделать паузу между рисованием двух розыгрышей. Я попробовал Thread.sleep
, обработчики, asyncTask
и получил тот же результат - когда начинается активность, я должен ждать некоторое время, которое я установил, чтобы увидеть первый розыгрыш, только когда я снова вызываю тот же метод (тест), я вижу второй розыгрыш вместо того, чтобы снова увидеть первый розыгрыш. Вот мой код:
public void test(){
button.setClickable(false);
button.setBackgroundColor(Color.DKGRAY);
view.setFromAtoB(true);
view.invalidate();
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
return null;
}
@Override
protected void onPostExecute(Void result) {
view.setMoveAB(true);
view.postInvalidate();
button.setBackgroundColor(Color.GRAY);
button.setClickable(true);
}
};
task.execute((Void[])null);
Где проблема? Почему я не вижу какой-то гармонии, первого розыгрыша, паузы, второго розыгрыша? :) Может быть, я заблокировал поток пользовательского интерфейса. Для рисования я использую холст. В методе onDraw
я делаю некоторые вычисления и вызываю метод drawRodsAndDiscs
:
private void drawRodsAndDiscs(Canvas canvas){
Paint paint = new Paint();
drawRods(canvas);
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
for (Rect disc : discs) {
canvas.drawRect(disc, paint);
}
}