我正在尝试将一些非常简单的绘图绘制到SurfaceView中,但我无法使其工作.没有例外,但我也没有看到任何结果.
更准确地说,我正在尝试创建一个SurfaceView并用单一颜色填充它.
这是我的代码:
public class SvetlinSurfaceViewTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SurfaceRenderer renderer = new SurfaceRenderer(this);
setContentView(renderer);
}
}
class SurfaceRenderer extends ViewGroup implements SurfaceHolder.Callback {
private final String TAG = "Svetlin Surface Renderer";
SurfaceView mSurfaceView;
SurfaceHolder mHolder;
public SurfaceRenderer(Context context) {
super(context);
mSurfaceView = new SurfaceView(context);
addView(mSurfaceView);
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mHolder = mSurfaceView.getHolder();
mHolder.addCallback(this);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {}
@Override
public void surfaceCreated(SurfaceHolder holder) {
tryDrawing(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, 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...");
canvas.drawRGB(255, 128, 128);
}
}
正如预期的那样,我正在绘制……输出两次.
任何人都可以建议为什么我可能无法绘制SurfaceView?