Android在相对布局中随机改变按钮的位置而不会出现在屏幕之外

时间:2014-07-21 22:43:46

标签: android random android-button android-relativelayout android-imagebutton

我试图在用户点击后更改Imagebutton的位置。我不确定如何将位置更改为仅RelativeLayout放置在ImageView之内。它不会出现在左侧或顶部,但它会在屏幕右侧和底部之外。有没有办法设置按钮的随机功能,以便它只会在我设置的RelativeLayout内部随机出现,而不是像现在这样在屏幕之外?

我已附上我的XMLJAVA代码:

XML CODE:

<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"
tools:context=".MainActivity" 
android:background="#000000"
android:id="@+id/window">


<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:src="@drawable/buttonfield" />

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/imageView1" 
    android:layout_alignBottom="@+id/imageView1"
    android:id="@+id/layout">

    <ImageButton
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@drawable/tapadot_dot_start"/>

</RelativeLayout>

</RelativeLayout> 

JAVA代码:

package com.example.randombutton;

public class MainActivity extends Activity {

private ImageButton startbutton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    final ImageView field = (ImageView) findViewById(R.id.imageView1);
    startbutton = (ImageButton) findViewById(R.id.btn);


    startbutton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {


        Random r = new Random();
        int buttonHeight;
        int buttonWidth;
        buttonHeight = startbutton.getHeight();
        buttonWidth = startbutton.getWidth();

        int x = r.nextInt(480 + buttonWidth);
        int y = r.nextInt(900 + buttonHeight); 


        startbutton.setX(x); 
        startbutton.setY(y);

        }
        }});

    }

}

0 个答案:

没有答案