[问题] SurfaceView保留底图问题

楼主: fish0112 (鱼)   2015-07-16 02:15:53
需求大概是
User这边用一个个的指令
去画出Surfaceview上面的图&文字
当然前面的指令画出来的后面不能够消失
因为跟时间没啥关系,所以我是想不要用Thread来做
我自己测试成功的测试小程式
主要的function是:
Canvas canvas;
public void draw()
{
synchronized (myholder) {
canvas = myholder.lockCanvas(new Rect(0, 0,
sizeMetrics.widthPixels,
sizeMetrics.heightPixels));
canvas.drawCircle(x, y, 30, paint);
myholder.unlockCanvasAndPost(canvas);
myholder.lockCanvas(new Rect(0, 0, 0, 0));
myholder.unlockCanvasAndPost(canvas);
myholder.lockCanvas(new Rect(0, 0, 0, 0));
myholder.unlockCanvasAndPost(canvas);
}
}
作者: cha122977 (CHA)   2015-07-16 02:50:00
先说thread的问题...可以用Looper+Handler传值lock有给dirty rect的话 其它地方不会被洗掉所以看能不能只将要画的地方给lock就好…另外Canvas在用的时候应该和double buffering无关所以第一段是蛮诡异的…我没碰过这个问题若你是改在View.onDraw()内的话 要用invalidate()重画
楼主: fish0112 (鱼)   2015-07-17 00:21:00
onDraw的invalidate之前试过 每次都是清空重画只将要画的地方lock..drawText好难呀.......QQ对了,使用thread就没有底图青空的问题了吗?如果是,我大概又要继续寻找目标了..
作者: cha122977 (CHA)   2015-07-17 12:35:00
可以 每次画都开新Bitmap 然后用drawBitmap画上旧的再画上你想追加的东西

Links booklink

Contact Us: admin [ a t ] ucptt.com