Monday, 29 September 2014

Android: Randomly rotate buttons around predefined locations



I have a layout of buttons I am happy with, a square with nine buttons of equal size inside it, I want to keep all the buttons to fit in the same square but to swap their locations between them. For example the purple button maybe in the centre but on the image cycle it maybe on the top left where the red button was on the previous cycle. I hope this makes sense for what I am asking.


At the moment I have my buttons moving totally at random which is breaking the layout design I was happy with. This is the class code so far:



public void butSwap(){

Random r = new Random();
Random r1 = new Random();
Random r2 = new Random();
Random r3 = new Random();
Random r4 = new Random();
Random r5 = new Random();
Random r6 = new Random();
Random r7 = new Random();
Random r8 = new Random();

int x = r.nextInt(150);
int y = r.nextInt(150);

int x1 = r1.nextInt(150);;
int y1 = r1.nextInt(150);

int x2 = r2.nextInt(150);
int y2 = r2.nextInt(150);

int x3 = r3.nextInt(150);
int y3 = r3.nextInt(150);

int x4 = r4.nextInt(150);
int y4 = r4.nextInt(150);

int x5 = r5.nextInt(150);
int y5 = r5.nextInt(150);

int x6 = r6.nextInt(150);
int y6 = r6.nextInt(150);

int x7 = r7.nextInt(150);
int y7 = r7.nextInt(150);

int x8 = r8.nextInt(150);
int y8 = r8.nextInt(150);

green.setX(x);
green.setY(y);

yellow.setX(x1);
yellow.setY(y1);

red.setX(x2);
red.setY(y2);

purple.setX(x3);
purple.setY(y3);

black.setX(x4);
black.setY(y4);

brown.setX(x5);
brown.setY(y5);

pink.setX(x6);
pink.setY(y6);

orange.setX(x7);
orange.setY(y7);

blue.setX(x8);
blue.setY(y8);


}


and my button layout xml:



<Button
android:id="@+id/Black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/Orange"
android:layout_alignLeft="@+id/Red"
android:layout_marginBottom="43dp"
android:background="@color/Black"
android:minHeight="150dp"
android:minWidth="150dp" />

<Button
android:id="@+id/Green"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/Blue"
android:layout_alignLeft="@+id/Blue"
android:layout_marginBottom="50dp"
android:background="@color/Green"
android:minHeight="150dp"
android:minWidth="150dp" />

<Button
android:id="@+id/Red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Green"
android:layout_alignBottom="@+id/Green"
android:layout_alignParentRight="true"
android:background="@color/Red"
android:minHeight="150dp"
android:minWidth="150dp" />

<Button
android:id="@+id/Orange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Pink"
android:layout_alignBottom="@+id/Pink"
android:layout_alignParentRight="true"
android:background="@color/Orange"
android:minHeight="150dp"
android:minWidth="150dp" />

<Button
android:id="@+id/Brown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="72dp"
android:background="@color/Brown"
android:minHeight="150dp"
android:minWidth="150dp" />

<Button
android:id="@+id/Blue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Purple"
android:layout_alignBottom="@+id/Purple"
android:layout_alignLeft="@+id/Brown"
android:background="@color/Blue"
android:minHeight="150dp"
android:minWidth="150dp" />

<Button
android:id="@+id/Yellow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Red"
android:layout_alignBottom="@+id/Red"
android:layout_centerHorizontal="true"
android:background="@color/Yellow"
android:minHeight="150dp"
android:minWidth="150dp"
android:scaleType="fitStart" />

<Button
android:id="@+id/Purple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Black"
android:layout_alignBottom="@+id/Black"
android:layout_alignLeft="@+id/Yellow"
android:background="@color/Purple"
android:minHeight="150dp"
android:minWidth="150dp" />

<Button
android:id="@+id/Pink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Brown"
android:layout_alignBottom="@+id/Brown"
android:layout_alignLeft="@+id/Purple"
android:background="@color/Pink"
android:minHeight="150dp"
android:minWidth="150dp" />


Part of my mind thinks I should make a 3x3 table to store buttons, but on a code front I have just as little idea.


No comments:

Post a Comment