Android surfaceview绘制默认黑色北京
时间: 2023-10-25 15:59:22 浏览: 202
Android SurfaceView 绘制默认黑色背景的原因是因为 SurfaceView 的绘制是在独立的线程中进行的,而不是在主线程(UI 线程)中进行的。在 SurfaceView 初始化时,默认情况下,它的背景是黑色。
要改变 SurfaceView 的背景颜色,可以通过在 SurfaceView 中重写 `draw` 方法来实现自定义绘制。在 `draw` 方法中,你可以使用 `Canvas` 对象进行绘制操作,包括设置背景颜色。以下是一个简单的示例代码:
```java
public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder holder;
public MySurfaceView(Context context) {
super(context);
init();
}
public MySurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
holder = getHolder();
holder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// 绘制方法
draw();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// 空实现
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// 空实现
}
private void draw() {
Canvas canvas = holder.lockCanvas(); // 获取画布对象
if (canvas != null) {
try {
// 设置背景颜色
canvas.drawColor(Color.WHITE);
// 绘制其他内容
// ...
} finally {
holder.unlockCanvasAndPost(canvas); // 解锁画布,提交绘制内容
}
}
}
}
```
在这个示例中,我们通过重写 `surfaceCreated` 方法,在 SurfaceView 创建时调用 `draw` 方法来绘制内容。在 `draw` 方法中,我们使用 `Canvas` 对象设置了白色背景,并可以进行其他的绘制操作。记得在合适的时机解锁画布并提交绘制内容。
阅读全文