当前位置: 代码迷 >> Android >> 如何小球没运动
  详细解决方案

如何小球没运动

热度:59   发布时间:2016-04-28 06:07:12.0
怎么小球没运动
我要画一个小球在屏幕上运动,结果没反应

package com.example.systemaction;

import android.R.integer;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;

public class BallActivity extends Activity{

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
MyView v = new MyView(this, null);
setContentView(v);
}

class MyView extends View implements Runnable{

private int cx = 20,cy = 20;

public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
setFocusable(true);
new Thread(this).start();
}

@Override
public void run() {
Looper.prepare();
ReFreshHandle handler = new ReFreshHandle();
while(!Thread.currentThread().isInterrupted()){
//发送消息更新界面
Message message = new Message();
message.what = 0x101;
handler.sendMessage(message);
try{
Thread.sleep(100);
}catch(InterruptedException i)
{
i.printStackTrace();
}
}
Looper.loop();
}

//画一个小球
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.GREEN);
canvas.drawCircle(cx, cy, 10, paint);
}

//更新界面处理器
class ReFreshHandle extends Handler{

@Override
public void handleMessage(Message msg){
if(msg.what == 0x101){
MyView.this.update();
MyView.this.invalidate();
}
super.handleMessage(msg);
}
}

//小球运动坐标更新
public void update() {
int h = getHeight();
cy += 5;
if(cy >= h){
cy = 20;
}

}
}
}

------解决方案--------------------
将 ReFreshHandle handler = new ReFreshHandle();
放到外面,不要放到run里
  相关解决方案