Guys, please tell me how to cause a redraw in this code, the invalid does not work, you need to redraw before each drawing and preferably in the drawing stream, here’s the code
public class DrawView extends SurfaceView implements SurfaceHolder.Callback { private DrawThread drawThread; public DrawView(Context context) { super(context); getHolder().addCallback(this); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceCreated(SurfaceHolder holder) { drawThread = new DrawThread(getHolder()); drawThread.setRunning(true); drawThread.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { boolean retry = true; drawThread.setRunning(false); while (retry) { try { drawThread.join(); retry = false; } catch (InterruptedException e) { } } } class DrawThread extends Thread { private boolean running = false; private SurfaceHolder surfaceHolder; Paint paint = new Paint(); public DrawThread(SurfaceHolder surfaceHolder) { this.surfaceHolder = surfaceHolder; paint.setColor(Color.CYAN); } public void setRunning(boolean running) { this.running = running; } @Override public void run() { Canvas canvas; while (running) { canvas = null; try { canvas = surfaceHolder.lockCanvas(null); if (canvas == null) continue; // canvas.drawColor(Color.GREEN); if (drawingRect) { canvas.drawRect(a1,a2,b+20,b1+20,paint); System.out.println("Risuem "+a1+" "+a2+" "+b+" "+b1); } } finally { if (canvas != null) { surfaceHolder.unlockCanvasAndPost(canvas); } } } } } }