1

可能重复:
如何通过单击按钮在 android 中随机更改按钮的位置

这是我的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tuch_me);
    btn = (Button) findViewById(R.id.bttuch);
    timer = (TextView) findViewById(R.id.tvtimer);
    timeout = (TextView) findViewById(R.id.tvtimeout);
    level = (TextView) findViewById(R.id.tvlevel);
    tv =(TextView) findViewById(R.id.textView1);
    btn.setOnClickListener(this);
    buttonWidth = 1;
    buttonHight = 1;

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_tuch_me, menu);
    return true;
}



@SuppressLint({ "NewApi", "NewApi" })
@TargetApi(11)
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.bttuch:

        Random r = new Random();

        int xx=getResources().getDisplayMetrics().widthPixels;
        int yy=getResources().getDisplayMetrics().heightPixels;

        int x = r.nextInt(xx);
        int y = r.nextInt(yy);

        buttonWidth = btn.getWidth();
        buttonHight = btn.getHeight();

        btn.setX(xx-buttonWidth);
        btn.setY(yy-buttonHight);

        break;
    }

}
}

当我单击按钮时,它会超出屏幕!我什至将实际分辨率设置为 xx 和 yy,但它仍然不起作用。我怎样才能限制它留在屏幕内?

4

1 回答 1

0

你正在使用这条线

    btn.setX(xx-buttonWidth);
    btn.setY(yy-buttonHight);

当我认为你想这样做时

    btn.setX(x-buttonWidth);
    btn.setY(y-buttonHight);

因为您的变量xxandyy不是随机的,但是您将xand yints 设置为根据xxand的值创建的随机 intyy

按钮离开屏幕的原因是因为你总是把它放在角落里,给你的按钮 x 和 y 坐标,它们是屏幕的全长。

希望这是有道理的

于 2012-11-13T21:32:19.717 回答