105

Android には、テキストと文字列に関連するさまざまなインターフェイス Spanned( 、SpannedStringSpannableSpannableStringおよび) が用意されていますCharSequence

上記のすべてをさまざまなシナリオで使用しましたが、通常は、スタイリングを適用するためにHtml.fromHtml()リンク可能なテキストを 内に表示するために使用しました。TextView

Android の公式ドキュメントからこれらのインターフェイスの目的/使用法を理解しようとしましたが、非常に紛らわしいため失敗しました..これらのインターフェイスの目的は何ですか? どのシナリオでそれらを使用するのが最も一般的ですか? どのような場合に使用を避けるのが最善ですか? それらのいずれかを使用するときに考慮すべき明らかなパフォーマンスへの影響はありますか?

誰かがまともな説明を提供できれば、それは大歓迎です。

4

2 に答える 2

163

これらのインターフェースの目的は何ですか?

yuml.me/edit/5f8da6cb の図 CharSequence一連の文字を表す標準 Java インターフェイスです。Stringは の最も一般的に使用される具体的な実装でありCharSequence、続いてStringBuilder.

SpannedCharSequence、テキストの一部に適用するフォーマットを示す「スパン」を含む です。これらのスパンは変更できません。

SpannableSpanned、スパンを変更する (書式設定を追加または削除する) 機能を追加しますが、テキスト自体を変更することはできません。

SpannedStringSpannedインターフェイスの具体的な実装です。

SpannableStringSpannableインターフェイスの具体的な実装です。

どのシナリオでそれらを使用するのが最も一般的ですか?

1 を返すメソッドがある場合 (たとえば でgetText()) EditText、または 1 をパラメーターとして受け取るメソッドがある場合 (たとえば でsetText()) TextViewyuml.me/edit/35c8f39f の図

引用された使用のケースはHtml.fromHtml()、従来の Android 開発でおそらく最も一般的です。 TextViewwithSpannedは a よりもはるかに軽量ですWebView。ただし、次のような他の使用例があります。

どのような場合に使用を避けるのが最善ですか?

彼らは、ハゲとの戦い、除雪、ヒートポンプの修理、スフレの作成などで非常にひどい.

:-)

それらのいずれかを使用するときに考慮すべき明らかなパフォーマンスへの影響はありますか?

インターフェイスは、定義上、「パフォーマンスへの影響」はありません。インターフェイスは単に API の記述にすぎません。

特定の操作SpannableStringよりも大幅に遅いことは認識していません。SpannedStringただし、SpannableStringBuilder(テキストをフォーマットするスパンに加えてテキストを操作できるようにする)は、さまざまなものよりも少し遅くなる可能性がありSpannableStringますSpannedString。ただし、パフォーマンスの違いが問題になるかどうかは、使用状況によって異なります。

于 2013-07-09T11:41:23.370 に答える