0

画面の色を黒から変更しようとすると、コマンド drawARGB を 1 回使用します。要求した色のままにするつもりであり、その上に他の描画が表示されますが、表示されるのは 1 回だけです。そしてまた黒くなる…

これがコードです。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;
}

したがって、これは 1 回実行さisFirstFrameれ、false に設定され、二度と実行されません。のCanvas仕組みは、すべての要素をフレームごとに再描画する必要があるというものです (前のフレームの要素はくっつきません)。したがって、isFirstFrameチェックを外して、これをdrawFrameメソッドの最初の呼び出しにします。それに続くものはすべて上に描画されます。

于 2012-07-11T16:49:44.700 に答える