SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
Ajuste de Texto
com Autosizing
TextView - Android
Jetpack
thiengo.com.br
O que é e por que a Autosizing API?
A Autosizing TextView API é um dos componentes de experiência do usuário do pacote Jetpack, alias,
junto ao Android Emoji é uma das APIs mais simples.
Segundo a documentação oficial, a Autosizing veio principalmente com o objetivo de manter o bom
visual do texto do aplicativo quando há mudança de tipo de aparelho: de smartphone para tablet, por
exemplo.
A regra da Autosizing API é:
Expandir ou contrair o texto (tamanho de fonte) o quanto possível sem que haja corte de
conteúdo.
O corte de conteúdo é possível em um caso especifico, quando o tamanho mínimo definido para o
texto faz com que ele ainda seja grande o suficiente para ficar enquadrado por completo no espaço
do TextView.
Thiengo, então a Autosizing API somente é funcional no componente TextView?
Não. Em subclasses também. Um outro componente visual popular é o EditText.
Antes de partirmos aos códigos, ressalto que em meus testes encontrei alguns outros domínios em
que a Autosizing é útil, sem que seja necessária a mudança de aparelho. Exemplo: domínios de
problemas onde o título do conteúdo é importante em destaque, esses domínios também se
beneficiarão da API em estudo.
Instalação da API
Para que seja possível o uso da versão de suporte da Autosizing API, é necessária
a referência, direta ou indireta, a support-v4 26.0 ou a alguma versão superior
dela, isso no Gradle App Level, ou build.gradle (Module: app):
Configuração padrão de Autosizing
Primeiro é importante saber que no TextView (ou em suas subclasses em uso) não é
recomendada a utilização do valor wrap_content em android:layout_height ou em
android:layout_width, isso pois os resultados de enquadramento adequado ficam inconsistentes.
Assim, veja o layout a seguir, note o uso do atributo app:autoSizeTextType no primeiro TextView:
O namespace app: está sendo utilizado, pois junto a API de suporte essa é a
configuração correta.
Sem a API de suporte, a parti do Android 8, utilizaríamos android:. Os valores
possíveis em autoSizeTextType são: uniform (ativação do autosizing); e none (não
ativação).
Executando o projeto Android com o código de layout anterior, temos:
Também é possível o acionamento do AutoSizeTextType via código dinâmico,
Kotlin ou Java:
Trabalhando a granularidade
A granularidade é a definição do:
- tamanho mínimo - autoSizeMinTextSize;
- tamanho máximo - autoSizeMaxTextSize;
- e valor de mudança do tamanho atual para o próximo tamanho -
autoSizeStepGranularity.
Entre os tamanhos mínimo e máximo definidos há inúmeros outros tamanhos
possíveis de acordo com o valor colocado para grau de mudança, ou step de
granularidade.
Utilizando o primeiro TextView do layout da seção anterior, junto aos atributos de
granularidade, temos:
Note que para ter efeito de autosizing o autoSizeTextType="uniform" ainda precisa ser
definido. Executando o projeto com a nova configuração no primeiro TextView, temos:
Na configuração atual tem que:
- O tamanho mínimo possível em contração é de 14sp;
- O tamanho máximo possível em expansão é de 20sp;
- Devido ao step de 2sp os tamanhos intermediários possíveis são 16sp e 18sp.
A definição em código dinâmico seria:
A granularidade padrão, quando não definida de maneira explícita, é:
- Tamanho mínimo = 12sp;
- Tamanho máximo = 112sp;
- Step = 1px (é isso mesmo, 1 pixel).
Tamanhos pré-definidos
É possível, com um array e o atributo autoSizePresetSizes definirmos os valores
cabíveis na expansão ou contração do texto. O local comum para conter esses valores
é o /res/values/arrays.xml:
E então, utilizando o primeiro TextView do layout de testes, temos:
Note que como acontece com a definição de granularidade, com PresetSizes
também temos de utilizar autoSizeTextType=“uniform".
Executando o projeto com a nova configuração do TextView, temos:
A definição de PresetSizes em código dinâmico pede primeiro que tenhamos um
array de inteiros (sem o sufixo sp):
Depois o código:
Aqui foi preferível colocar os inteiros em um XML de array, mas você pode defini-lo
também em seu código dinâmico.
Conclusão
Felizmente a Autosizing é uma API simples de entender e de utilizar, com ela,
mesmo que somente em domínios de problemas específicos, não necessitamos
mais de apoio de APIs de terceiro para o correto enquadramento do texto.
A Autosizing API faz parte do pacote de APIs e frameworks Android Jetpack,
pacote que contém todas as tecnologias consideradas, pelo Android, modernas
para o desenvolvimento eficiente de aplicativos.
Se você trabalha com títulos em destaque, títulos de itens e produtos, por
exemplo, pode ser que a Autosizing TextView seja um bom caminho para melhorar
o seu app Android.
Um ponto importante a ser abordado é que as definições de estilo e de família de
fonte personalizada no componente visual de texto, essas definições não
removem a funcionalidade de Autosizing, algo que ocorria logo no lançamento da
API.
Fontes
Conteúdo completo, em texto e em vídeo, no link a seguir:
• Ajuste de Texto com Autosizing TextView - Android Jetpack.
Fontes:
• Autosizing TextViews;
• Android Jetpack: Autosizing TextView;
• Auto-Sizing TextViews in Android;
• Autosizing of TextView doesn't work (Android O) - Resposta de Sira Lam.
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.
Ajuste de Texto com Autosizing
TextView - Android Jetpack
thiengo.com.br
Vinícius Thiengo
thiengocalopsita@gmail.com

