gpt4 book ai didi

java - 在 Android 中移动形状

转载 作者:行者123 更新时间:2023-12-01 04:48:02 25 4
gpt4 key购买 nike

我试图找出在android中简单地从屏幕顶部向下移动一个矩形的最佳方法,因为我试图制作一个俄罗斯方 block 克隆,但我不明白为什么android不喜欢计时器。所以,如果你们能帮我找出从上到下移动这个矩形的最佳方法,那就太棒了

在这段代码中,我创建了一个游戏屏幕,其中出现了矩形,但是当我尝试用计时器移动它时,它不起作用

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

}

}

}
}

最佳答案

您使用计时器的方式不适用于 Android。没有像 Timer(10,new TimerListener()) 这样的构造函数

使用计时器的最快方法在下面的代码 fragment 中:

Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {

}
}, _delay, _period);

关于java - 在 Android 中移动形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15492390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com