0

当我尝试将屏幕颜色从黑色更改时,我使用命令 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;
        }

    }
4

1 回答 1

0

这是由于您的“第一帧”代码而发生的。

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

因此,这将执行一次,设置isFirstFrame为 false,并且不再执行。工作的方式Canvas是必须在每一帧重绘所有元素(前一帧的元素不会留下来)。因此,删除isFirstFrame检查,并将其作为您drawFrame方法中的第一个调用;它后面的所有内容都将绘制在顶部。

于 2012-07-11T16:49:44.700 回答