Android:当被要求绘制ARGB时,它仅显示一瞬间

时间:2012-07-11 16:42:32

标签: android canvas draw

当我尝试从黑色更改屏幕颜色时,我使用命令drawARGB一次,我打算保持我问的那种颜色,其他图纸将出现在它上面,但它只显示一次,对于分裂,再次变黑......

这里是代码,如果你想知道一切正常,除了drawARGB ......

这是动态壁纸的一部分。

public void drawFrame() {
        // TODO Auto-generated method stub
       c = null;
       try {
           c = holder.lockCanvas();
           if (c != null) {
               // draw something
            height = c.getHeight();
            width = c.getWidth();
            drawScreenColor();
            frame++;
           }
       } finally {
           if (c != null) holder.unlockCanvasAndPost(c);
       }
         mHandler.removeCallbacks(mDrawStrip);
            if (clearToRun) {
                mHandler.postDelayed(mDrawStrip, 1000 / 60);
            }
    }

    void drawScreenColor() {

        if (isFirstFrame) {
            c.drawARGB(255,255,0,0);
            isFirstFrame = false;
        }

    }

1 个答案:

答案 0 :(得分:0)

由于你的“第一帧”代码,这种情况正在发生。

if (isFirstFrame) {
    c.drawARGB(255,255,0,0);
    isFirstFrame = false;
}

因此,这将执行一次,将isFirstFrame设置为false,并且永远不会再次执行。 Canvas的工作方式是每帧都必须重绘所有元素(前一帧中的元素不会残留)。因此,请移除isFirstFrame检查,并将其作为drawFrame方法中的第一个电话;随后的一切都将被绘制在最上面。