在Java / Android限制范围内设置随机按钮位置

时间:2015-06-12 05:55:56

标签: java android random

http://puu.sh/ilLDM/374202dbc6.png

所以这就是我想要完成的事情,上面是视图的样子,我试图将按钮的位置限制在红色方块上。

这是我到目前为止尝试过的代码:

ImageButton charButton = (ImageButton) findViewById(R.id.goodIcon);
charButton.setImageDrawable(x);
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
width = width - 100; //Wont go within 100 of the screen edge
height = height - 100; //Wont go within 100 of bottom edge
Random r1 = new Random();
int Button1H = r1.nextInt(height - 200) + 200;
if (Button1H<100) {Button1H = 100;}
if (Button1H >= displayMetrics.heightPixels-100){Button1H = displayMetrics.heightPixels-100;}
int Button1W = r1.nextInt(width - 50) +50;
if (Button1W >= displayMetrics.widthPixels-100){Button1W = displayMetrics.widthPixels - 300;}
charButton.setX(Button1W);
charButton.setY(Button1H);

我意识到这很可能不是处理它的最佳方式,但我真的不希望图标在顶部和底部的视图上方,或者在右侧的外部显示。

有任何帮助吗?使用Android Studio。顶部的图片显示了我希望它能够出现的范围。

1 个答案:

答案 0 :(得分:1)

我提出了自己的解决方案!所以我做的是我添加了第二个视图到现有的布局,匹配图片中红色方块的大小,然后使用此代码:

    ImageButton charButton = (ImageButton) findViewById(R.id.goodIcon);
    RelativeLayout gameLayout = (RelativeLayout) findViewById(R.id.gameLayout);
    int width  = gameLayout.getWidth();
    int height = gameLayout.getHeight();
    charButton.setImageDrawable(x);
    int x = width;
    int y = height;
    Random buttonPlace = new Random();
    int buttonY = buttonPlace.nextInt(y-100)+100;
    int buttonX = buttonPlace.nextInt(x-50)+50;
    charButton.setX(buttonX);
    charButton.setY(buttonY);

它抓住了二级布局的宽度和高度,并使用它来设置按钮的显示位置,从而将其保持在正确的框架内