如何使Button随机移动

嘿伙计们我有一个关于如何让按钮随机移动的问题

黑色瓷砖是一个按钮

在此处输入图像描述

所以我想让它在每秒或更快的时间内随机移动

在此处输入图像描述

这是我的xml

  

这是代码

 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){ //score+10(i dont know how to make score +10 if the button clicked) //if the button clicked //Do some logic here } }); if (score = 100){ //the speed of move are increase more fast } } 

有人可以帮帮我吗?

首先你应该得到屏幕尺寸

 public static Point getDisplaySize(@NonNull Context context) { Point point = new Point(); WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); manager.getDefaultDisplay().getSize(point); return point; } 

然后你应该得到一个随机的x和随机y位置按钮去,以便它仍然在屏幕上

 private void setButtonRandomPosition(Button button){ int randomX = new Random().nextInt(getDisplaySize(this).x); int randomY = new Random().nextInt(getDisplaySize(this).y); button.setX(randomX); button.setY(randomY); } 

最后,每隔一秒发生一次

 private void startRandomButton(Button button) { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { setButtonRandomPosition(button); } }, 0, 1000);//Update button every second } 

在创建运行它就像这样

 @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); startRandomButton(blackbutton); } 

Activity onCreate使用此代码

  Button button = (Button)findViewById(R.id.my_button); 

创建方法

  public void buttonmove() { RelativeLayout .LayoutParams absParams = (RelativeLayout .LayoutParams)button.getLayoutParams(); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int width = displaymetrics.widthPixels; int height = displaymetrics.heightPixels; Random r = new Random(); absParams.x = r.nextInt(width) ; absParams.y = r.nextInt(height); button.setLayoutParams(absParams); } 

如果你想特别时间使用Timer

  Timer t=new Timer(); t.schedule(new TimerTask() { public void run() { buttonmove();//call method } }, new SimpleDateFormat("HH:mm:ss").parse("13:40:20"));//set time here