Más contenido relacionado

La actualidad más candente

Leitor de Códigos no Android com Barcode Scanner API - ZXing
Leitor de Códigos no Android com Barcode Scanner API - ZXingLeitor de Códigos no Android com Barcode Scanner API - ZXing
Leitor de Códigos no Android com Barcode Scanner API - ZXingVinícius Thiengo
 
PhotoView Android Para a Completa Implementação de Zoom
PhotoView Android Para a Completa Implementação de ZoomPhotoView Android Para a Completa Implementação de Zoom
PhotoView Android Para a Completa Implementação de ZoomVinícius Thiengo
 
ViewModel Android, Como Utilizar Este Componente de Arquitetura
ViewModel Android, Como Utilizar Este Componente de ArquiteturaViewModel Android, Como Utilizar Este Componente de Arquitetura
ViewModel Android, Como Utilizar Este Componente de ArquiteturaVinícius Thiengo
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogVinícius Thiengo
 
Chips Android, Quando e Como Utilizar
Chips Android, Quando e Como UtilizarChips Android, Quando e Como Utilizar
Chips Android, Quando e Como UtilizarVinícius Thiengo
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIVinícius Thiengo
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogVinícius Thiengo
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidVinícius Thiengo
 
Trabalhando Análise Qualitativa em seu Aplicativo Android
Trabalhando Análise Qualitativa em seu Aplicativo AndroidTrabalhando Análise Qualitativa em seu Aplicativo Android
Trabalhando Análise Qualitativa em seu Aplicativo AndroidVinícius Thiengo
 
BottomNavigationView Android, Como e Quando Utilizar
BottomNavigationView Android, Como e Quando UtilizarBottomNavigationView Android, Como e Quando Utilizar
BottomNavigationView Android, Como e Quando UtilizarVinícius Thiengo
 
True Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no AndroidTrue Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no AndroidVinícius Thiengo
 
Fontes em XML, Android O. Configuração e Uso
Fontes em XML, Android O. Configuração e UsoFontes em XML, Android O. Configuração e Uso
Fontes em XML, Android O. Configuração e UsoVinícius Thiengo
 
Android: Avaliação do Pré-projeto Agenda Cultural
Android: Avaliação do Pré-projeto Agenda CulturalAndroid: Avaliação do Pré-projeto Agenda Cultural
Android: Avaliação do Pré-projeto Agenda CulturalVinícius Thiengo
 
Android: Qual Tecnologia de Desenvolvimento Utilizar?
Android: Qual Tecnologia de Desenvolvimento Utilizar?Android: Qual Tecnologia de Desenvolvimento Utilizar?
Android: Qual Tecnologia de Desenvolvimento Utilizar?Vinícius Thiengo
 
Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com JavajesuinoPower
 
Java Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOJava Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOdanielfc
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveJulian Cesar
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - BásicoHugoDalevedove
 

La actualidad más candente (20)

Leitor de Códigos no Android com Barcode Scanner API - ZXing
Leitor de Códigos no Android com Barcode Scanner API - ZXingLeitor de Códigos no Android com Barcode Scanner API - ZXing
Leitor de Códigos no Android com Barcode Scanner API - ZXing
 
PhotoView Android Para a Completa Implementação de Zoom
PhotoView Android Para a Completa Implementação de ZoomPhotoView Android Para a Completa Implementação de Zoom
PhotoView Android Para a Completa Implementação de Zoom
 
