1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-26 09:44:31 +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.drawable.Drawable;
import android.os.Handler;
import android.text.Html;
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.View;
import android.widget.Button;
@@ -38,9 +41,9 @@ import java.util.Date;
import java.util.Locale;
public abstract class FloatMeasurementView extends MeasurementView {
private static String SYMBOL_UP = "➚";
private static String SYMBOL_NEUTRAL = "➙";
private static String SYMBOL_DOWN = "➘";
private static char SYMBOL_UP = '\u279a';
private static char SYMBOL_NEUTRAL = '\u2799';
private static char SYMBOL_DOWN = '\u2798';
private static float NO_VALUE = -1.0f;
private static float AUTO_VALUE = -2.0f;
@@ -142,7 +145,7 @@ public abstract class FloatMeasurementView extends MeasurementView {
if (previousValue >= 0.0f) {
final float diff = value - previousValue;
String symbol;
char symbol;
if (diff > 0.0) {
symbol = SYMBOL_UP;
@@ -152,10 +155,22 @@ public abstract class FloatMeasurementView extends MeasurementView {
symbol = SYMBOL_NEUTRAL;
}
setNameView(Html.fromHtml(
String.format(
"%s <br> <font color='grey'>%s<small>%s%s</small></font>",
nameText, symbol, formatValue(diff), suffix)));
SpannableStringBuilder text = new SpannableStringBuilder(nameText);
text.append("\n");
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 {
setNameView(nameText);
}
@@ -227,7 +242,7 @@ public abstract class FloatMeasurementView extends MeasurementView {
return "";
}
String symbol;
char symbol;
String color;
final float diff = value - previousValue;