在Android中移动对象

时间:2017-04-03 18:03:56

标签: android

我试图在屏幕上不停地移动一圈,我想知道如何。我有这个简单的代码:

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(我知道这个例子永远不会结束)

2 个答案:

答案 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()。