@Override
public void surfaceCreated(SurfaceHolder holder)
{
// 锁定整个SurfaceView
Canvas canvas = holder.lockCanvas();
// 绘制背景
Bitmap back = BitmapFactory.decodeResource(
SurfaceViewTest.this.getResources(), R.drawable.sun);
//绘制背景
canvas.drawBitmap(back, 0, 0, null);
// 绘制完成,释放画布,提交修改
holder.unlockCanvasAndPost(canvas);
//重新锁一次,"持久化"上次所绘制的内容
holder.lockCanvas(new Rect(0, 0, 0, 0));
holder.unlockCanvasAndPost(canvas);
}希望这段代码对你有过帮助
解决方案 »
- android中SimpleAdapter的问题
- [求助]嵌在RelativeLayout中的WebView无法显示内容!
- android如何使用syncML来同步通讯录
- android平台下实现sd、usb等设备自动挂载有个问题想请教大家
- 如何使service不被杀掉?
- 如何编译浏览器plugin [
- 绑定Service的场景
- 新人求前辈回答
- 怎样在AlertDialog点击选项后,再次打开时可以记住上次的选择项?
- android开发语句intent.setType("audio/*"); 为什么我在手机里打开的是录音?
- Android下导航软件什么时候发声,什么时候不发声,我定位了老半天还是不准啊!
- 关于AutoCompleteTextView 为什么必须输入两个字符才能出现补全提示?
不对,我弄错了,还是不行看,我用view就行。
哈哈,终于可以了,我在每次画线(不仅在surfaceCreate的时候)结束后在加上
//重新锁一次,"持久化"上次所绘制的内容
holder.lockCanvas(new Rect(0, 0, 0, 0));
holder.unlockCanvasAndPost(canvas);
就可以了。
public class HelloSurfaceView extends SurfaceView implements
SurfaceHolder.Callback {
private SurfaceHolder helloSurfaceHolder = null;
public HelloSurfaceView(Context context) {
super(context);
// 实例化SurfaceHolder
helloSurfaceHolder = this.getHolder();
// 添加回调
helloSurfaceHolder.addCallback(this);
}
private void draw() {
synchronized (helloSurfaceHolder) {
Canvas canvas = null;
if (null != (canvas = helloSurfaceHolder.lockCanvas())) {
canvas.drawBitmap(bitmap, rectData,
rectDisp, null);
clickSurfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}