如何在随机的屏幕位置显示一个按钮

24 浏览
0 Comments

如何在随机的屏幕位置显示一个按钮

在安卓中如何在随机的屏幕位置显示一个按钮?例如,我有一个名为GO的按钮。当我点击GO时,它会带我到第二个屏幕。在第二个屏幕上,将以随机的屏幕位置显示另一个按钮(不是开始按钮)。我该如何实现这个?

0
0 Comments

问题出现的原因:在Icecream Sandwich及以上的版本中,可以很容易地设置按钮的位置,但在较旧的手机上需要使用动画来实现随机位置。

解决方法:对于Icecream Sandwich及以上的版本,可以使用以下函数来移动到随机位置。可以根据屏幕宽度随机计算x的值。

v.setX(x);
v.setTranslationX(translationX);

对于较旧的手机,可以创建一个0秒长的随机动画来实现随机位置。

0
0 Comments

问题的原因:

AbsoluteLayout已经被弃用,因此无法使用它来在随机的屏幕位置显示一个按钮。

解决方法:

使用上述的代码,通过设置按钮的触摸事件来实现在随机屏幕位置显示按钮的效果。代码中的displaymatrics变量是用来获取屏幕的尺寸信息的,通过调用getDefaultDisplay()方法来获取屏幕的默认显示对象,并使用getMetrics()方法来获取屏幕的尺寸信息。

然后,使用Random类来生成随机的x和y坐标,范围是屏幕的宽度和高度。在按钮的触摸事件中,当触摸事件为ACTION_DOWN时,使用按钮的animate()方法来设置按钮在x和y坐标上的动画效果,从而将按钮移动到随机的屏幕位置。设置动画的持续时间为0,即立即完成移动。

最后,将触摸事件的返回值设置为true,表示已经处理了触摸事件。

通过以上的代码,可以轻松实现将按钮显示在随机屏幕位置的效果。

0
0 Comments

问题的出现原因:用户想要在屏幕的随机位置显示一个按钮,但是不知道如何实现。

解决方法:

1. 在第二个屏幕上使用absolute layout,将按钮放置在X=0,Y=0的位置。

2. 在onCreate方法中,通过以下代码实现按钮在随机位置的显示:

Button button = (Button)findViewById(R.id.my_button);
AbsoluteLayout.LayoutParams absParams = 
    (AbsoluteLayout.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);

3. 用户想知道如何编写AbsoluteLayout,以下为示例代码:


  

4. 如果以上解决方法解决了问题,请将此回答标记为答案,以帮助其他人。

5. 注意,AbsoluteLayout已经过时,可以参考此链接来设置布局参数。

6. 如果程序运行时出现"Force Close"错误,用户需要检查清单文件中的代码是否正确编写。

7. 用户已经找到问题所在,原因是在清单文件中忘记编写代码导致程序强制关闭。感谢大家的帮助。

0