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?
这几乎就像一个游戏循环的作品:
- 在 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);
}
在每个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
在您的视图上安排一个。