diff --git a/app/src/main/java/com/blankj/androidutilcode/feature/core/span/SpanActivity.java b/app/src/main/java/com/blankj/androidutilcode/feature/core/span/SpanActivity.java index 223c1aea11842f2eee570086f9e91f38b1c1d356..874a450bbc13fc7d57f8592bdb01207833689f55 100644 --- a/app/src/main/java/com/blankj/androidutilcode/feature/core/span/SpanActivity.java +++ b/app/src/main/java/com/blankj/androidutilcode/feature/core/span/SpanActivity.java @@ -3,18 +3,13 @@ package com.blankj.androidutilcode.feature.core.span; import android.animation.ValueAnimator; import android.content.Context; import android.content.Intent; -import android.graphics.BitmapFactory; -import android.graphics.BitmapShader; -import android.graphics.BlurMaskFilter; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Shader; -import android.graphics.Typeface; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; -import android.text.Layout; import android.text.SpannableStringBuilder; import android.text.TextPaint; import android.text.method.LinkMovementMethod; @@ -106,57 +101,57 @@ public class SpanActivity extends BaseBackActivity { textSize = tvAboutSpan.getTextSize(); density = getResources().getDisplayMetrics().density; - initAnimSpan(); - startAnim(); +// initAnimSpan(); +// startAnim(); tvAboutSpan.setText(new SpanUtils() - .appendLine("SpanUtils").setBackgroundColor(Color.LTGRAY).setBold().setForegroundColor(Color.YELLOW).setAlign(Layout.Alignment.ALIGN_CENTER) - .appendLine("前景色").setForegroundColor(Color.GREEN) - .appendLine("背景色").setBackgroundColor(Color.LTGRAY) - .appendLine("行高顶部对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_TOP).setBackgroundColor(Color.GREEN) - .appendLine("行高居中对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.LTGRAY) - .appendLine("行高底部对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_BOTTOM).setBackgroundColor(Color.GREEN) - .appendLine("测试段落缩,首行缩进两字,其他行不缩进").setLeadingMargin((int) textSize * 2, 10).setBackgroundColor(Color.GREEN) - .appendLine("测试引用,后面的字是为了凑到两行的效果").setQuoteColor(Color.GREEN, 10, 10).setBackgroundColor(Color.LTGRAY) - .appendLine("测试列表项,后面的字是为了凑到两行的效果").setBullet(Color.GREEN, 20, 10).setBackgroundColor(Color.LTGRAY).setBackgroundColor(Color.GREEN) - .appendLine("32dp 字体").setFontSize(32, true) - .appendLine("2 倍字体").setFontProportion(2) - .appendLine("横向 2 倍字体").setFontXProportion(1.5f) - .appendLine("删除线").setStrikethrough() - .appendLine("下划线").setUnderline() - .append("测试").appendLine("上标").setSuperscript() - .append("测试").appendLine("下标").setSubscript() - .appendLine("粗体").setBold() - .appendLine("斜体").setItalic() - .appendLine("粗斜体").setBoldItalic() - .appendLine("monospace 字体").setFontFamily("monospace") - .appendLine("自定义字体").setTypeface(Typeface.createFromAsset(getAssets(), "fonts/dnmbhs.ttf")) - .appendLine("相反对齐").setAlign(Layout.Alignment.ALIGN_OPPOSITE) - .appendLine("居中对齐").setAlign(Layout.Alignment.ALIGN_CENTER) - .appendLine("正常对齐").setAlign(Layout.Alignment.ALIGN_NORMAL) - .append("测试").appendLine("点击事件").setClickSpan(clickableSpan) - .append("测试").appendLine("Url").setUrl("https://github.com/Blankj/AndroidUtilCode") - .append("测试").appendLine("模糊").setBlur(3, BlurMaskFilter.Blur.NORMAL) - .appendLine("颜色渐变").setShader(new LinearGradient(0, 0, - 64 * density * 4, 0, - getResources().getIntArray(R.array.rainbow), - null, - Shader.TileMode.REPEAT)).setFontSize(64, true) - .appendLine("图片着色").setFontSize(64, true).setShader(new BitmapShader(BitmapFactory.decodeResource(getResources(), R.drawable.span_cheetah), - Shader.TileMode.REPEAT, - Shader.TileMode.REPEAT)) - .appendLine("阴影效果").setFontSize(64, true).setBackgroundColor(Color.BLACK).setShadow(24, 8, 8, Color.WHITE) - - .append("小图").setBackgroundColor(Color.GREEN) - .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_TOP) - .append("顶部").setBackgroundColor(Color.GREEN) - .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_CENTER) - .append("居中").setBackgroundColor(Color.GREEN) - .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_BASELINE) - .append("底部").setBackgroundColor(Color.GREEN) - .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_BOTTOM) - .appendLine("对齐").setBackgroundColor(Color.GREEN) +// .appendLine("SpanUtils").setBackgroundColor(Color.LTGRAY).setBold().setForegroundColor(Color.YELLOW).setAlign(Layout.Alignment.ALIGN_CENTER) +// .appendLine("前景色").setForegroundColor(Color.GREEN) +// .appendLine("背景色").setBackgroundColor(Color.LTGRAY) +// .appendLine("行高顶部对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_TOP).setBackgroundColor(Color.GREEN) +// .appendLine("行高居中对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.LTGRAY) +// .appendLine("行高底部对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_BOTTOM).setBackgroundColor(Color.GREEN) +// .appendLine("测试段落缩,首行缩进两字,其他行不缩进").setLeadingMargin((int) textSize * 2, 10).setBackgroundColor(Color.GREEN) +// .appendLine("测试引用,后面的字是为了凑到两行的效果").setQuoteColor(Color.GREEN, 10, 10).setBackgroundColor(Color.LTGRAY) +// .appendLine("测试列表项,后面的字是为了凑到两行的效果").setBullet(Color.GREEN, 20, 10).setBackgroundColor(Color.LTGRAY).setBackgroundColor(Color.GREEN) +// .appendLine("32dp 字体").setFontSize(32, true) +// .appendLine("2 倍字体").setFontProportion(2) +// .appendLine("横向 2 倍字体").setFontXProportion(1.5f) +// .appendLine("删除线").setStrikethrough() +// .appendLine("下划线").setUnderline() +// .append("测试").appendLine("上标").setSuperscript() +// .append("测试").appendLine("下标").setSubscript() +// .appendLine("粗体").setBold() +// .appendLine("斜体").setItalic() +// .appendLine("粗斜体").setBoldItalic() +// .appendLine("monospace 字体").setFontFamily("monospace") +// .appendLine("自定义字体").setTypeface(Typeface.createFromAsset(getAssets(), "fonts/dnmbhs.ttf")) +// .appendLine("相反对齐").setAlign(Layout.Alignment.ALIGN_OPPOSITE) +// .appendLine("居中对齐").setAlign(Layout.Alignment.ALIGN_CENTER) +// .appendLine("正常对齐").setAlign(Layout.Alignment.ALIGN_NORMAL) +// .append("测试").appendLine("点击事件").setClickSpan(clickableSpan) +// .append("测试").appendLine("Url").setUrl("https://github.com/Blankj/AndroidUtilCode") +// .append("测试").appendLine("模糊").setBlur(3, BlurMaskFilter.Blur.NORMAL) +// .appendLine("颜色渐变").setShader(new LinearGradient(0, 0, +// 64 * density * 4, 0, +// getResources().getIntArray(R.array.rainbow), +// null, +// Shader.TileMode.REPEAT)).setFontSize(64, true) +// .appendLine("图片着色").setFontSize(64, true).setShader(new BitmapShader(BitmapFactory.decodeResource(getResources(), R.drawable.span_cheetah), +// Shader.TileMode.REPEAT, +// Shader.TileMode.REPEAT)) +// .appendLine("阴影效果").setFontSize(64, true).setBackgroundColor(Color.BLACK).setShadow(24, 8, 8, Color.WHITE) +// +// .append("小图").setBackgroundColor(Color.GREEN) +// .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_TOP) +// .append("顶部").setBackgroundColor(Color.GREEN) +// .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_CENTER) +// .append("居中").setBackgroundColor(Color.GREEN) +// .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_BASELINE) +// .append("底部").setBackgroundColor(Color.GREEN) +// .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_BOTTOM) +// .appendLine("对齐").setBackgroundColor(Color.GREEN) .appendImage(R.drawable.shape_spannable_block_high, SpanUtils.ALIGN_TOP) .append("大图").setBackgroundColor(Color.LTGRAY) diff --git a/config.gradle b/config.gradle index faa30c54b2a4eaa4637ffd079993e42cd52de1ad..5930e5f7ccb07d98949413790d5b780bc4c94ad1 100644 --- a/config.gradle +++ b/config.gradle @@ -6,8 +6,8 @@ ext { compileSdkVersion: 27, minSdkVersion : 14, targetSdkVersion : 27, - versionCode : 1_021_000, - versionName : '1.21.0'// E.g. 1.9.72 => 1,009,072 + versionCode : 1_021_001, + versionName : '1.21.1'// E.g. 1.9.72 => 1,009,072 ] versionConfig = [ diff --git a/update_log.md b/update_log.md index 824e17dc3abe05eb1056f207f8f1991a8a93f501..83a1e07ea7dea8c0583f74f9090a96f41876149d 100644 --- a/update_log.md +++ b/update_log.md @@ -1,3 +1,4 @@ +* `18/10/24` [fix] SpanUtils#appendImage on VIVO. Publish v1.21.1. * `18/10/16` [add] BusUtils, DeviceUtils#isAdbEnabled. Publish v1.21.0. * `18/09/29` [fix] ToastUtils which causes crash in the some devices of Xiaomi. Publish v1.20.4. * `18/09/13` 修复 ToastUtils 在小米手机显示 Toast 带有 App 名,发布 1.20.3 diff --git a/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java b/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java index de7494c788e7d31b83b641299f88f3c2f9fd7c9a..0f2bd25fe08909025620fd0231c3897801aa6e5f 100644 --- a/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java +++ b/utilcode/src/main/java/com/blankj/utilcode/util/SpanUtils.java @@ -130,19 +130,16 @@ public final class SpanUtils { private SpannableStringBuilder mBuilder; - private int mType; + private int mType; private final int mTypeCharSequence = 0; private final int mTypeImage = 1; private final int mTypeSpace = 2; - private CharSequence fontSizeTagCS = "[SpanUtils]"; - - public SpanUtils() { mBuilder = new SpannableStringBuilder(); mText = ""; + mType = -1; setDefault(); - append(fontSizeTagCS); } private void setDefault() { @@ -181,17 +178,6 @@ public final class SpanUtils { spaceSize = -1; } - /** - * The character used to get the font size (span start with image) - * - * @param fontSizeTagCS The character - * @return the single {@link SpanUtils} instance - */ - public SpanUtils setFontSizeTagCS(CharSequence fontSizeTagCS) { - this.fontSizeTagCS = fontSizeTagCS; - return this; - } - /** * Set the span of flag. * @@ -765,7 +751,7 @@ public final class SpanUtils { */ public SpannableStringBuilder create() { applyLast(); - return mBuilder.delete(0, fontSizeTagCS.length()); + return mBuilder; } private void applyLast() { @@ -885,6 +871,10 @@ public final class SpanUtils { private void updateImage() { int start = mBuilder.length(); + if (start == 0) { + mBuilder.append(Character.toString((char) 2)); + start = 1; + } mBuilder.append(""); int end = start + 5; if (imageBitmap != null) { diff --git a/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java b/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java index 05c28a73144776e4a45ff169dc5027aad384f34d..a84d1c4d88a39261a636ede5d13a032ab5898e14 100644 --- a/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java +++ b/utilcode/src/test/java/com/blankj/utilcode/util/BaseTest.java @@ -6,10 +6,6 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; - /** *
  *     author: Blankj