gpt4 book ai didi

android - 如何让球保持移动

转载 作者:行者123 更新时间:2023-11-30 03:00:50 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的应用程序,其中有一个球在屏幕边缘四处移动并反射出来。我已经找到了如何创建我的球。但是我无法移动它。

到目前为止,这是我的代码。

protected void onCreate(Bundle savedInstanceState) {
initial_x=100;
initial_y=100;
speed_x=1;
speed_y=1;
x=initial_x;
y=initial_y;

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
draw();

}
private void draw() {



DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
width = displaymetrics.widthPixels;



Log.d("dimensions",String.valueOf(width));
Log.d("dimensions",String.valueOf(height));


Bitmap bitmap = Bitmap.createBitmap(width, height, Config.RGB_565);

g = new Canvas(bitmap);
g.drawColor(Color.WHITE);
paint = new Paint();
paint.setColor(Color.RED);
g.drawCircle(50,50, 20, paint); //Put your values

// In order to display this image, we need to create a new ImageView that we can display.
ImageView imageView = new ImageView(this);

// Set this ImageView's bitmap to ours
imageView.setImageBitmap(bitmap);

// Create a simple layout and add imageview to it.
RelativeLayout layout = new RelativeLayout(this);
RelativeLayout.LayoutParams params = new
RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);

layout.addView(imageView, params);
layout.setBackgroundColor(Color.BLACK);

// Show layout in activity.
setContentView(layout);

layout.setOnClickListener(l);



}

我已经设置了一个 onclick 监听器,基本上可以在我触摸屏幕时移动球。我如何使它成为一个连续的过程?

编辑:

我将 onclicklistener 更改为 ontouchlistener 以在我触摸屏幕时保持球移动,但它仍然像 onclick 监听器一样工作。这是代码

OnTouchListener l = new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {


// TODO Auto-generated method stub

switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
g.drawColor(Color.WHITE);
x+=speed_x;
y+=speed_y;
g.drawCircle(x, y, 20, paint);
if(x==0)
speed_x=-1;
if(x==height)
speed_x=1;
if(y==0)
speed_y=-1;
if(y==width)
speed_y=1;
v.invalidate();
break;

}

return false;
}
};

最佳答案

使用 TimerTask定期持续更新位置。大概每秒 10 到 30 次就足够了。

将绘图和位置更新逻辑放在 TimerTaskrun() 方法中,因为创建另一个线程将不起作用。 (绘图必须发生在 GUI 线程上)。

希望这对您有所帮助。

编辑:

TimerTask myTimerTask = new TimerTask() {
@Override
public void run() {
// Update logic here

runOnUiThread(new Runnable() {
@Override
public void run() {
// Drawing logic here
}
});
}
}
Timer timer = new Timer();
timer.schedule(myTimerTask, 50, 50);

关于android - 如何让球保持移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22568146/

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