-1

線を引きたいのですが、ゆっくりです。ondrawメソッドで線を引くためにこのコードを書きます。

.
.
.
.
caneta.setARGB(255, 255, 0,0);caneta.setStrokeWidth(10); 
canvas.drawLine(0, ys * 1/2, this.getWidth(), ys * 1/2, caneta);
.
.
.

どうやってゆっくりやったの?

4

2 に答える 2

1

これは、ゲームループが機能するのとほぼ同じです。

-キャンバスをXミリ秒ごとに無効にします(ループとThread.sleep()を使用)

-ループごとにX/Y座標をインクリメントします

-onDraw()で新しい座標を再度処理します

例:

private int x1, x2;
    private int y1, y2;
    private View v;

    public void start()
    {
        for (int i = 0; i <= 250; i++)
        {
             v.invalidate();

             x2 += 1;

            try
            {
                Thread.sleep(50);
            }
            catch (InterruptedException e)
            {
            }
        }
    }

既存のビュークラスで、すでにonDrawメソッドがあります

 protected void onDraw(Canvas canvas)
        {
        //draw your line here using your X and Y member
                canvas.drawLine(x1, y1, x2, y2, caneta);
        }
于 2012-05-03T08:45:57.020 に答える
0

すべてのonDrawメソッド呼び出しで、必要な速度に応じて、線の一部を段階的に描画します。たとえば、描画を遅くしたい場合は、フルラインに達するまで、呼び出しごとにサイズをたとえば5ピクセルずつ増やします。

private float linePercent = 0;
protected void onDraw (Canvas canvas){

    float lineX = this.getWidth() * linePercent;
    canvas.drawLine(0, ys * 1/2, lineX, ys * 1/2, caneta);
    linePercent += 0.05f;
    if(linePercent >= 1){
        linePercent = 0;
    }
}

そして、バックグラウンドスレッドで、invalidateビューでスケジュールを設定します。

于 2012-05-03T08:26:00.540 に答える