0

我试图Imagebutton在用户单击它后更改它的位置。我不知道如何让它将位置更改为仅在RelativeLayout我放置在ImageView. 它不会在左侧或顶部熄灭,但会在右侧和底部超出屏幕。有没有办法设置按钮的随机功能,这样它只会随机出现在RelativeLayout我设置的这个里面,而不是像现在这样在屏幕之外?

我附上了我的XMLJAVA代码:

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"
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);

        }
        }});

    }

}
4

0 回答 0