作者uzoo (coding....coding)
看板AndroidDev
標題[問題] surfaceView如何清空上一次的畫面?
時間Wed Oct 12 21:55:36 2011
先感謝進來看文章的各位大大!!
這問題小弟已經GOOGLE過
大部分都是建議畫一個全畫面的矩形來覆蓋上一次的畫面
小弟也有實做看看,不過 為什麼沒有效果阿啊啊啊啊啊!!
小弟是每3秒跟系統要一次時間 然後用drawText畫在畫面上!
結果畫出來的文字都一直重疊 嗚嗚
附上完整程式碼:
public class SurfaceVewTestActivity extends Activity implements
SurfaceHolder.Callback {
private SurfaceView sv;
private SurfaceHolder svHolder;
private String time;
private int width,height;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sv=new SurfaceView(this);
WindowManager manager=(WindowManager)
getSystemService(WINDOW_SERVICE);
Display display=manager.getDefaultDisplay();
width=display.getWidth();
height=display.getHeight();
Log.d("uzoo", "width:"+width+" height:"+height);
svHolder=sv.getHolder();
svHolder.addCallback(this);
setContentView(sv);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
Log.d("uzoo", "ready to draw");
handler.post(r);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
public void letsGoDrawing(String time){
Paint paint=new Paint();
paint.setColor(Color.RED);
paint.setTextSize(25);
Canvas vas=svHolder.lockCanvas();
vas.drawText(time, 130, 130, paint);
svHolder.unlockCanvasAndPost(vas);
}
Handler handler=new Handler();
Runnable r=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Canvas vas=svHolder.lockCanvas();
Paint paint=new Paint();
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
Rect rec=new Rect(0, 0, width, height);
vas.drawRect(rec, paint);
svHolder.unlockCanvasAndPost(vas);
String time=""+System.currentTimeMillis();
letsGoDrawing(time);
handler.postDelayed(r, 3000);
}
};
}
希望有大大能幫我解答 先謝過了!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.98.114.58
1F:推 chrisho:不是每幀都畫嗎? 為什麼3秒才畫一次? 10/13 12:12
2F:→ uzoo:恩~因為我在除錯 所以讓他更新頻率慢一點 不然跳超快的 10/13 17:12
3F:→ uzoo:解決了~分享一下解法 10/13 20:47
4F:→ uzoo:就是在畫出下次的時間之前要先畫一個全畫面的背景 10/13 20:47
5F:→ uzoo:然後在畫上時間的字串 10/13 20:47
6F:→ uzoo:重點是 畫這兩個圖是在一次的lockCanvas()中執行 10/13 20:48
7F:→ uzoo:然後在unlockCanvas 10/13 20:48