关于java:如何使Button随机移动每秒一次

How to make a Button randomly Move in a Layout every second

好的,在这里我有这样的xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

     <RelativeLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
         android:layout_centerVertical="true"
         android:layout_margin="30dp"
         android:background="@drawable/backgroundblankred">

         <Button
             android:id="@+id/button1"
             android:layout_width="100dp"
             android:layout_height="100dp"
             android:background="@drawable/eeclevelfirstblackbuton" />

     </RelativeLayout>

</RelativeLayout>

这是这样的表现

enter image description here

按钮是在布局内,所以我想点击它时按钮就像这样

enter image description here

按钮每秒在布局内随机移动,而不是从可以使应用程序强制关闭的布局中移出

第二个问题,如何设置快速随机按钮移动? 比如每隔2秒设置一次随机移动并更快地增加它,可以设置按钮移动得更快吗?

我现在有这个代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class tested extends Activity {

Button buttonblack;
int score=0;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.tested);


    buttonblack = (Button)findViewById(R.id.black1);
    buttonblack.setOnClickListener(new View.OnClickListener() {

              public void onClick(View v){
             //If clicked, Move the button randomly
                                         }                
            });

任何人都可以帮助一些代码? 提前致谢。


希望这个视频有助于第一部分:Android应用程序开发初学者 - 34 - 动画和过渡。

对于第二部分,您可以使用这样的循环:

1
2
3
4
while(true){
    delay(time);//time can be taken input from any EditText.
    placeButton(x,y); // x and y are random numbers
}


在视图区域内生成随机整数
随机数

1)这应该是您正在寻找的伪代码

1
2
3
4
int x = rnd(view.getX(), view.getX()+view.getWidth());
int y = rnd(view.getY(), view.getY()+view.getHeight());
view.setTranslationX(x);
view.setTranslationY(y);

2)使用一个可以修改睡眠持续时间的线程,需要在主线程上调用ui更改,使用处理程序或asynctask