У меня есть код:
public class MainActivity extends AppCompatActivity {
MyDraw draw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
draw = new MyDraw(this);
setContentView(draw);
time t1 = new time();
t1.start();
}
class time extends Thread implements Runnable{
@Override
public void run() {
for (int i = 1; i < 10; i++) {
Log.d("MyTestTag", "Поток активен. Цикл начался");
draw.invalidate();
}
}
}
public class MyDraw extends View {
int cx = 0;
int cy = 0;
public MyDraw(Context context) {
super(context);
}
public void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawColor(Color.BLUE);
Paint paint=new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
i += 10;
canvas.drawCircle(cx,cy,50,paint);
Log.d("MyTestTag" ,"Обновление внутри");
}
}
Мы используем поток, в котором по циклу вызываем invalidate(); но по не понятным причинам в log выводится моё сообщение, что мы вызвали в цикле поток, но из OnDraw сообщение в логи об обновлении приходит единожды, хотя по идеи его должен invalidate в цикле вызывать 10 раз. Мы же вызвали в цикле invalidate() и он должен 10 раз запускать перерисовку, где мы меняем координаты и снова рисуем объект