O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Annotation Span Para Estilização de Texto no Android

1.991 visualizações

Publicada em

➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/annotation-span-para-estilizacao-de-texto-no-android

Neste conjunto de slides nós vamos, passo a passo, estudar a Annotation Span, API utilizada principalmente em aplicativos que atendem a mais de um idioma e têm estilos complexos em Strings estáticas.

➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br

Abraço.


▶ Treinamento oficial:

➙ Prototipagem Profissional de Aplicativos Android: 
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/persist_locale&locale=pt_BR


▶ Livros oficiais: 

➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia: 
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android

➙ Receitas Para Desenvolvedores Android: 
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android 

➙ Refatorando Para Programas Limpos: 
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos 


▶ Redes: 

➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita 
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/ 
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops 
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita 


▶ Blog App: 

➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR

Publicada em: Educação
  • Entre para ver os comentários

  • Seja a primeira pessoa a gostar disto

Annotation Span Para Estilização de Texto no Android

  1. 1. Annotation Span Para Estilização de Texto no Android thiengo.com.br
  2. 2. Por que utilizar Annotation se podemos utilizar tags HTML? Excelente pergunta. Realmente podemos utilizar HTML, mas há limitações, pois não são todas as tags HTML que são interpretadas quando as utilizando em arquivos de String, arquivos XML que serão necessários principalmente na internacionalização do aplicativo Android. As Annotation Span entram em cena quando uma estilização em texto estático é necessária e as tags HTML suportadas não dão conta de fornecer o estilo apropriado. Mas eu poderia trabalhar diretamente com SpannableString, certo? Sim, você poderia. O problema, mesmo quando não há necessidade de mais de um arquivo de Strings, é que será necessário o conhecimento dos posicionamentos dos trechos de textos que precisam ser estilizados, algo dispensável quando utilizando Annotation Span, pois os posicionamentos são obtidos em tempo de execução por métodos fornecidos pela API. Essa necessidade de conhecimento dos posicionamentos se torna algo crítico quando mais de um arquivo de Strings passa a ser necessário ou quando o único arquivo de Strings precisa passar por atualização de texto, as posições utilizadas em código como "hard-coded" deverão ser atualizadas, algo que atrapalha a evolução de qualquer projeto de software.
  3. 3. Tags HTML suportadas em código estático Para que você não queira sempre utilizar a Annotation Span, até porque o código dela e menos simples do que quando utilizando tags HTML, a seguir deixo todas as tags HTML de estilo suportadas em arquivos Android de Strings: • <b> para negrito; • <i> para itálico; • <big> para um texto 25% maior do que o tamanho aplicado ao conjunto; • <small> para um texto 20% menor do que o tamanho aplicado ao conjunto; • <font> para um texto com cor distinta (em hexadecimal e utilizando o atributo color) ou com uma família de fontes distinta (utilizando o atributo face com algum dos possíveis valores: serif, sans_serif e monospace); • <tt> para um texto em monospace; • <strike> para um texto com uma linha no meio; • <u> para um texto sublinhado; • <sup> para um texto em linha superior; • <sub> para um texto em linha inferior. Se você for estudar também os links de fontes que coloquei neste conjunto de slides (e no artigo destes slides), notará que em um deles, mais precisamente o artigo da Florina Muntenescu, do Google Android Developers, há ainda mais tags HTML de estilo que são suportadas, digo, que é informado que são suportadas. Mas quando testando em código, para tags de estilo, somente as que citei anteriormente é que funcionam.
  4. 4. Tags HTML de estilo em execução A seguir um código XML, strings.xml, com algumas configurações de tag HTML de estilo em uso:
  5. 5. Note que <![CDATA[...]]> é utilizado para escapar os símbolos de tag <>. Executando o aplicativo Android com o código anterior, aplicando cada String a um TextView, temos:
  6. 6. Annotation Span Uma tag Annotation é formada por: <annotation key="value">. É isso mesmo, o conhecido key="value". Você pode utilizar o rótulo que quiser para a key (chave), mas seguindo as restrições de nome que temos para variáveis em código dinâmico: nada de espaços em branco ou acentuação. Para value (valor), qualquer valor pode ser utilizado, mas esse sempre será tratado em código como String.
  7. 7. Arquivos com annotation A seguir temos um arquivo de Strings, /res/values/strings.xml, que representa o idioma padrão do aparelho de testes, aqui um device em português do Brasil:
  8. 8. Então o arquivo de Strings, /res/values-en/strings.xml, que representa o idioma inglês para aparelhos tendo está língua como padrão: Note que não há problemas em utilizar ao mesmo tempo tags HTML de estilo e tags <annotation>. A definição key="value" para o exemplo é: fontFamily="nome da família de fonte". Como estaremos utilizando uma família de fonte não padrão, a melhor escolha foi o uso de Annotation Span (a tag <annotation> é uma Span - abreviação de Spanned). Em resumo: uma Span permite a aplicação de estilos em String.
  9. 9. Aplicando estilos de acordo com as annotation tags Agora é preciso, em código dinâmico, identificar as annotations e então aplicar os estilos corretos. É importante assumir que temos duas fontes extras em /res/font. São elas: • cinzel.ttf; • e fredoka_one.ttf. Para saber mais sobre fonts in XML no Android, acesse Fontes em XML, Android O. Configuração e Uso. Assim o código que aplica os estilos, famílias de fontes (leia todos os comentários):
  10. 10. Note como os text.getSpanStart( annotation ) e text.getSpanEnd( annotation ) permitem que nós desenvolvedores não tenhamos de gravar em código os posicionamentos dos textos que terão de ser estilizados. Este é um grande ganho em relação a utilizar diretamente, e somente, objetos Spanned em código dinâmico. Você deve estar se perguntando sobre a classe CustomTypefaceSpan, certo? Essa é uma classe hackcode criada para ser possível a definição de família de fonte em uma String Spanned, segue o boilerplate code dela:
  11. 11. Está classe também esta presente no artigo de fonts in XML indicado anteriormente. Executando o projeto, primeiro com o aparelho no idioma configurado em português e depois modificando o idioma para inglês, temos:
  12. 12. Conteúdos importantes Para tirar o máximo do conteúdo sobre Annotation Span, fortemente recomendo que ao final do estudo deste conjunto de slides você estude também os artigos dos links a seguir, todos sobre famílias de fontes e estilização de Strings no Android: • Como Utilizar Spannable no Android Para Customizar Strings; • Fontes em XML, Android O. Configuração e Uso; • Definindo Fontes em Trechos Não Triviais do Android.
  13. 13. Ponto negativo • Tags <annotation> têm a limitação de aceitarem somente um par key="value". Poderia aceitar mais, evitando o uso de mais de uma <annotation> para um mesmo trecho de texto estático, por exemplo.
  14. 14. Ponto positivo • Ganho considerável, em código dinâmico, pela não necessidade de conhecimento prévio das posições dos trechos de textos que devem ser estilizados.
  15. 15. Considerações finais Quando há a necessidade de trabalho com Spanned String em texto estático, mesmo que ainda não havendo necessidade de mais de um idioma em projeto Android, o uso de tags <annotation> trará maior eficiência principalmente na atualização de código, de textos em strings.xml. Isso, pois o conhecimento prévio do posicionamento dos textos que têm de receber estilos complexos não será necessário, as APIs de Annotation permitem o fácil acesso às posições.
  16. 16. Fontes Conteúdo completo, em texto e em vídeo, no link a seguir: • Annotation Span para Estilização de Texto no Android. Fontes: • Styling internationalized text in Android; • AnnotationSpans – Part 1; • Language and locale resolution overview; • Get font resource from TypedArray before API 26 - Resposta de Tom; • Display Back Arrow on Toolbar - Resposta de MrEngineer13 e de Brais Gabin; • Set drawable for DividerItemDecoration; • Reference one string from another string in strings.xml? - Resposta de Beeing Jk e de Joseph Garrone.
  17. 17. Para estudo • Treinamento oficial: • Prototipagem Profissional de Aplicativos Android. • Meus livros: • Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia; • Receitas Para Desenvolvedores Android; • Refatorando Para Programas Limpos. • Redes: • Udemy; • YouTube; • Facebook; • LinkedIn; • GitHub; • Twitter; • Google Plus. • Blog App.
  18. 18. Annotation Span Para Estilização de Texto no Android thiengo.com.br Vinícius Thiengo thiengocalopsita@gmail.com

×