ViewModel Android, Como Utilizar Este Componente de Arquitetura
ViewModel Android, Como Utilizar Este Componente de ArquiteturaViewModel Android, Como Utilizar Este Componente de Arquitetura
ViewModel Android, Como Utilizar Este Componente de Arquitetura
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do Blog
 
Chips Android, Quando e Como Utilizar
Chips Android, Quando e Como UtilizarChips Android, Quando e Como Utilizar
Chips Android, Quando e Como Utilizar
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State API
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do Blog
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI Android
 
Trabalhando Análise Qualitativa em seu Aplicativo Android
Trabalhando Análise Qualitativa em seu Aplicativo AndroidTrabalhando Análise Qualitativa em seu Aplicativo Android
Trabalhando Análise Qualitativa em seu Aplicativo Android
 
BottomNavigationView Android, Como e Quando Utilizar
BottomNavigationView Android, Como e Quando UtilizarBottomNavigationView Android, Como e Quando Utilizar
BottomNavigationView Android, Como e Quando Utilizar
 
Android Studio
Android StudioAndroid Studio
Android Studio
 
True Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no AndroidTrue Time API Para Data e Horário NTP no Android
True Time API Para Data e Horário NTP no Android
 
Fontes em XML, Android O. Configuração e Uso
Fontes em XML, Android O. Configuração e UsoFontes em XML, Android O. Configuração e Uso
Fontes em XML, Android O. Configuração e Uso
 
Android: Avaliação do Pré-projeto Agenda Cultural
Android: Avaliação do Pré-projeto Agenda CulturalAndroid: Avaliação do Pré-projeto Agenda Cultural
Android: Avaliação do Pré-projeto Agenda Cultural
 
Android: Qual Tecnologia de Desenvolvimento Utilizar?
Android: Qual Tecnologia de Desenvolvimento Utilizar?Android: Qual Tecnologia de Desenvolvimento Utilizar?
Android: Qual Tecnologia de Desenvolvimento Utilizar?
 
Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com Java
 
Java Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOJava Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãO
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle Behave
 
Iniciando com realm
Iniciando com realmIniciando com realm
Iniciando com realm
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 

Similar a Ajuste de Texto com Autosizing TextView - Android Jetpack

VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...Dextra Sistemas / Etec Itu
 
Programando Android - Aula 3
Programando Android - Aula 3Programando Android - Aula 3
Programando Android - Aula 3Kalil Maciel
 
CORE WEB VITALS E WORDPRESS
CORE WEB VITALS E WORDPRESSCORE WEB VITALS E WORDPRESS
CORE WEB VITALS E WORDPRESSDaniel Paz
 
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel  - Core web vitals e WordPressWordCamp Floripa 2021 - Daniel  - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPressWordCamp Floripa
 
#DeveloperDay - Front-end API html5
#DeveloperDay - Front-end API html5#DeveloperDay - Front-end API html5
#DeveloperDay - Front-end API html5Leandro Santos
 
Como criar interfaces gráficas com android
Como criar interfaces gráficas com androidComo criar interfaces gráficas com android
Como criar interfaces gráficas com androidRicardo Ogliari
 
Utilizando Intenções Para Mapas de Alta Qualidade no Android
Utilizando Intenções Para Mapas de Alta Qualidade no AndroidUtilizando Intenções Para Mapas de Alta Qualidade no Android
Utilizando Intenções Para Mapas de Alta Qualidade no AndroidVinícius Thiengo
 
Visual basic apostila up vb6 para vbnet
Visual basic   apostila up vb6 para vbnetVisual basic   apostila up vb6 para vbnet
Visual basic apostila up vb6 para vbnetrobinhoct
 
Parse Push Notification - O Lado negro da força
Parse Push Notification - O Lado negro da forçaParse Push Notification - O Lado negro da força
Parse Push Notification - O Lado negro da forçaRudson Lima
 
Apresentação blogs
Apresentação blogsApresentação blogs
Apresentação blogsluizaselis
 
The Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressThe Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressJackson F. de A. Mafra
 
Infraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleInfraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleClaudemir de Almeida Rosa
 
Avaliação - Local Web - CMGuimarães
Avaliação - Local Web - CMGuimarãesAvaliação - Local Web - CMGuimarães
Avaliação - Local Web - CMGuimarãesJoao Costa
 
Traduções no WordPress
Traduções no WordPressTraduções no WordPress
Traduções no WordPressBreno Alves
 
1503 - Revista - Angular.pdf
1503 - Revista - Angular.pdf1503 - Revista - Angular.pdf
1503 - Revista - Angular.pdfjoaoJunior93
 
