1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-27 10:15:00 +02:00

Use SpannableStringBuilder instead of Html.fromHtml

Constructing the spannable string directly is much faster than using
the Html conversion.
This commit is contained in:
Erik Johansson
2018-01-11 22:32:00 +01:00
parent 8bc625300c
commit 720bc08cb7

View File

@@ -20,8 +20,11 @@ import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Handler; import android.os.Handler;
import android.text.Html;
import android.text.InputType; import android.text.InputType;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
@@ -38,9 +41,9 @@ import java.util.Date;
import java.util.Locale; import java.util.Locale;
public abstract class FloatMeasurementView extends MeasurementView { public abstract class FloatMeasurementView extends MeasurementView {
private static String SYMBOL_UP = "➚"; private static char SYMBOL_UP = '\u279a';
private static String SYMBOL_NEUTRAL = "➙"; private static char SYMBOL_NEUTRAL = '\u2799';
private static String SYMBOL_DOWN = "➘"; private static char SYMBOL_DOWN = '\u2798';
private static float NO_VALUE = -1.0f; private static float NO_VALUE = -1.0f;
private static float AUTO_VALUE = -2.0f; private static float AUTO_VALUE = -2.0f;
@@ -142,7 +145,7 @@ public abstract class FloatMeasurementView extends MeasurementView {
if (previousValue >= 0.0f) { if (previousValue >= 0.0f) {
final float diff = value - previousValue; final float diff = value - previousValue;
String symbol; char symbol;
if (diff > 0.0) { if (diff > 0.0) {
symbol = SYMBOL_UP; symbol = SYMBOL_UP;
@@ -152,10 +155,22 @@ public abstract class FloatMeasurementView extends MeasurementView {
symbol = SYMBOL_NEUTRAL; symbol = SYMBOL_NEUTRAL;
} }
setNameView(Html.fromHtml( SpannableStringBuilder text = new SpannableStringBuilder(nameText);
String.format( text.append("\n");
"%s <br> <font color='grey'>%s<small>%s%s</small></font>",
nameText, symbol, formatValue(diff), suffix))); int start = text.length();
text.append(symbol);
text.setSpan(new ForegroundColorSpan(Color.GRAY), start, text.length(),
Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
start = text.length();
text.append(' ');
text.append(formatValue(diff));
text.append(suffix);
text.setSpan(new RelativeSizeSpan(0.8f), start, text.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
setNameView(text);
} else { } else {
setNameView(nameText); setNameView(nameText);
} }
@@ -227,7 +242,7 @@ public abstract class FloatMeasurementView extends MeasurementView {
return ""; return "";
} }
String symbol; char symbol;
String color; String color;
final float diff = value - previousValue; final float diff = value - previousValue;