surfaceview 展示 bitmap
时间: 2023-08-17 07:06:02 浏览: 261
要在 SurfaceView 上展示 Bitmap,需要遵循以下步骤:
1. 获取 SurfaceHolder 对象,通过 SurfaceView.getHolder() 方法获取。
2. 在 SurfaceHolder.Callback 中的 surfaceCreated() 方法中,获取 Canvas 对象。
3. 在 Canvas 上绘制 Bitmap,可以使用 Canvas.drawBitmap() 方法。
4. 在 SurfaceHolder.Callback 中的 surfaceChanged() 方法中,设置 SurfaceView 的尺寸和格式。
5. 在 SurfaceHolder.Callback 中的 surfaceDestroyed() 方法中,释放资源。
下面是一个简单的代码示例:
```
public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mSurfaceHolder;
private Bitmap mBitmap;
public MySurfaceView(Context context) {
super(context);
mSurfaceHolder = getHolder();
mSurfaceHolder.addCallback(this);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = holder.lockCanvas();
canvas.drawBitmap(mBitmap, 0, 0, null);
holder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO: 设置 SurfaceView 的尺寸和格式
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mBitmap.recycle();
}
}
```
这个例子中,我们在 SurfaceView 的构造方法中加载了一张图片,然后在 SurfaceHolder.Callback 的 surfaceCreated() 方法中将图片绘制到 Canvas 上,并通过 SurfaceHolder.unlockCanvasAndPost() 方法提交绘制结果。在 surfaceDestroyed() 方法中释放图片资源。
阅读全文