[問題] surfaceView如何清空上一次的畫面?

看板AndroidDev作者 (coding....coding)時間13年前 (2011/10/12 21:55), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
先感謝進來看文章的各位大大!! 這問題小弟已經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

10/13 12:12, , 1F
不是每幀都畫嗎? 為什麼3秒才畫一次?
10/13 12:12, 1F

10/13 17:12, , 2F
恩~因為我在除錯 所以讓他更新頻率慢一點 不然跳超快的
10/13 17:12, 2F

10/13 20:47, , 3F
解決了~分享一下解法
10/13 20:47, 3F

10/13 20:47, , 4F
就是在畫出下次的時間之前要先畫一個全畫面的背景
10/13 20:47, 4F

10/13 20:47, , 5F
然後在畫上時間的字串
10/13 20:47, 5F

10/13 20:48, , 6F
重點是 畫這兩個圖是在一次的lockCanvas()中執行
10/13 20:48, 6F

10/13 20:48, , 7F
然後在unlockCanvas
10/13 20:48, 7F
文章代碼(AID): #1EbPnRFm (AndroidDev)
文章代碼(AID): #1EbPnRFm (AndroidDev)