[問題] 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