-1

I mean I want to drawline but slowly. I write this code to draw line in ondraw method.

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

how I did it slowly?

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 回答