2017-07-12 4 views
1

Bei der OnClick-Methode eines meiner Button, bin ich randomizing seine Position auf dem Bildschirm ... Es funktioniert perfekt, aber wenn ich 2 oder 3 Tasten verwenden, um ihre Position zufällig überlappen sie manchmal einander z Eine Taste halfly überlappt die andere Taste ...Randomized Button manchmal überlappen

hier ist die Methode für Random Position der Taste -

private void moveButton() 
    { 
     if(!canMove){ return; } 

     runOnUiThread(
       new Runnable() 
       { 
        @Override 
        public void run() 
        { 

         Display display = getWindowManager().getDefaultDisplay(); 
         Point size = new Point(); 
         display.getSize(size); 
         int width = size.x; 
         int height = size.y; 

         Button button = (Button)findViewById(R.id.button); 
         Random r = new Random(); 

         int startX = width/2; 
         int startY = height/2; 

         if(myscores==0){ 
          button.setX(startX); 
          button.setY(startY); 
         } 

         else { 

          int x = r.nextInt(width - 210); 
          int y = r.nextInt(height - 200); 

          button.setX(x); 
          button.setY(y); 
         } 
        } 
       } 
     ); 

    } 

Jede Hilfe wäre sehr geschätzt :)

Antwort

1

Sie müssen, wenn die Schaltfläche überprüfen überlappt die andere Taste und verschiebt sie erneut, wenn dies der Fall ist:

int x = r.nextInt(width - 210); 
int y = r.nextInt(height - 200); 

if (x < other.getX() + other.getWidth() 
    && x + button.getWidth() > other.getX() 
    && y < other.getY() + other.getHeight() 
    && y + button.getHeight() > other.getY()) { 

    moveButton(); 
    return; 
} 

button.setX(x); 
button.setY(y); 
+0

hier die "andere" bedeutet die andere Taste rechts? :) – DarShan

+0

@DarShan ja, das ist richtig. –

+0

Vielen Dank :) Funktioniert wie ein Charme: D – DarShan