【发布时间】:2018-05-07 18:42:12
【问题描述】:
我试图在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));
}
}
【问题讨论】: