Your SlideShare is downloading. ×
0
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Rich Text Editing and Beyond
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Rich Text Editing and Beyond

1,805

Published on

From the AnDevCon III conference

From the AnDevCon III conference

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,805
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
33
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Rich TextEditing... And Beyond Copyright © 2012CommonsWare, LLC
  • 2. Whadaya Mean, Rich?● Things Like Bold, Italics, Underline, Etc.● Other Terms – Styled Text – Formatted Text – WYSIWYG Copyright © 2012CommonsWare, LLC
  • 3. Is Android Rich?● Native Rich Text Rendering in TextView – Available to all subclasses of TextView (e.g., Button) – Reasonable (but not immense) range of available styles to apply ● Differing fonts, colors ● Vertical & horizontal alignments ● Bullets ● Etc. Copyright © 2012CommonsWare, LLC
  • 4. Where Did All the Strings Go?● CharSequence – In traditional Java, an inheritance artifact ● Mostly the superclass of StringBuilder – In Android, used as basis for rich text ● Hence, lots of CharSequence parameters and return values, in places where Android supports rich text Copyright © 2012CommonsWare, LLC
  • 5. Spanning the Globe● Spanned – Interface for CharSequences with inline formatting● Spannable – Sub-interface where the spans can be modified● Editable – Sub-sub-interface where the text can be modified Copyright © 2012CommonsWare, LLC
  • 6. Getting More Concrete● SpannedString – String with markup● SpannableString – String with mutable markup● SpannableStringBuilder – String with mutable text and markup Copyright © 2012CommonsWare, LLC
  • 7. We Are Stylin● CharacterStyle – Base class for all styles that can be applied to a portion of a Spanned – 21 total subclasses, each applying some effect ● BackgroundColorSpan ● StyleSpan ● TypefaceSpan ● StrikethroughSpan Copyright © 2012CommonsWare, LLC
  • 8. Our Resources Are Low● String Resources – Can have inline markup (<b>, <i>, <u>) – Retrieving the SpannedString ● getText() (as opposed to getString()) ● Applying the resource directly to a widget in a layout via @string/... Copyright © 2012CommonsWare, LLC
  • 9. Oh, Those Angle Brackets● HTML – Use Html.fromHtml() to convert into SpannedString ● Modest, undocumented set of tags supported ● Optional, largely undocumented TagHandler for trying to add support for other tags – Put the resulting SpannedString in a TextView (or subclass) Copyright © 2012CommonsWare, LLC
  • 10. Tag! Youre It?● <a href="..."> ● <h4>● <b> ● <h5>● <big> ● <h6>● <blockquote> ● <i>● <br> ● <img src="...">● <cite> ● <p>● <dfn> ● <small>● <div align="..."> ● <strike>● <em> ● <strong>● <font size="..." color="..." face="..."> ● <sub>● <h1> ● <sup>● <h2> ● <tt>● <h3> Copyright © 2012CommonsWare, LLC ● <u>
  • 11. Mark It Down● Anything You Can Convert to HTML● Example: Markdown – Popular wikitext format – Used by StackOverflow, GitHub, etc. – Various parsers available – Example: AndDown ● Wrapper around sundown C parser Copyright © 2012CommonsWare, LLC
  • 12. Format This, Buddy● Step #1: Get a SpannableString (or subclass)● Step #2: Manipulate the Formatting – setSpan() applies formatting to a particular region – removeSpan() removes a particular span – getSpans() retrieves applied spans for a given region Copyright © 2012CommonsWare, LLC
  • 13. The End of Style● SPAN_EXCLUSIVE_EXCLUSIVE – Anything added at either end is considered outside the span● SPAN_INCLUSIVE_INCLUSIVE – Anything added at either end is considered inside the span● SPAN_EXCLUSIVE_INCLUSIVE● SPAN_INCLUSIVE_EXCLUSIVE Copyright © 2012CommonsWare, LLC
  • 14. CharSequence: Rich Yet Not● Most Utility Methods On String, Not CharSequence – Example: indexOf()● TextUtils – Offers a subset of those utility methods as static methods that can be applied to a CharSequence Copyright © 2012CommonsWare, LLC
  • 15. Hello? Didnt You Say “Editing”?● EditText – Supports Editable ● Reason why you keep calling toString() to get the plain text back – Users Edit Prose in Existing Spans ● You supply something with spans, and user types in the middle of one, gets formatted – No UI for Users to Set Own Spans Copyright © 2012CommonsWare, LLC
  • 16. RichEditText● Open Source Component● Easy: Automatic FORMAT Action Mode – One method to enable – Works on Android 2.1+ (ActionBarSherlock!) – Works great on tablets (and not so hot on phones...)● Harder: Roll Your Own UI – E.g., toolbar Copyright © 2012CommonsWare, LLC
  • 17. RichEditText: Innards● Action Mode Items Set or Toggle “Effects” – Effect = Wrapper Around CharacterStyle ● Awareness of current selection ● Manages idiosyncrasies of different style classes – Toggle Logic ● See whats in the selection now of this particular effect ● Invert current setting Copyright © 2012CommonsWare, LLC
  • 18. RichEditText: The Future!● Better Support for Phones – ...somehow...● Full Range of CharacterStyle Support – Colors (foreground/background) – Line alignment – Bullets – Links● Ragnarök Copyright © 2012CommonsWare, LLC
  • 19. A Little Bit Persistent● SpannableString Not Serializable● Best Native Bet: Convert into HTML – Need to test that the formatting you apply will survive the round-trip conversion● Alternative: DIY – More complete HTML conversion – Convert into something else (byte array? Markdown?) Copyright © 2012CommonsWare, LLC
  • 20. What Would Be Handy...● More In, More Out – Better HTML Conversion – More wikitext support ● Other flavors ● Bi-directional – Word processing formats (ODT, DOC/DOCX) – Legacy formats ● RTF Copyright © 2012CommonsWare, LLC
  • 21. What Would Be Handy...● More CharacterStyles? – Theoretically an extensible system, based on interfaces● More Reusable Editing Widgets – EditStyledText? Copyright © 2012CommonsWare, LLC

×