From d5b95c2b3aaa65f93aaa73a9098e4ae3dd3bb457 Mon Sep 17 00:00:00 2001 From: tearfulDalvik Date: Tue, 7 Nov 2017 23:54:22 +0800 Subject: [PATCH 1/3] Alpha Supported --- .../htextview/evaporate/EvaporateText.java | 47 ++++++++++--------- .../evaporate/EvaporateTextView.java | 13 +++-- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java index 5099d99..6bae4a9 100644 --- a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java +++ b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java @@ -27,24 +27,21 @@ public class EvaporateText extends HText { float charTime = 300; int mostCount = 20; private int mTextHeight; + private int paintColor = Color.BLACK; + + private List differentList = new ArrayList<>(); + private long duration; + private ValueAnimator animator; private List differentList = new ArrayList<>(); private long duration; private ValueAnimator animator; @Override - public void init(final HTextView hTextView, AttributeSet attrs, int defStyle) { + public void init(HTextView hTextView, AttributeSet attrs, int defStyle) { super.init(hTextView, attrs, defStyle); animator = new ValueAnimator(); animator.setInterpolator(new AccelerateDecelerateInterpolator()); - animator.addListener(new DefaultAnimatorListener() { - @Override - public void onAnimationEnd(Animator animation) { - if (animationListener != null) { - animationListener.onAnimationEnd(mHTextView); - } - } - }); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { @@ -57,19 +54,19 @@ public void onAnimationUpdate(ValueAnimator animation) { duration = (long) (charTime + charTime / mostCount * (n - 1)); } + @Override - public void animateText(final CharSequence text) { - mHTextView.post(new Runnable() { - @Override - public void run() { - oldStartX = mHTextView.getLayout().getLineLeft(0); - EvaporateText.super.animateText(text); - } - }); + public void animateText(CharSequence text) { + try { + oldStartX = mHTextView.getLayout().getLineLeft(0); + } catch (Exception ignored) {} + oldStartX = 0; + super.animateText(text); } @Override protected void initVariables() { + } @Override @@ -93,6 +90,7 @@ protected void animatePrepare(CharSequence text) { mTextHeight = bounds.height(); } + @Override protected void drawFrame(Canvas canvas) { @@ -111,16 +109,19 @@ protected void drawFrame(Canvas canvas) { // float pp = progress * duration / (charTime + charTime / mostCount * (mText.length() - 1)); + mOldPaint.setColor(paintColor); + mPaint.setColor(paintColor); + mOldPaint.setTextSize(mTextSize); int move = CharacterUtils.needMove(i, differentList); if (move != -1) { - mOldPaint.setAlpha(255); + mOldPaint.setAlpha(Color.alpha(paintColor)); float p = pp * 2f; p = p > 1 ? 1 : p; float distX = CharacterUtils.getOffset(i, move, p, startX, oldStartX, gapList, oldGapList); canvas.drawText(mOldText.charAt(i) + "", 0, 1, distX, startY, mOldPaint); } else { - mOldPaint.setAlpha((int) ((1 - pp) * 255)); + mOldPaint.setAlpha((int) ((1 - pp) * Color.alpha(paintColor))); float y = startY - pp * mTextHeight; float width = mOldPaint.measureText(mOldText.charAt(i) + ""); canvas.drawText(mOldText.charAt(i) + "", 0, 1, oldOffset + (oldGapList.get(i) - width) / 2, y, mOldPaint); @@ -133,8 +134,8 @@ protected void drawFrame(Canvas canvas) { if (!CharacterUtils.stayHere(i, differentList)) { - int alpha = (int) (255f / charTime * (progress * duration - charTime * i / mostCount)); - alpha = alpha > 255 ? 255 : alpha; + int alpha = (int) ((float) Color.alpha(paintColor) / charTime * (progress * duration - charTime * i / mostCount)); + alpha = alpha > Color.alpha(paintColor) ? Color.alpha(paintColor) : alpha; alpha = alpha < 0 ? 0 : alpha; mPaint.setAlpha(alpha); @@ -151,4 +152,8 @@ protected void drawFrame(Canvas canvas) { } } + public void setTextColor(int color) { + this.paintColor = color; + } + } diff --git a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java index 27fbe77..16600cc 100644 --- a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java +++ b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java @@ -1,11 +1,10 @@ -package com.hanks.htextview.evaporate; +package cn.ifengge.passport.widget; import android.content.Context; import android.graphics.Canvas; import android.text.TextUtils; import android.util.AttributeSet; -import com.hanks.htextview.base.AnimationListener; import com.hanks.htextview.base.HTextView; /** @@ -30,11 +29,6 @@ public EvaporateTextView(Context context, AttributeSet attrs, int defStyleAttr) init(attrs, defStyleAttr); } - @Override - public void setAnimationListener(AnimationListener listener) { - evaporateText.setAnimationListener(listener); - } - private void init(AttributeSet attrs, int defStyleAttr) { evaporateText = new EvaporateText(); evaporateText.init(this, attrs, defStyleAttr); @@ -52,6 +46,11 @@ public void animateText(CharSequence text) { evaporateText.animateText(text); } + @Override + public void setTextColor(int color) { + evaporateText.setTextColor(color); + } + @Override protected void onDraw(Canvas canvas) { // super.onDraw(canvas); From 26ed5c4508cf379625a210ebfd2b35e28083d006 Mon Sep 17 00:00:00 2001 From: tearfulDalvik Date: Wed, 8 Nov 2017 00:00:29 +0800 Subject: [PATCH 2/3] Alpha Supported --- .../java/com/hanks/htextview/evaporate/EvaporateText.java | 8 ++++++++ .../com/hanks/htextview/evaporate/EvaporateTextView.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java index 6bae4a9..b404375 100644 --- a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java +++ b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java @@ -42,6 +42,14 @@ public void init(HTextView hTextView, AttributeSet attrs, int defStyle) { super.init(hTextView, attrs, defStyle); animator = new ValueAnimator(); animator.setInterpolator(new AccelerateDecelerateInterpolator()); + animator.addListener(new DefaultAnimatorListener() { + @Override + public void onAnimationEnd(Animator animation) { + if (animationListener != null) { + animationListener.onAnimationEnd(mHTextView); + } + } + }); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { diff --git a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java index 16600cc..0720eed 100644 --- a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java +++ b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java @@ -1,4 +1,4 @@ -package cn.ifengge.passport.widget; +package com.hanks.htextview.evaporate; import android.content.Context; import android.graphics.Canvas; From 5abe30f2aa27b826375041cbb90f47c0787c8ee3 Mon Sep 17 00:00:00 2001 From: tearfulDalvik Date: Wed, 8 Nov 2017 22:29:29 +0800 Subject: [PATCH 3/3] Alpha Supported --- .../htextview/evaporate/EvaporateText.java | 26 ++++++++----------- .../evaporate/EvaporateTextView.java | 8 +++++- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java index b404375..9c03d7f 100644 --- a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java +++ b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateText.java @@ -3,6 +3,7 @@ import android.animation.Animator; import android.animation.ValueAnimator; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Rect; import android.text.Layout; import android.util.AttributeSet; @@ -33,12 +34,8 @@ public class EvaporateText extends HText { private long duration; private ValueAnimator animator; - private List differentList = new ArrayList<>(); - private long duration; - private ValueAnimator animator; - @Override - public void init(HTextView hTextView, AttributeSet attrs, int defStyle) { + public void init(final HTextView hTextView, AttributeSet attrs, int defStyle) { super.init(hTextView, attrs, defStyle); animator = new ValueAnimator(); animator.setInterpolator(new AccelerateDecelerateInterpolator()); @@ -62,19 +59,19 @@ public void onAnimationUpdate(ValueAnimator animation) { duration = (long) (charTime + charTime / mostCount * (n - 1)); } - @Override - public void animateText(CharSequence text) { - try { - oldStartX = mHTextView.getLayout().getLineLeft(0); - } catch (Exception ignored) {} - oldStartX = 0; - super.animateText(text); + public void animateText(final CharSequence text) { + mHTextView.post(new Runnable() { + @Override + public void run() { + oldStartX = mHTextView.getLayout().getLineLeft(0); + EvaporateText.super.animateText(text); + } + }); } @Override protected void initVariables() { - } @Override @@ -98,7 +95,6 @@ protected void animatePrepare(CharSequence text) { mTextHeight = bounds.height(); } - @Override protected void drawFrame(Canvas canvas) { @@ -164,4 +160,4 @@ public void setTextColor(int color) { this.paintColor = color; } -} +} \ No newline at end of file diff --git a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java index 0720eed..22e61ce 100644 --- a/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java +++ b/htextview-evaporate/src/main/java/com/hanks/htextview/evaporate/EvaporateTextView.java @@ -5,6 +5,7 @@ import android.text.TextUtils; import android.util.AttributeSet; +import com.hanks.htextview.base.AnimationListener; import com.hanks.htextview.base.HTextView; /** @@ -29,6 +30,11 @@ public EvaporateTextView(Context context, AttributeSet attrs, int defStyleAttr) init(attrs, defStyleAttr); } + @Override + public void setAnimationListener(AnimationListener listener) { + evaporateText.setAnimationListener(listener); + } + private void init(AttributeSet attrs, int defStyleAttr) { evaporateText = new EvaporateText(); evaporateText.init(this, attrs, defStyleAttr); @@ -56,4 +62,4 @@ protected void onDraw(Canvas canvas) { // super.onDraw(canvas); evaporateText.onDraw(canvas); } -} +} \ No newline at end of file