Principais componentes para o desenvolvimento de aplicação android
Principais componentes para o desenvolvimento de aplicação androidPrincipais componentes para o desenvolvimento de aplicação android
Principais componentes para o desenvolvimento de aplicação androidcunhagronomia
 

Similar a Ajuste de Texto com Autosizing TextView - Android Jetpack (20)

VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Programando Android - Aula 3
Programando Android - Aula 3Programando Android - Aula 3
Programando Android - Aula 3
 
CORE WEB VITALS E WORDPRESS
CORE WEB VITALS E WORDPRESSCORE WEB VITALS E WORDPRESS
CORE WEB VITALS E WORDPRESS
 
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel  - Core web vitals e WordPressWordCamp Floripa 2021 - Daniel  - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
 
#DeveloperDay - Front-end API html5
#DeveloperDay - Front-end API html5#DeveloperDay - Front-end API html5
#DeveloperDay - Front-end API html5
 
Apostila Android
Apostila AndroidApostila Android
Apostila Android
 
Html capitulo 07
Html   capitulo 07Html   capitulo 07
Html capitulo 07
 
Programação asp
Programação aspProgramação asp
Programação asp
 
Como criar interfaces gráficas com android
Como criar interfaces gráficas com androidComo criar interfaces gráficas com android
Como criar interfaces gráficas com android
 
Utilizando Intenções Para Mapas de Alta Qualidade no Android
Utilizando Intenções Para Mapas de Alta Qualidade no AndroidUtilizando Intenções Para Mapas de Alta Qualidade no Android
Utilizando Intenções Para Mapas de Alta Qualidade no Android
 
Visual basic apostila up vb6 para vbnet
Visual basic   apostila up vb6 para vbnetVisual basic   apostila up vb6 para vbnet
Visual basic apostila up vb6 para vbnet
 
Parse Push Notification - O Lado negro da força
Parse Push Notification - O Lado negro da forçaParse Push Notification - O Lado negro da força
Parse Push Notification - O Lado negro da força
 
Apresentação blogs
Apresentação blogsApresentação blogs
Apresentação blogs
 
The Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPressThe Ultimate Guide to Development in WordPress
The Ultimate Guide to Development in WordPress
 
Infraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift AnsibleInfraestrutura como código Terraform aws openshift Ansible
Infraestrutura como código Terraform aws openshift Ansible
 
Avaliação - Local Web - CMGuimarães
Avaliação - Local Web - CMGuimarãesAvaliação - Local Web - CMGuimarães
Avaliação - Local Web - CMGuimarães
 
Traduções no WordPress
Traduções no WordPressTraduções no WordPress
Traduções no WordPress
 
1503 - Revista - Angular.pdf
1503 - Revista - Angular.pdf1503 - Revista - Angular.pdf
1503 - Revista - Angular.pdf
 
Principais componentes para o desenvolvimento de aplicação android
Principais componentes para o desenvolvimento de aplicação androidPrincipais componentes para o desenvolvimento de aplicação android
Principais componentes para o desenvolvimento de aplicação android
 

Último

Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUAO PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUAJulianeMelo17
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxLeonardoGabriel65
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasSocorro Machado
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxReinaldoMuller1
 
Aula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.pptAula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.pptPedro Luis Moraes
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAssuser2ad38b
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPaulaYaraDaasPedro
 

Último (20)

Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUAO PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
Aula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.pptAula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.ppt
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 

