Precompute text

This commit is contained in:
M66B
2020-02-10 14:16:11 +01:00
parent fea6abfc54
commit f5fd230877
2 changed files with 41 additions and 8 deletions

View File

@@ -103,6 +103,8 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Group;
import androidx.core.content.FileProvider;
import androidx.core.graphics.ColorUtils;
import androidx.core.text.PrecomputedTextCompat;
import androidx.core.widget.TextViewCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
@@ -1810,7 +1812,16 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
s, e, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
}
return builder;
try {
return PrecomputedTextCompat.getTextFuture(
builder,
TextViewCompat.getTextMetricsParams(tvBody),
executor)
.get();
} catch (Throwable ex) {
Log.w(ex);
return builder;
}
}
}
@@ -1828,7 +1839,12 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
boolean has_images = args.getBoolean("has_images");
if (result instanceof Spanned) {
if (result instanceof PrecomputedTextCompat) {
TextViewCompat.setPrecomputedText(tvBody, (PrecomputedTextCompat) result);
tvBody.setTextIsSelectable(false);
tvBody.setTextIsSelectable(true);
tvBody.setMovementMethod(new TouchHandler(message));
} else if (result instanceof Spanned) {
tvBody.setText((Spanned) result);
tvBody.setTextIsSelectable(false);
tvBody.setTextIsSelectable(true);