0

我有一个应用程序,您在其中单击一个按钮,它将转换到屏幕上的另一个点。

这是我用来翻译的。

findViewById(R.id.clickButton).animate().translationX((float) (Math.random() * ( 100 - 400 )));
findViewById(R.id.clickButton).animate().translationY((float) (Math.random() * ( 100 - 400 )));

这很好,但是该按钮可能会部分翻译出屏幕,有时会位于其他小部件的顶部。有没有办法避免这种情况?

4

1 回答 1

0

要在您想要的范围内获取 Math.random() 值,您需要添加以下内容 -:

 bttn1.animate().translationX((float) (randomFromInterval(100,800)));
 bttn2.animate().translationY((float) (randomFromInterval(200,500)));

 public int randomFromInterval(int from,int to)
 {
    return (int) Math.floor(Math.random()*(to-from+1)+from);
 }

如果您将按钮放在其他小部件之上,那么您将不得不将按钮放在相对布局的末尾,因为它根据您在 xml 布局中编写的小部件管理视图 z 轴可见性,例如 -:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Button1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button1"
        android:text="Button2" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_below="@+id/button2"
        android:text="Button3" />

</RelativeLayout>

在上面的布局中,button3 是 z 轴的最顶层视图,如果您需要将 button1 设置为 z 轴的最顶层视图,那么您将像这样重新排列您的代码 - :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >


    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button1"
        android:text="Button2" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_below="@+id/button2"
        android:text="Button3" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Button1" />


</RelativeLayout>

我希望这个解释能消除你的疑惑。

于 2013-09-01T04:27:36.547 回答