Ajuste de Texto com Autosizing TextView - Android Jetpack

  • 1. Ajuste de Texto com Autosizing TextView - Android Jetpack thiengo.com.br
  • 2. O que é e por que a Autosizing API? A Autosizing TextView API é um dos componentes de experiência do usuário do pacote Jetpack, alias, junto ao Android Emoji é uma das APIs mais simples. Segundo a documentação oficial, a Autosizing veio principalmente com o objetivo de manter o bom visual do texto do aplicativo quando há mudança de tipo de aparelho: de smartphone para tablet, por exemplo. A regra da Autosizing API é: Expandir ou contrair o texto (tamanho de fonte) o quanto possível sem que haja corte de conteúdo. O corte de conteúdo é possível em um caso especifico, quando o tamanho mínimo definido para o texto faz com que ele ainda seja grande o suficiente para ficar enquadrado por completo no espaço do TextView. Thiengo, então a Autosizing API somente é funcional no componente TextView? Não. Em subclasses também. Um outro componente visual popular é o EditText. Antes de partirmos aos códigos, ressalto que em meus testes encontrei alguns outros domínios em que a Autosizing é útil, sem que seja necessária a mudança de aparelho. Exemplo: domínios de problemas onde o título do conteúdo é importante em destaque, esses domínios também se beneficiarão da API em estudo.
  • 3. Instalação da API Para que seja possível o uso da versão de suporte da Autosizing API, é necessária a referência, direta ou indireta, a support-v4 26.0 ou a alguma versão superior dela, isso no Gradle App Level, ou build.gradle (Module: app):
  • 4. Configuração padrão de Autosizing Primeiro é importante saber que no TextView (ou em suas subclasses em uso) não é recomendada a utilização do valor wrap_content em android:layout_height ou em android:layout_width, isso pois os resultados de enquadramento adequado ficam inconsistentes. Assim, veja o layout a seguir, note o uso do atributo app:autoSizeTextType no primeiro TextView:
  • 5. O namespace app: está sendo utilizado, pois junto a API de suporte essa é a configuração correta. Sem a API de suporte, a parti do Android 8, utilizaríamos android:. Os valores possíveis em autoSizeTextType são: uniform (ativação do autosizing); e none (não ativação). Executando o projeto Android com o código de layout anterior, temos:
  • 6. Também é possível o acionamento do AutoSizeTextType via código dinâmico, Kotlin ou Java:
  • 7. Trabalhando a granularidade A granularidade é a definição do: - tamanho mínimo - autoSizeMinTextSize; - tamanho máximo - autoSizeMaxTextSize; - e valor de mudança do tamanho atual para o próximo tamanho - autoSizeStepGranularity. Entre os tamanhos mínimo e máximo definidos há inúmeros outros tamanhos possíveis de acordo com o valor colocado para grau de mudança, ou step de granularidade.
  • 8. Utilizando o primeiro TextView do layout da seção anterior, junto aos atributos de granularidade, temos:
  • 9. Note que para ter efeito de autosizing o autoSizeTextType="uniform" ainda precisa ser definido. Executando o projeto com a nova configuração no primeiro TextView, temos:
  • 10. Na configuração atual tem que: - O tamanho mínimo possível em contração é de 14sp; - O tamanho máximo possível em expansão é de 20sp; - Devido ao step de 2sp os tamanhos intermediários possíveis são 16sp e 18sp. A definição em código dinâmico seria: A granularidade padrão, quando não definida de maneira explícita, é: - Tamanho mínimo = 12sp; - Tamanho máximo = 112sp; - Step = 1px (é isso mesmo, 1 pixel).
  • 11. Tamanhos pré-definidos É possível, com um array e o atributo autoSizePresetSizes definirmos os valores cabíveis na expansão ou contração do texto. O local comum para conter esses valores é o /res/values/arrays.xml: E então, utilizando o primeiro TextView do layout de testes, temos:
  • 12. Note que como acontece com a definição de granularidade, com PresetSizes também temos de utilizar autoSizeTextType=“uniform". Executando o projeto com a nova configuração do TextView, temos:
  • 13. A definição de PresetSizes em código dinâmico pede primeiro que tenhamos um array de inteiros (sem o sufixo sp): Depois o código: Aqui foi preferível colocar os inteiros em um XML de array, mas você pode defini-lo também em seu código dinâmico.
  • 14. Conclusão Felizmente a Autosizing é uma API simples de entender e de utilizar, com ela, mesmo que somente em domínios de problemas específicos, não necessitamos mais de apoio de APIs de terceiro para o correto enquadramento do texto. A Autosizing API faz parte do pacote de APIs e frameworks Android Jetpack, pacote que contém todas as tecnologias consideradas, pelo Android, modernas para o desenvolvimento eficiente de aplicativos. Se você trabalha com títulos em destaque, títulos de itens e produtos, por exemplo, pode ser que a Autosizing TextView seja um bom caminho para melhorar o seu app Android. Um ponto importante a ser abordado é que as definições de estilo e de família de fonte personalizada no componente visual de texto, essas definições não removem a funcionalidade de Autosizing, algo que ocorria logo no lançamento da API.
  • 15. Fontes Conteúdo completo, em texto e em vídeo, no link a seguir: • Ajuste de Texto com Autosizing TextView - Android Jetpack. Fontes: • Autosizing TextViews; • Android Jetpack: Autosizing TextView; • Auto-Sizing TextViews in Android; • Autosizing of TextView doesn't work (Android O) - Resposta de Sira Lam.
  • 16. 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.
  • 17. Ajuste de Texto com Autosizing TextView - Android Jetpack thiengo.com.br Vinícius Thiengo thiengocalopsita@gmail.com