以下に、Java コードと XML コードの両方を示します。基本的に、固定ボタンをクリックして、2 番目のボタンをランダムなポイントで画面上でジャンプさせようとしています。
XML の説明: 2 つのボタンを含む相対的なレイアウトがあります... そのうちの 1 つは画面の下部に固定されています... もう 1 つのボタンの位置をランダムに設定したいと考えています。
画面が開き、固定ボタンをクリックすると、もう一方のボタンの位置がランダムに変化するはずです。
固定ボタンをもう一度クリックすると、他のボタンがランダムに飛び回るはずです。
<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 を使用して、ランダム関数を使用してボタンの位置を設定します。
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] を使用しています...したがって、理論的には、反対側からも画面からはみ出してはいけません...
問題 まだあります。約半分の時間、ボタンは画面に表示されません...問題はランダム機能にあるに違いありません(私はそう思います)...画面上のランダムな場所に表示したいだけです。
必要な機能はすべて揃っているので、問題は単純に論理的だと思います..
これは機能しませんでし た ►ボタンと相対レイヤーにマージンを設定します。►ランダム関数からすべてのボタン寸法パラメーターを削除します。
つまり、次を使用します。
new Random().nextInt(metrics.widthPixels)
それで、私は何を間違えましたか?