Hey Guys我有一个关于如何让按钮每秒随机移动的问题
黑色瓷砖是一个按钮
所以我想让它在每秒或更快的时间内随机移动
这是我的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/backgroundblank" >
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/black1" />
</RelativeLayout>
这是代码
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
}
}
任何人都可以帮助我吗?
答案 0 :(得分:2)
首先你应该得到屏幕尺寸
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);
}
答案 1 :(得分:0)
活动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