下面,我有 Java 和 XML 代码,基本上我试图单击一个固定按钮,并使第二个按钮在屏幕上随机跳动
XML 解释: 所以,我有两个按钮的相对布局...其中一个固定在屏幕底部...我想随机设置另一个的位置。
屏幕打开,单击固定按钮...,其他按钮的位置应随机变化。
假设我再次单击固定按钮并再次单击,另一个按钮应该随机跳动。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Rrand" >
<Button
android:id="@+id/rbb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Button" />
<Button
android:id="@+id/bss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:onClick="aa"
android:text="Button" />
</RelativeLayout>
JAVA解释 这里我有固定按钮的OnClick函数。
►b = 应该跳来跳去的按钮
首先,我们获取屏幕尺寸,然后使用 LayoutParams,使用 random 函数设置按钮位置。
public void Clicky(View v) {
b = (Button) findViewById(R.id.rbb1);
///Getting the Screen dimensions for API 1+
LayoutParams params = (LayoutParams) b.getLayoutParams();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
///Setting the buttons paramaters, again for API 1+
params.leftMargin = b.getWidth()
+ new Random().nextInt(metrics.widthPixels - b.getWidth());
params.topMargin = b.getHeight()
+ new Random().nextInt(metrics.heightPixels - b.getHeight());
b.setLayoutParams(params);
}
X 坐标的随机函数:
b.getWidth()+ new Random().nextInt(metrics.widthPixels - b.getWidth());
最小值 = b.getWidth()。
所以,理论上,这个按钮永远都不应该出现在屏幕之外。
在 nextInt 的参数中,我使用 [Screenwidth - Button Width] ...因此,理论上,它也不应该从另一侧离开屏幕...
问题 但它确实如此。大约一半的时间,按钮甚至没有出现在屏幕上......问题必须出在随机函数中(我想是这样)......我只是希望它出现在屏幕上的随机点上。
我认为这个问题很合乎逻辑,因为我拥有我需要的所有功能..
这不起作用 ►在按钮和相对层上设置边距。►从随机函数中删除所有按钮尺寸参数。
也就是说,使用:
新的 Random().nextInt(metrics.widthPixels)
那么,我做错了什么?