PrecomputedText
public
class
PrecomputedText
extends Object
implements
Spannable
java.lang.Object | |
↳ | android.text.PrecomputedText |
A text which has the character metrics data.
A text object that contains the character metrics data and can be used to improve the performance
of text layout operations. When a PrecomputedText is created with a given CharSequence
,
it will measure the text metrics during the creation. This PrecomputedText instance can be set on
TextView
or StaticLayout
. Since the text layout information will
be included in this instance, TextView
or StaticLayout
will not
have to recalculate this information.
Note that the PrecomputedText
created from different parameters of the target TextView
will be rejected internally and compute the text layout again with the
current TextView
parameters.
An example usage is:
static void asyncSetText(TextView textView, final String longString, Executor bgExecutor) {
// construct precompute related parameters using the TextView that we will set the text on.
final PrecomputedText.Params params = textView.getTextMetricsParams();
final Reference textViewRef = new WeakReference<>(textView);
bgExecutor.submit(() -> {
TextView textView = textViewRef.get();
if (textView == null) return;
final PrecomputedText precomputedText = PrecomputedText.create(longString, params);
textView.post(() -> {
TextView textView = textViewRef.get();
if (textView == null) return;
textView.setText(precomputedText);
});
});
}
Note that the PrecomputedText
created from different parameters of the target
TextView
will be rejected.
Note that any NoCopySpan
attached to the original text won't be passed to
PrecomputedText.
Summary
Nested classes | |
---|---|
class |
PrecomputedText.Params
The information required for building |
Inherited constants |
---|
Public methods | |
---|---|
char
|
charAt(int index)
Returns the |
static
PrecomputedText
|
create(CharSequence text, PrecomputedText.Params params)
Create a new |
void
|
getBounds(int start, int end, Rect bounds)
Retrieves the text bounding box for the given range. |
void
|
getFontMetricsInt(int start, int end, Paint.FontMetricsInt outMetrics)
Retrieves the text font metrics for the given range. |
int
|
getParagraphCount()
Returns the count of paragraphs. |
int
|
getParagraphEnd(int paraIndex)
Returns the paragraph end offset of the text. |
int
|
getParagraphStart(int paraIndex)
Returns the paragraph start offset of the text. |
PrecomputedText.Params
|
getParams()
Returns the layout parameters used to measure this text. |
int
|
getSpanEnd(Object tag)
Return the end of the range of text to which the specified markup object is attached, or -1 if the object is not attached. |
int
|
getSpanFlags(Object tag)
Return the flags that were specified when |
int
|
getSpanStart(Object tag)
Return the beginning of the range of text to which the specified markup object is attached, or -1 if the object is not attached. |
<T>
T[]
|
getSpans(int start, int end, Class<T> type)
Return an array of the markup objects attached to the specified slice of this CharSequence and whose type is the specified type or a subclass of it. |
float
|
getWidth(int start, int end)
Returns text width for the given range. |
int
|
length()
Returns the length of this character sequence. |
int
|
nextSpanTransition(int start, int limit, Class<T> type)
Return the first offset greater than |
void
|
removeSpan(Object what)
Remove the specified object from the range of text to which it was attached, if any. |
void
|
setSpan(Object what, int start, int end, int flags)
Attach the specified markup object to the range |
CharSequence
|
subSequence(int start, int end)
Returns a |
String
|
toString()
Returns a string representation of the object. |
Inherited methods | |
---|---|
Public methods
charAt
public char charAt (int index)
Returns the char
value at the specified index. An index ranges from zero
to length() - 1
. The first char
value of the sequence is at
index zero, the next at index one, and so on, as for array
indexing.
If the char
value specified by the index is a
surrogate, the surrogate
value is returned.
Parameters | |
---|---|
index |
int : the index of the char value to be returned |
Returns | |
---|---|
char |
the specified char value |
create
public static PrecomputedText create (CharSequence text, PrecomputedText.Params params)
Create a new PrecomputedText
which will pre-compute text measurement and glyph
positioning information.
This can be expensive, so computing this on a background thread before your text will be presented can save work on the UI thread.
Note that anyNoCopySpan
attached to the text won't be passed to the
created PrecomputedText.
Parameters | |
---|---|
text |
CharSequence : the text to be measured
This value cannot be null . |
params |
PrecomputedText.Params : parameters that define how text will be precomputed
This value cannot be null . |
Returns | |
---|---|
PrecomputedText |
A PrecomputedText |
getBounds
public void getBounds (int start, int end, Rect bounds)
Retrieves the text bounding box for the given range.
Both start
and end
offset need to be in the same paragraph, otherwise
IllegalArgumentException will be thrown.
Parameters | |
---|---|
start |
int : the inclusive start offset in the text
Value is 0 or greater |
end |
int : the exclusive end offset in the text
Value is 0 or greater |
bounds |
Rect : the output rectangle
This value cannot be null . |
Throws | |
---|---|
IllegalArgumentException |
if start and end offset are in the different paragraph. |
getFontMetricsInt
public void getFontMetricsInt (int start, int end, Paint.FontMetricsInt outMetrics)
Retrieves the text font metrics for the given range.
Both start
and end
offset need to be in the same paragraph, otherwise
IllegalArgumentException will be thrown.
Parameters | |
---|---|
start |
int : the inclusive start offset in the text
Value is 0 or greater |
end |
int : the exclusive end offset in the text
Value is 0 or greater |
outMetrics |
Paint.FontMetricsInt : the output font metrics
This value cannot be null . |
Throws | |
---|---|
IllegalArgumentException |
if start and end offset are in the different paragraph. |
getParagraphCount
public int getParagraphCount ()
Returns the count of paragraphs.
Returns | |
---|---|
int |
Value is 0 or greater |
getParagraphEnd
public int getParagraphEnd (int paraIndex)
Returns the paragraph end offset of the text.
Parameters | |
---|---|
paraIndex |
int : Value is 0 or greater |
Returns | |
---|---|
int |
Value is 0 or greater |
getParagraphStart
public int getParagraphStart (int paraIndex)
Returns the paragraph start offset of the text.
Parameters | |
---|---|
paraIndex |
int : Value is 0 or greater |
Returns | |
---|---|
int |
Value is 0 or greater |
getParams
public PrecomputedText.Params getParams ()
Returns the layout parameters used to measure this text.
Returns | |
---|---|
PrecomputedText.Params |
This value cannot be null . |
getSpanEnd
public int getSpanEnd (Object tag)
Return the end of the range of text to which the specified markup object is attached, or -1 if the object is not attached.
Parameters | |
---|---|
tag |
Object |
Returns | |
---|---|
int |
getSpanFlags
public int getSpanFlags (Object tag)
Return the flags that were specified when Spannable#setSpan
was
used to attach the specified markup object, or 0 if the specified
object has not been attached.
Parameters | |
---|---|
tag |
Object |
Returns | |
---|---|
int |
getSpanStart
public int getSpanStart (Object tag)
Return the beginning of the range of text to which the specified markup object is attached, or -1 if the object is not attached.
Parameters | |
---|---|
tag |
Object |
Returns | |
---|---|
int |
getSpans
public T[] getSpans (int start, int end, Class<T> type)
Return an array of the markup objects attached to the specified slice of this CharSequence and whose type is the specified type or a subclass of it. Specify Object.class for the type if you want all the objects regardless of type.
Parameters | |
---|---|
start |
int |
end |
int |
type |
Class |
Returns | |
---|---|
T[] |
getWidth
public float getWidth (int start, int end)
Returns text width for the given range.
Both start
and end
offset need to be in the same paragraph, otherwise
IllegalArgumentException will be thrown.
Parameters | |
---|---|
start |
int : the inclusive start offset in the text
Value is 0 or greater |
end |
int : the exclusive end offset in the text
Value is 0 or greater |
Returns | |
---|---|
float |
the text width Value is 0 or greater |
Throws | |
---|---|
IllegalArgumentException |
if start and end offset are in the different paragraph. |
length
public int length ()
Returns the length of this character sequence. The length is the number
of 16-bit char
s in the sequence.
Returns | |
---|---|
int |
the number of char s in this sequence |
nextSpanTransition
public int nextSpanTransition (int start, int limit, Class<T> type)
Return the first offset greater than start
where a markup
object of class type
begins or ends, or limit
if there are no starts or ends greater than start
but less
than limit
. Specify null
or Object.class for
the type if you want every transition regardless of type.
Parameters | |
---|---|
start |
int |
limit |
int |
type |
Class |
Returns | |
---|---|
int |
removeSpan
public void removeSpan (Object what)
Remove the specified object from the range of text to which it was attached, if any. It is OK to remove an object that was never attached in the first place.
Parameters | |
---|---|
what |
Object |
Throws | |
---|---|
IllegalArgumentException |
if MetricAffectingSpan is specified. |
setSpan
public void setSpan (Object what, int start, int end, int flags)
Attach the specified markup object to the range start…end
of the text, or move the object to that range if it was already
attached elsewhere. See Spanned
for an explanation of
what the flags mean. The object can be one that has meaning only
within your application, or it can be one that the text system will
use to affect text display or behavior. Some noteworthy ones are
the subclasses of CharacterStyle
and
ParagraphStyle
, and
TextWatcher
and
SpanWatcher
.
Parameters | |
---|---|
what |
Object |
start |
int |
end |
int |
flags |
int |
Throws | |
---|---|
IllegalArgumentException |
if MetricAffectingSpan is specified. |
subSequence
public CharSequence subSequence (int start, int end)
Returns a CharSequence
that is a subsequence of this sequence.
The subsequence starts with the char
value at the specified index and
ends with the char
value at index end - 1
. The length
(in char
s) of the
returned sequence is end - start
, so if start == end
then an empty sequence is returned.
Parameters | |
---|---|
start |
int : the start index, inclusive |
end |
int : the end index, exclusive |
Returns | |
---|---|
CharSequence |
the specified subsequence |
toString
public String toString ()
Returns a string representation of the object.
Returns | |
---|---|
String |
a string representation of the object. |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-06-18 UTC.