1

首先对不起我的英语。我刚开始用android开发

我的问题是:

我在随机位置创建一个 ImageView,每次触摸图像时,它都会改变它的位置。当您触摸时,您有概率 (%) 在另一个随机位置出现另一个图像。但我的问题是,当第二张图片出现时,第一张图片回到其“创建位置”而不是保持位置。

“炸弹”创建得很好,但是第一张图片回到了创建的位置,而不是现在的位置。

谢谢大家的帮助

我的测试代码示例:

public void start(View view) {
    width= 60;
    height= 60;
    layout = (RelativeLayout) findViewById(R.id.rellayout);
    widthLayout = layout.getWidth();
    heightLayout = layout.getHeight();
    r = new Random();
    x = r.nextInt(widthLayout - 60);
    y = r.nextInt(heightLayout - 60);

    imagen = new ImageView(this);
    imagen.setImageResource(R.drawable.led_circle_green);
    RelativeLayout.LayoutParams paramss = new RelativeLayout.LayoutParams(
            60, 60);
    paramss.leftMargin = x;
    paramss.topMargin = y;
    imagen.setAdjustViewBounds(true);
    layout.addView(imagen, paramss);

    Animation aparecer = AnimationUtils
            .loadAnimation(this, R.anim.aparecer);
    imagen.startAnimation(aparecer);

    imagen.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // your code here
            push();
        }
    });


  public void push() {
    createBomb();
    move();
}

public void createBomb() {
    r = new Random();
    int proba = r.nextInt(100);

    if (proba < 50) {   
        x = r.nextInt(widthLayout - 60);
        y = r.nextInt(heightLayout - 60);

        bomb = new ImageView(this);
        bomb.setImageResource(R.drawable.bomb);

        RelativeLayout.LayoutParams paramss = new RelativeLayout.LayoutParams(
                60, 60);
        paramss.leftMargin = x;
        paramss.topMargin = y;
        bomb.setAdjustViewBounds(true);
        layout.addView(bomb, paramss);
    }
}

public void move() {
    r = new Random();
    int proba = r.nextInt(100);

        if (proba < 10) {

                ximg = r.nextInt(widthLayout - width);
                yimg = r.nextInt(heightLayout - height);


            imagen.layout(ximg, yimg, ximg + width, yimg + height);

        }

}
4

1 回答 1

0

布局方法不会将持久更改应用于视图状态。为图像视图设置新的布局参数,这将指定它的新位置(不要使用布局方法)。

当您添加新的 ImageView2 时,RelativeLayout 决定重新布局其子项并重置 ImageView1 位置。

读这个。

于 2013-01-31T14:36:19.490 回答