作者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