テトリスのクローンを作成しようとしているのですが、アンドロイドがタイマーを好まない理由がわかりません。この四角形を上から下に移動する最良の方法を見つけるのを手伝ってくれたら、それは素晴らしいことです
このコードでは、長方形が表示されるゲーム画面を作成しましたが、タイマーで移動しようとすると機能しません
package
com.example.coloroblind;
import java.util.Timer;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.net.wifi.p2p.WifiP2pManager.ActionListener;
import android.os.Bundle;
import android.view.View;
public class GameView extends Activity {
int x=20,y=20,changeX=2,changeY=2;
boolean reverseX=false,reverseY=false;
@Override public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.game);
setContentView(new DrawView(this));
}
public class DrawView extends View{
public DrawView(Context context){
super(context);
}
Timer timer = new Timer(10,new TimerListener());
timer.start();
@Override public void onDraw(Canvas canvas){
super.onDraw(canvas);
//fill the screen with white
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawColor(Color.WHITE);
//draw a rect
paint.setColor(Color.GREEN);
RectF rect = new RectF(x,y,50,50);
canvas.drawRoundRect(rect, 6, 6, paint);
int start = ((int)Math.random())*4;
x+=changeX;
y+=changeY;
if(y>getHeight()){
changeY=-1*changeY;
reverseY=true;
}
if((reverseY==true)&&(y<0)){
reverseY=false;
changeY=-1*changeY;
}
if(x>getWidth()){
changeX=-1*(changeX);
reverseX=true;
}
if((reverseX==true)&&(x<0)){
changeX=-1*(changeX);
reverseX=false;
}
}
class TimerListener implements ActionListener{
public void actionPerformed(ActionEvent e){
repaint();
}
@Override
public void onFailure(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess() {
// TODO Auto-generated method stub
}
}
}
}