1

下面是我写的代码片段。我在背景中有一个大的可滚动图像,在前景中有一个较小的图像。静态布局对我来说很好。我想要做的是,在 5 秒的间隔后,通过更改 topMargin 和 leftMargin 来随机化前景图像的新位置。我知道可以使用伪随机数生成器来更改值。但是,我不确定如何声明我希望更改“params.topMargin”和“params.leftMargin”值,或者如何在计时器上实现这一点。

            mImage = (ImageView)findViewById(R.id.Image1);

    RelativeLayout.LayoutParams params = new
            LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.topMargin = 1200;
    params.leftMargin = 45;

    mImage.setLayoutParams(params);

出于约束原因,我知道可以预定义随机数生成器的值范围,我也需要这样做。

如果有人可以帮助我指出正确的方向,那就太好了:D

编辑:我相当确定我需要将计时器、意图和 getRandom() 相互结合使用。我只是不太确定如何正确地将它们放在一起。

4

1 回答 1

1

在你的 onCreate 方法上试试这个:

final Handler handler = new Handler();
final Runnable r = new Runnable() {
    public void run() {

        mImage = (ImageView)YourActivity.this.findViewById(R.id.Image1);

        RelativeLayout.LayoutParams params = new
            LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        params.topMargin = (int)(Math.random()*500 + 1); //500 is the max margin, you can change it
        params.leftMargin = (int)(Math.random()*500 + 1); //500 is the max margin, you can change it

        mImage.setLayoutParams(params);

        handler.postDelayed(this, 1000); //1000 is the interval in milliseconds
    }
};
r.run();
于 2013-10-16T17:48:08.853 回答