我想让ImageView导弹1在屏幕右边缘的随机y坐标处产生,然后将它左移到屏幕上直到它离开屏幕,最后将其移回屏幕右边缘的随机y坐标,以无限循环重复该过程。代码我生成的图像在一个完全随机的x和y坐标位置,每当活动重新启动,但它不会移动。任何人都可以明白为什么它不动并为我的问题提供解决方案?一些示例代码将不胜感激。Android:移动ImageView以更新线程中的值
产生的X线程和y坐标值:
public class Missiles extends Thread {
private int height, width, currentscore;
private ImageView missile1, missile2, missile3, missile4, missile5;
Handler updatemissile = new Handler();
int min = 100;
RelativeLayout layout;
int setx1, sety1, setx2, sety2, setx3, sety3, setx4, sety4, setx5, sety5;
private Random rand = new Random();
TextView x, y;
Missiles(int screenheight, int screenwidth, ImageView missile01, ImageView missile02, ImageView missile03,
ImageView missile04, ImageView missile05, RelativeLayout rl, TextView xtext, TextView ytext) {
missile1 = missile01;
missile2 = missile02;
missile3 = missile03;
missile4 = missile04;
missile5 = missile05;
height = screenheight;
width = screenwidth;
layout = rl;
x = xtext;
y = ytext;
}
public void updatevalue(int value) {
currentscore = value;
}
public void run() {
SetMissilePosition position = new SetMissilePosition(missile1, layout, x, y);
updatemissile.post(position);
//width is the width of the screen as height is the height of the screen
while (true) {
setx1 = width;
position.updateX(setx1);
int randomNum = rand.nextInt((height - min) + 1) + min;
sety1 = randomNum;
position.updateY(sety1);
while (setx1 > -50) {
setx1 = setx1 - 1;
position.updateX(setx1);
}
setx1 = width;
position.updateX(setx1);
}
}
}
了Runnable类:
public class SetMissilePosition implements Runnable{
int x1,y1, updateindicator;
ImageView missile1;
RelativeLayout layout;
TextView x,y;
SetMissilePosition(ImageView missile01, RelativeLayout relativeLayout, TextView xtext, TextView ytext) {
missile1 = missile01;
layout = relativeLayout;
x = xtext;
y = ytext;
}
public void updateX(int setx1) {
x1 = setx1;
updateindicator = 1;
}
public void updateY(int sety1) {
y1 = sety1;
updateindicator = 1;
}
public void run() {
missile1.setImageResource(R.drawable.missileanim);
layout.addView(missile1);
if(updateindicator == 1) {
missile1.setX(x1);
missile1.setY(y1);
x.setText(Integer.toString(x1));
y.setText(Integer.toString(y1));
updateindicator = 0;
}
}
}
如果我以任何方式不清晰,或者您需要更多的代码,比如我的MainActivity,请问。提前致谢!
关于翻译动画,是否有可能在转换过程中检测Imageview碰撞?我相信这是不可能的,所以我不能使用它。我会研究runOnUiThread。谢谢。 – DavidPrabhu
我不认为在转换过程中严格检测imageview碰撞是可能的,但这不应该是个问题。当你初始化变形动画时,你知道起点和终点(以及移动物体的速度)是什么。那时,路径完全是确定性的 - 所以你可以确定它是否会提前发生。 – Eric
我的应用程序需要实时玩家输入,无法估计。 – DavidPrabhu