From 1e569f1466b66fd60a20f1004831d3eb34f3617e Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 30 May 2017 20:59:13 -0500 Subject: [PATCH 1/3] Create Text Position Feature *Text can now be positioned via setXPosition and setYPosition functions instead of defaulting to center of view. Values range from 0-100 with 50 as the center by default. *Note: No intelligence is built into setting text position. For example, setting X or Y position to 0 places half of the text offscreen. User judgement required! --- .../Object/ParticleTextViewConfig.java | 26 +++++++++++++++++++ .../View/ParticleTextView.java | 18 ++++++------- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java b/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java index 126f110..d73e04a 100644 --- a/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java +++ b/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java @@ -17,6 +17,8 @@ public class ParticleTextViewConfig { private String[] particleColorArray = null; private MovingStrategy movingStrategy = new RandomMovingStrategy(); private long delay = 1000; + private int xPosition = 50; + private int yPosition = 50; private ParticleTextViewConfig(){} @@ -107,6 +109,22 @@ public Builder setDelay(Long delay){ return this; } + public Builder setXPosition(int xPosition){ + if (xPosition <= 0){ + xPosition = 1; + } + particleTextViewConfig.xPosition = xPosition; + return this; + } + + public Builder setYPosition(int yPosition){ + if (yPosition <= 0){ + yPosition = 1; + } + particleTextViewConfig.yPosition = yPosition; + return this; + } + public ParticleTextViewConfig instance(){ return particleTextViewConfig; } @@ -155,4 +173,12 @@ public MovingStrategy getMovingStrategy() { public long getDelay() { return delay; } + + public int getXPosition() { + return xPosition; + } + + public int getYPosition() { + return yPosition; + } } diff --git a/particletextview/src/main/java/com/yasic/library/particletextview/View/ParticleTextView.java b/particletextview/src/main/java/com/yasic/library/particletextview/View/ParticleTextView.java index b6bcdb8..705a0f9 100644 --- a/particletextview/src/main/java/com/yasic/library/particletextview/View/ParticleTextView.java +++ b/particletextview/src/main/java/com/yasic/library/particletextview/View/ParticleTextView.java @@ -43,6 +43,8 @@ public class ParticleTextView extends View { private long delay = 1000; private long delayHolder = 1000; private int textIterator = 0; + private int xPosition; + private int yPosition; public ParticleTextView(Context context) { super(context); @@ -80,6 +82,8 @@ public void setConfig(ParticleTextViewConfig config) { this.movingStrategy = config.getMovingStrategy(); this.delay = config.getDelay(); this.delayHolder = config.getDelay(); + this.xPosition = config.getXPosition(); + this.yPosition = config.getYPosition(); } else { Log.e("CONFIGERROR", "ParticleTextView Config is Null"); } @@ -105,10 +109,12 @@ public boolean isAnimationStop(){ return this.isAnimationStop; } - private int[][] bitmapTransition(int centerX, int centerY) { + private int[][] bitmapTransition() { + int centerX = (getWidth() / 100) * xPosition; + int centerY = (getHeight() / 100) * yPosition; int[][] colorArray; textPaint = initTextPaint(); - bitmap = Bitmap.createBitmap(centerX * 2, centerY * 2, Bitmap.Config.ARGB_8888); + bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888); Canvas textCanvas = new Canvas(bitmap); textCanvas.drawText(targetText, centerX, centerY, textPaint); colorArray = new int[bitmap.getHeight()][bitmap.getWidth()]; @@ -117,7 +123,6 @@ private int[][] bitmapTransition(int centerX, int centerY) { colorArray[row][column] = bitmap.getPixel(column, row); } } - Log.d("Bitmap Transition", "Run"); return colorArray; } @@ -142,7 +147,6 @@ protected void onDraw(Canvas canvas) { } } setParticles(); - Log.d("TargetText", targetText); setParticles = true; } @@ -151,7 +155,6 @@ protected void onDraw(Canvas canvas) { } if (!checkJudgeDistance()) { - Log.d("Particles", "Paused"); pauseAnimation(); } @@ -199,10 +202,7 @@ protected void onDraw(Canvas canvas) { } private void setParticles(){ - Log.d("Particles", "Set Particles"); - int centerX = getWidth() / 2; - int centerY = getHeight() / 2; - int[][] colorArray = bitmapTransition(centerX, centerY); + int[][] colorArray = bitmapTransition(); int red, green, blue; particles = new Particle[(colorArray.length / rowStep) * colorArray[0].length / columnStep]; int index = 0; From 01258aee07d6d5a36e36dcd0bda60ef2ed4f551e Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 31 May 2017 10:42:12 -0500 Subject: [PATCH 2/3] Quick Fix: Center Location Value *Change default center value to 51 instead of 50. --- .../particletextview/Object/ParticleTextViewConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java b/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java index d73e04a..ea23352 100644 --- a/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java +++ b/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java @@ -17,8 +17,8 @@ public class ParticleTextViewConfig { private String[] particleColorArray = null; private MovingStrategy movingStrategy = new RandomMovingStrategy(); private long delay = 1000; - private int xPosition = 50; - private int yPosition = 50; + private int xPosition = 51; + private int yPosition = 51; private ParticleTextViewConfig(){} From 37b32b53808f7dfe7c6555e8d218945d47c8bf2a Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 31 May 2017 11:23:12 -0500 Subject: [PATCH 3/3] Quick Fix: ParticleTextView Rounding *Int rounding results in incorrect positioning. Fix by performing arithmetic in float and then cast to int. --- .../particletextview/Object/ParticleTextViewConfig.java | 4 ++-- .../yasic/library/particletextview/View/ParticleTextView.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java b/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java index ea23352..d73e04a 100644 --- a/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java +++ b/particletextview/src/main/java/com/yasic/library/particletextview/Object/ParticleTextViewConfig.java @@ -17,8 +17,8 @@ public class ParticleTextViewConfig { private String[] particleColorArray = null; private MovingStrategy movingStrategy = new RandomMovingStrategy(); private long delay = 1000; - private int xPosition = 51; - private int yPosition = 51; + private int xPosition = 50; + private int yPosition = 50; private ParticleTextViewConfig(){} diff --git a/particletextview/src/main/java/com/yasic/library/particletextview/View/ParticleTextView.java b/particletextview/src/main/java/com/yasic/library/particletextview/View/ParticleTextView.java index 705a0f9..cea8940 100644 --- a/particletextview/src/main/java/com/yasic/library/particletextview/View/ParticleTextView.java +++ b/particletextview/src/main/java/com/yasic/library/particletextview/View/ParticleTextView.java @@ -110,8 +110,8 @@ public boolean isAnimationStop(){ } private int[][] bitmapTransition() { - int centerX = (getWidth() / 100) * xPosition; - int centerY = (getHeight() / 100) * yPosition; + int centerX = (int) (((float) getWidth() / 100) * xPosition); + int centerY = (int) (((float) getHeight() / 100) * yPosition); int[][] colorArray; textPaint = initTextPaint(); bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);