diff options
author | Camil Staps | 2015-04-22 12:32:10 +0200 |
---|---|---|
committer | Camil Staps | 2015-04-22 12:32:10 +0200 |
commit | 7190058f48db7fd0ba8f499c479308fe86c2ec86 (patch) | |
tree | df65c17533e8b03160e6810513d1711e9f377804 /app/src/main/java/com/camilstaps/rushhour | |
parent | Car sound (diff) |
Relative width cars
Diffstat (limited to 'app/src/main/java/com/camilstaps/rushhour')
3 files changed, 43 insertions, 18 deletions
diff --git a/app/src/main/java/com/camilstaps/rushhour/Board.java b/app/src/main/java/com/camilstaps/rushhour/Board.java index 7ea52de..f59cc59 100644 --- a/app/src/main/java/com/camilstaps/rushhour/Board.java +++ b/app/src/main/java/com/camilstaps/rushhour/Board.java @@ -2,6 +2,7 @@ package com.camilstaps.rushhour; import android.content.Context; import android.util.Log; +import android.view.ViewGroup; import android.widget.RelativeLayout; import java.util.HashSet; @@ -46,9 +47,11 @@ public class Board { cars.add(car); } - public void addToLayout(Context context, RelativeLayout layout) { + public void addToLayout(Context context, ViewGroup layout) { + Log.d("Board", Integer.toString(layout.getWidth())); + for (Car car : cars) { - layout.addView(car.getImageView(context)); + layout.addView(car.getImageView(context, (layout.getWidth() - layout.getPaddingLeft() - layout.getPaddingRight()) / DIMENSION)); } } diff --git a/app/src/main/java/com/camilstaps/rushhour/Car.java b/app/src/main/java/com/camilstaps/rushhour/Car.java index 9d2c45a..4b0d99b 100644 --- a/app/src/main/java/com/camilstaps/rushhour/Car.java +++ b/app/src/main/java/com/camilstaps/rushhour/Car.java @@ -2,12 +2,14 @@ package com.camilstaps.rushhour; import android.content.Context; import android.graphics.Color; +import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; +import android.widget.TableLayout; /** * Created by camilstaps on 16-4-15. @@ -23,6 +25,9 @@ public class Car { private MoveListener moveListener; + private float widthPerCell; + private int calculatedWidth, calculatedHeight; + ImageView iv; public Car(Coordinate start, Coordinate end) { @@ -51,23 +56,26 @@ public class Car { return (SIZE + MARGIN) * (endCoordinate.getY() - startCoordinate.getY()) + SIZE; } - public void setImageViewMargins() { - ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(getWidth(), getHeight()); - marginParams.setMargins(startCoordinate.getX() * (SIZE + MARGIN), startCoordinate.getY() * (SIZE + MARGIN), MARGIN, MARGIN); - RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams); - iv.setLayoutParams(layoutParams); + public void setLayoutParams() { + ViewGroup.MarginLayoutParams marginParams = new RelativeLayout.LayoutParams(calculatedWidth, calculatedHeight); + marginParams.setMargins((int) (startCoordinate.getX() * (widthPerCell + MARGIN) + MARGIN), (int) (startCoordinate.getY() * (widthPerCell + MARGIN) + MARGIN), MARGIN, MARGIN); + iv.setLayoutParams(marginParams); } - public ImageView getImageView(Context context) { + public ImageView getImageView(Context context, float widthPerCell) { + + Log.d("Car", Float.toString(widthPerCell)); + + this.widthPerCell = widthPerCell - MARGIN; + calculatedWidth = (int) ((endCoordinate.getX() - startCoordinate.getX() + 1) * (this.widthPerCell + MARGIN) - MARGIN); + calculatedHeight = (int) ((endCoordinate.getY() - startCoordinate.getY() + 1) * (this.widthPerCell + MARGIN) - MARGIN); iv = new ImageView(context); iv.setBackgroundColor(colour); - int width = getWidth(); - int height = getHeight(); - iv.setMinimumWidth(width); - iv.setMinimumHeight(height); + iv.setMinimumWidth(calculatedWidth); + iv.setMinimumHeight(calculatedHeight); - setImageViewMargins(); + setLayoutParams(); final GestureDetector gdt = new GestureDetector(new GestureListener()); iv.setOnTouchListener(new View.OnTouchListener() { @@ -101,14 +109,14 @@ public class Car { startCoordinate.move(offset, 0); endCoordinate.move(offset, 0); - setImageViewMargins(); + setLayoutParams(); } public void moveVertically(int offset) { startCoordinate.move(0, offset); endCoordinate.move(0, offset); - setImageViewMargins(); + setLayoutParams(); } public Coordinate wouldMoveTo(int offset) { diff --git a/app/src/main/java/com/camilstaps/rushhour/FullscreenActivity.java b/app/src/main/java/com/camilstaps/rushhour/FullscreenActivity.java index e5366f7..614176a 100644 --- a/app/src/main/java/com/camilstaps/rushhour/FullscreenActivity.java +++ b/app/src/main/java/com/camilstaps/rushhour/FullscreenActivity.java @@ -3,6 +3,10 @@ package com.camilstaps.rushhour; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; +import android.util.Log; +import android.view.ViewTreeObserver; +import android.widget.GridLayout; +import android.widget.LinearLayout; import android.widget.RelativeLayout; import com.camilstaps.rushhour.util.SystemUiHider; @@ -21,9 +25,10 @@ public class FullscreenActivity extends Activity { setContentView(R.layout.activity_fullscreen); - RelativeLayout boardLayout = (RelativeLayout) findViewById(R.id.board); + final RelativeLayout boardLayout = (RelativeLayout) findViewById(R.id.board); + Log.d("FA", boardLayout.toString()); - Board board = new Board(); + final Board board = new Board(); board.add(new Car(new Coordinate(0,0), new Coordinate(2,0), Color.YELLOW)); board.add(new Car(new Coordinate(3,0), new Coordinate(3,1), Color.rgb(128,223,182))); board.add(new Car(new Coordinate(4,0), new Coordinate(4,2), Color.rgb(198, 134,221))); @@ -37,6 +42,15 @@ public class FullscreenActivity extends Activity { board.add(new Car(new Coordinate(5,4), new Coordinate(5,5), Color.rgb(219,202,161))); board.add(new Car(new Coordinate(0,5), new Coordinate(2,5), Color.rgb(25,195,167))); - board.addToLayout(this, boardLayout); + ViewTreeObserver vto = boardLayout.getViewTreeObserver(); + vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + boardLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); + board.addToLayout(getBaseContext(), boardLayout); + } + }); + + //board.addToLayout(this, boardLayout); } } |