0

MainActivity でアニメーション画像を描画したい 私の MainActivity コードは次のとおりです。

public class LaozhangActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    Ch0_1 view=new Ch0_1(this);
    super.onCreate(savedInstanceState);
    setContentView(view);


}
}

SurfaceViewアニメーション画像を表示するために拡張するクラスを定義しました。コードは次のようになります。

public class Ch0_1 extends SurfaceView implements Callback, Runnable
{

SurfaceHolder surfaceHolder;

private boolean isThreadRunning = true;

Canvas canvas;
float r = 10;

public Ch0_1(Context context)
{

 super(context);

    surfaceHolder = this.getHolder();

    surfaceHolder.addCallback(this);
    canvas=new Canvas();
}

public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height)
{

}

public void surfaceCreated(SurfaceHolder holder)
{

    new Thread(this).start();
}

public void surfaceDestroyed(SurfaceHolder holder)
{

}


private void Method(int x,int y)
{

    Paint pen=new Paint();
    pen.setColor(Color.GREEN);

    canvas=surfaceHolder.lockCanvas();
    canvas.drawLine(0, 0, x, y, pen);
    surfaceHolder.unlockCanvasAndPost(canvas);

}

 public void run()
 {
    while (isThreadRunning)
    {
     int x=0,y=0;
     Method(x,y);
        try
        {
            Thread.sleep(100);
        } catch (Exception e)
        {
            e.printStackTrace();
        }
        x+=10;
        y+=10;
        if(x>400)break;
    }
}
}

実行中、MainActivity は黒く、画像が表示されませんでした。
問題はどこだ?

4

1 に答える 1

0

あなたのコードでは、 x と y は反復ごとに 0 にリセットされます... x と y の初期化を while ループの外に移動する必要があります。

    public void run() {
        int x = 0, y = 0;
        while (isThreadRunning) {
            Method(x, y);
            try {
                Thread.sleep(100);
            } catch (Exception e) {
                e.printStackTrace();
            }
            x += 10;
            y += 10;
            if (x > 400)
                break;
        }
    }
于 2012-10-31T08:58:46.757 に答える