2014-03-03 60 views
5

如何在Android中隨機屏幕位置顯示按鈕?例如,我有一個名爲GO的按鈕。當我點擊GO時,它會將我帶到第二個屏幕。第二個屏幕將在隨機屏幕位置顯示另一個按鈕(不是START按鈕)。我怎樣才能做到這一點?如何在隨機屏幕位置顯示按鈕

+2

獲取屏幕尺寸,然後生成0到屏幕尺寸之間的隨機數,然後設置爲您的按鈕參數 –

+0

@Shayanpourvatan如何生成一個隨機並將其設置爲參數?我是一個新的android – murrmurr

+0

看到MDMalik的答案,這就是我想說的 –

回答

5

對於第二個屏幕使用absolute layout,但在X = 0的按鈕,Y = 0

一旦你的第二個屏幕被激活。 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); 

編輯用戶想知道如何寫AbsoluteLayout

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    <Button 
     android:id="@+id/my_button" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_x="0dp" 
     android:layout_y="0dp" 
     android:text="Yes" /> 
</AbsoluteLayout> 
+0

+1,因爲我確實說過這個對評論也是如此。 –

+0

我的xml代碼將如何顯示?我在哪裏設置按鈕x = 0,y = 0? – murrmurr

+1

請檢查編輯部分 – MDMalik

-1

如果您的目標是Icecream Sandwich及以上,您可以非常容易地設置按鈕的位置 您可以使用以下功能移動到隨機位置。您可以根據屏幕寬度隨機計算x

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

對於舊手機,您可以製作0秒長的隨機動畫。

1
displaymatrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(displaymatrics); 

    textview.setOnTouchListener(new View.OnTouchListener(){ 

     Random R = new Random(); 
     float dx = R.nextFloat() * displaymatrics.widthPixels; 
     float dy = R.nextFloat() * displaymatrics.heightPixels; 

     public boolean onTouch(View view, MotionEvent event){ 

      if(event.getAction() == MotionEvent.ACTION_DOWN){ 

         view.animate() 
           .x(dx) 
           .y(dy) 
           .setDuration(0) 
           .start(); 
      } 
      return true; 
     } 
    }); 

AbsoluteLayout現在已經過時,你可以移動視圖(當它觸及)在任意屏幕位置這輕鬆的方式。

相關問題