在Eclipse IDE for Android中,我正在解决一个简单的问题。 我正在使用这样的代码:
public class Reader extends Activity
{
// declarations
private class GraphView extends View
{
protected void onDraw(Canvas canvas)
{
synchronized(this)
{
final Paint paint = mPaint;
// some drawings
myvoid(canvas,paint);
// some drawings
}
}
}
void myvoid(Canvas c,Paint p)
{
int i=0;
do //or for cycle
{
i++;
c.drawText(Integer.toString(i),0,100,p); // <<<<<<<<<<<<<<<< Problem
}
while (i<100000);
}
}
在while循环结束之前,画布和文本不会更新。 看来,画布在那段时间内被“锁定”了。 我怎样才能实现,我可以在画布上看到循环内部的进展?
谢谢,托马斯。
答案 0 :(得分:1)
问题是你没有给Android任何时间来呈现绘图方法的结果。您应绘制循环的一个步骤并调用invalidate以触发下一步。 Android将在屏幕上绘制您的文本,然后它将尝试再次使用增加的计数器重绘它。请比较您的代码和我的版本:
private class GraphView extends View {
protected void onDraw(Canvas canvas) { // some drawings
myvoid(canvas, paint);
// some drawings
}
void myvoid(Canvas c, Paint p) {
int i = 0;
do // or for cycle
{
i++;
c.drawText(Integer.toString(i), 0, 100, p);
} while (i < 100000);
}
}
我的版本包含invalidate():
private class GraphView extends View {
int i = 0;
Paint paint = new Paint();
@Override
public void draw(Canvas canvas) {
canvas.drawText(Integer.toString(i), 0, 100, paint);
i++;
invalidate();
super.draw(canvas);
}
}
答案 1 :(得分:0)
我想你可以试试这个
imageView = (ImageView) this.findViewById(R.id.imageView1);
Display currentDisplay = getWindowManager().getDefaultDisplay();
@SuppressWarnings("deprecation")
//float dw = currentDisplay.getWidth();
// float dh = currentDisplay.getHeight();
bitmap = Bitmap.createBitmap((int) dw, (int) dh,
Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
paint = new Paint();
paint.setColor(Color.RED);
imageView.setImageBitmap(bitmap);
您可以尝试将画布设为位图图像,然后将位图设置为imageview
答案 2 :(得分:0)
请按照以下步骤操作:
这个例子可能会有所帮助:https://github.com/hamilton-lima/Bolinha/tree/master/src/com/example/bolinha