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> |
这是这样的表现
按钮是在布局内,所以我想点击它时按钮就像这样
按钮每秒在布局内随机移动,而不是从可以使应用程序强制关闭的布局中移出
第二个问题,如何设置快速随机按钮移动? 比如每隔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