我是Android的新手并构建一个应用程序,它涉及显示视图2秒然后更改。这是我的onDraw方法:
@Override
public void onDraw(Canvas canvas)
{
float level = game.level;
width = getWidth();
tile_length = width/level;
Paint rect = new Paint();
rect.setColor(getResources().getColor(R.color.dark));
canvas.drawRect(0, 0, width, width, rect);
game.numbers.setTextSize( (0.70f * tile_length));
game.numbers.setTextAlign(Paint.Align.CENTER);
grid.setColor(getResources().getColor(R.color.lines));
rect.setColor(getResources().getColor(R.color.tile_on));
int ind = 1;
int tile_num = 1;
FontMetrics fm = game.numbers.getFontMetrics();
float x = tile_length/2;
float y = tile_length/2 - (fm.ascent + fm.descent) / 2;
Log.v(LOG_TAG, "changed = " + game.changed);
for (int i=0; i<width; i+=tile_length)
{
for(int j=0; j<width; j+=tile_length)
{
for(int k = 0; k<level; k++ )
if(tile_num == game.random[k])
{
// Log.v(LOG_TAG, "i = " + i + "j = " + j);
game.set_Coordinates(ind-1, i, j);
String tile = Integer.toString(ind++);
canvas.drawRect(i, j, i+tile_length, j+tile_length, rect);
canvas.drawText(tile, i+x, j+y, game.numbers); //needs to be updated after 2 seconds
break;
}
tile_num++;
}
}
}
我知道我必须在某处使用postdelayed方法,但不知道如何...现在我只想在延迟后省略canvas.drawText行。
答案 0 :(得分:0)
你的意思是这样吗
new Handler().postDelayed(new Runnable(){
public void run(){
// do something here like draw text;
}
}, 2000);
答案 1 :(得分:0)
确实需要一个计时器。我所做的,非常简单,首先为绘图的每个点创建记录坐标(以及所需的任何其他数据) - 而不是在现场绘制点 - 然后使用计时器(Android处理程序,最好像上面建议的那样)重现它们。实际绘图时,这也为您提供了很多可能性:暂停,更快/更慢,向后,... 我不知道这种方法是否可以用于复杂的绘图,但它可以用于绘制形状,曲线,曲面等。