【发布时间】:2012-07-22 13:31:07
【问题描述】:
我正在尝试使用画布在表面视图上绘制文本。 问题是表面视图似乎在每次调用后都没有重置。之前绘制的所有内容都将再次绘制。所以,如果我有一个文本,每次绘制它时我都会改变它的位置,我最终会得到一个很长的文本痕迹,因为画布没有被清除。
我做错了什么?
public class Test1Activity extends Activity {
private Draw drawText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawText = new Draw(this);
setContentView(drawText);
}
public class Draw extends SurfaceView implements Runnable {
Thread thread = null;
SurfaceHolder surfaceHolder;
volatile boolean running = false;
private int i;
public Draw(Context context) {
super(context);
// TODO Auto-generated constructor stub
surfaceHolder = getHolder();
running = true;
thread = new Thread(this);
thread.start();
}
public void run() {
// TODO Auto-generated method stub
while (running) {
if (surfaceHolder.getSurface().isValid()) {
Canvas canvas = surfaceHolder.lockCanvas();
Paint paint = new Paint();
paint.setColor(Color.RED);
i++;
if(i > 240)
i = 1;
canvas.drawText("Hello",i , 60, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
}
public class Test1Activity extends Activity {
private Draw drawText;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawText = new Draw(this);
setContentView(drawText);
}
public class Draw extends SurfaceView implements Runnable {
Thread thread = null;
SurfaceHolder surfaceHolder;
volatile boolean running = false;
private int i;
public Draw(Context context) {
super(context);
// TODO Auto-generated constructor stub
surfaceHolder = getHolder();
running = true;
thread = new Thread(this);
thread.start();
}
public void run() {
// TODO Auto-generated method stub
while (running) {
if (surfaceHolder.getSurface().isValid()) {
Canvas canvas = surfaceHolder.lockCanvas();
Paint paint = new Paint();
paint.setColor(Color.RED);
i++;
if(i > 240)
i = 1;
canvas.drawText("Hello",i , 60, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
谢谢!
【问题讨论】:
标签: android canvas surfaceview runnable