2012-11-26 49 views
4

我试图在屏幕上随机显示一个TextView,但文本不应该出现在屏幕之外。文本总是很短,不超过3个字。这是我到目前为止有:随机TextView位置

 final TextView tv = ((TextView)findViewById(R.id.text); 

     final Random rand = new Random(); 
     final DisplayMetrics metrics = getResources().getDisplayMetrics(); 
     int width = rand.nextInt(metrics.widthPixels); 
     int height = rand.nextInt(metrics.heightPixels); 

     final FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     flp.setMargins(width, height, 0, 0); 
     tv.setLayoutParams(flp);    

UPDATE:

忘了,我有这个功能的范围内得到一个随机数:

public static int Random(final int lower, final int uppper) 
{ 
    return lower + (int)(Math.random() * ((uppper - lower) + 1)); 
} 

所以我的代码更新到本:

 int width = Random(0, metrics.widthPixels); 
     int height = Random(0, metrics.heightPixels); 

但它有时仍显示在查看区域之外。我甚至从每个值中减去10,以确保它保持在其中。大部分它都有,但它看起来好像显示在屏幕之外的某个地方。

回答

0

尝试查找升技更上获得随机数留下来的最大宽度和高度内,

+0

其实,它帮助了一点,因为我忘了有一个功能得到一个范围内的随机数。用它更新我的OP。 –

0

为什么你不能这样做呢?

而不是这样做,你可以找到该设备的最大x和最大y,然后基于条件,您可以将视图的位置设置为特定位置。

也看到这一点:SO

可能会对你有所帮助。

对任何查询发表评论。

+0

那个和我在做什么有什么区别? –

0

,但它仍然有时会显示可视面积

  1. 不要你有你的活动顶部的标题之外?这确实算在...我不知道,但我认为通知栏以及...如果你在全屏模式下工作,你应该没有问题。

  2. 请记住,xy坐标始终是objectview的左上角!所以它仍然可以发生,你得到你的图片/文字视图/屏幕之外的一半(或全部情况下:D)...