myq_26 2013-07-17 06:19 采纳率: 16.7%
浏览 3417

试图清除 Android SurfaceView/Canvas 时闪烁

我想使用 canvas.drawColor(Color.BLACK) 来清除Canvas,但是如果我只调用一次,显示闪烁,显示旧的图画,这个图画应该被drawColor覆盖。
部分代码:

 public void update() {
   //This method is called by a Thread                
    Canvas canvas = holder.lockCanvas(null);
    if (canvas != null) {
        onDraw(canvas);
    }
    holder.unlockCanvasAndPost(canvas);
}
@Override
protected void onDraw(Canvas canvas) {
    if (toClear) {
        canvas.drawColor(Color.BLACK);

            //if this is not set to change back to false, it does not flicker
        toClear = false;
    }
    //Draw some objects that are moving around
}
public void clearScreen() {
    //This method is called when the user pressed a button
     toClear = true;
}

我查找了关于double buffering的资料,了解到lockCanvas() 和 unlockCanvasAndPost() 可以处理这个问题。现在是哪里出错了呢?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-21 01:57
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献