看板 AndroidDev 關於我們 聯絡資訊
先感謝進來看文章的各位大大!! 這問題小弟已經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
chrisho:不是每幀都畫嗎? 為什麼3秒才畫一次? 10/13 12:12
uzoo:恩~因為我在除錯 所以讓他更新頻率慢一點 不然跳超快的 10/13 17:12
uzoo:解決了~分享一下解法 10/13 20:47
uzoo:就是在畫出下次的時間之前要先畫一個全畫面的背景 10/13 20:47
uzoo:然後在畫上時間的字串 10/13 20:47
uzoo:重點是 畫這兩個圖是在一次的lockCanvas()中執行 10/13 20:48
uzoo:然後在unlockCanvas 10/13 20:48