我试图在屏幕上不停地移动一圈,我想知道如何。我有这个简单的代码:
public class CustomView extends View {
private Paint paint;
public CustomView(Context context) {
super(context);
// create the Paint and set its color
paint = new Paint();
paint.setColor(Color.WHITE);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
boolean flag = true;
float i = 200;
while ( flag ){
if(i<800)i += 1;
else if (i <0) i += 1;
else i -=1;
canvas.drawCircle(i, 200, 100, paint);
canvas.drawColor(Color.BLACK);
}
}
}
和一个简单的主要活动来调用它。
问题是onDraw在完成时只绘制了一些内容,我不知道如何再次调用onDraw(我知道这个例子永远不会结束)
答案 0 :(得分:1)
我不知道如何再次调用onDraw
您的视图中需要Handler
并且Runnable
张贴到您的处理程序,通过调用invalidate()
来触发重绘。一旦runnable完成*,它应该postDelayed()
本身到同一个处理程序以保持perpetum mobile运行:)当然你可能需要添加一些逻辑来停止父onPause()
或其他什么。
*)从理论上讲,你应该在执行runnable的最初阶段发布自己以保持&#34; tick&#34;不管怎么说,无论处理整个工作需要多长时间,这都会导致风险,尤其是风险。如果你试着&#34;打勾&#34;通常,你的下一个在当前完成之前开始执行。但这不仅仅是为了锻炼。
答案 1 :(得分:0)
我认为你需要调用视图的方法无效。 https://developer.android.com/reference/android/view/View.html
要强制绘制视图,请调用invalidate()。