我的意思是我想画画但是很慢。 我写这段代码在ondraw方法中画线。
.
.
.
.
caneta.setARGB(255, 255, 0,0);caneta.setStrokeWidth(10);
canvas.drawLine(0, ys * 1/2, this.getWidth(), ys * 1/2, caneta);
.
.
.
我是怎么慢慢做的?
答案 0 :(得分:1)
这几乎就像游戏循环一样:
- 使画布无效X毫秒(使用循环和Thread.sleep())
- 每次循环后增加你的X / Y坐标
再次处理onDraw()中的新coords
示例:
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);
}
答案 1 :(得分: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
。