SurfaceView局部刷新



Canvas canvas = holder.lockCanvas(null);//获取画布
Paint mPaint = new Paint();
mPaint.setColor(Color.BLUE);
canvas.drawRect(new RectF(40,60,80,80), mPaint);
holder.unlockCanvasAndPost(canvas);//解锁画布,提交画好的图像
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 SurfaceView 中刷新 Bitmap,你需要在 SurfaceView 中创建一个绘制线程,然后在该线程中使用 Canvas 绘制 Bitmap。具体步骤如下: 1. 在 SurfaceView 中创建一个绘制线程: ``` class DrawThread extends Thread { private SurfaceHolder surfaceHolder; private boolean isRunning; private Bitmap bitmap; public DrawThread(SurfaceHolder surfaceHolder, Bitmap bitmap) { this.surfaceHolder = surfaceHolder; this.bitmap = bitmap; isRunning = true; } public void setRunning(boolean running) { isRunning = running; } @Override public void run() { while (isRunning) { Canvas canvas = null; try { canvas = surfaceHolder.lockCanvas(); if (canvas != null) { canvas.drawBitmap(bitmap, 0, 0, null); } } finally { if (canvas != null) { surfaceHolder.unlockCanvasAndPost(canvas); } } } } } ``` 2. 在 SurfaceView 中创建一个 SurfaceHolder.Callback 对象,实现 surfaceCreated() 方法,在该方法中启动绘制线程: ``` class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback { private DrawThread drawThread; private Bitmap bitmap; public MySurfaceView(Context context, AttributeSet attrs) { super(context, attrs); getHolder().addCallback(this); bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_bitmap); } @Override public void surfaceCreated(SurfaceHolder holder) { drawThread = new DrawThread(holder, bitmap); drawThread.start(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { boolean retry = true; drawThread.setRunning(false); while (retry) { try { drawThread.join(); retry = false; } catch (InterruptedException e) { } } } } ``` 这样,每当你更新 Bitmap 的时候,就可以在绘制线程中重新绘制 Bitmap,从而实现 SurfaceView 中 Bitmap 的刷新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值