Я пытаюсь просто нарисовать что-то в SurfaceView, и оно отображается только дважды, даже если я использую
setWillNotDraw (ложь)
Как я могу сделать так, чтобы мой метод onDraw вызывался каждый раз, а не только дважды?
экран журнала
Код:
public class MainActivity extends Activity implements SurfaceHolder.Callback {
private static final String TAG = "SurfaceView";
private SurfaceView surfaceView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
surfaceView = new SurfaceView(this);
surfaceView.setWillNotDraw(false);
setContentView(surfaceView);
surfaceView.getHolder().addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
tryDrawing(holder);
surfaceView.setWillNotDraw(false);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int frmt, int w, int h) {
tryDrawing(holder);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {}
private void tryDrawing(SurfaceHolder holder) {
Log.i(TAG, "Trying to draw...");
Canvas canvas = holder.lockCanvas();
if (canvas == null) {
Log.e(TAG, "Cannot draw onto the canvas as it's null");
} else {
drawMyStuff(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
private void drawMyStuff(final Canvas canvas) {
Log.i(TAG, "Drawing...");
Random random = new Random();
canvas.drawRGB(random.nextInt(255), random.nextInt(255), random.nextInt(255));
}
}