SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
IMPLEMENTANDO DARK
THEME NO ANDROID
Ricardo Sousa
Android Developer @ Petlove
@rickaleu
www.github.com/rickaleu
https://medium.com/@ricardo.sousa
O que é?
- É mais uma forma de personalização
no Android. Surgiu parcialmente na
versão 9 e agora chegou 100% na
versão 10. Com um tema escuro,
pode ser totalmente preto ou com
tons mais claros do preto (grafite).
- Lançado no Google I/O 2019
- Pode ser aplicado de forma nativa
(seguindo o tema atual do sistema).
Automatica, seguindo o horário do
dispositivo. Ou até mesmo
"forçada", setando a opção nas
configurações do app.
- Suporte completo apenas a partir do
target-sdk 29 (Android Q)
Como Ativar o Dark Theme ?
Como ativar?
- Toggle de atalhos na barra de notificações
- Configurações do sistema
- Nos aparelhos Pixel, ligando o modo de Economia de Bateria (em outras customizações, pode
ou não ser compatível o mesmo comportamento)
Pixel (Stock) Samsung (One UI) Xiaomi (MIUI 10) Huawei (EMUI 9)
Como ativar?
- Toggle de atalhos na barra de notificações
- Configurações do sistema
- Nos aparelhos Pixel, ligando o modo de Economia de Bateria (em outras customizações, pode ou não ser
compatível o mesmo comportamento)
Pixel (Stock) Samsung (One UI) Xiaomi (MIUI 10) Huawei (EMUI 9)
Outras Versões
- Suporte 100% ao dark theme, a
partir do Android 10 apenas
- Versões anteriores, você pode dar
suporte parcial através da opção
"bateria fraca", vinculando uma
opção nas configurações do seu
aplicativo a esta opção.
Benefícios
- Pode reduzir significativamente o consumo de
energia (dependendo da tecnologia da tela do
dispositivo).
- Melhora a visibilidade para usuários com
baixa visão e aqueles que são sensíveis à luz
brilhante.
- Facilita o uso do dispositivo em um ambiente
com pouca luz.
Como Implementar o Dark
Theme ?
Implementação
- herdar "DayNight" no seu tema para quando o tema escuro estiver ativado
- com support Library
- com material Component
- para forçar sempre o tema escuro, usar "forceDarkAllowed" no seu
AppTheme Light
Personalização
AppCompact
- colorPrimary
- colorAccent
Material Components
- textColorPrimary
- colorControlNorma
- colorSurface
- colorOnSurfacel
Versões Anteriores
Cada uma das opções é mapeada diretamente para um dos modos
AppCompat.DayNight:
- Claro: MODE_NIGHT_NO
- Escuro: MODE_NIGHT_YES
- Definido pela Economia de bateria: MODE_NIGHT_AUTO_BATTERY
- Padrão do sistema: MODE_NIGHT_FOLLOW_SYSTEM
Para alternar o tema, chame AppCompatDelegate.setDefaultNightMode().
Ui Mode
- No Manifest, precisamos adicionar a propriedade configChanges na tag de
atividade no Manifest e ele manipulará as alterações na configuração.
- Em alguns casos, pode ser necessário que um app processe a alteração de
configuração. Por exemplo, é recomendável atrasar uma alteração de
configuração porque um vídeo está sendo mostrado.
- Um app pode processar a implementação do tema escuro declarando que
cada atividade pode processar a alteração de configuração uiMode:
Ui Mode
- Quando uma atividade declara que processa alterações de configuração, o
método onConfigurationChanged() dela será chamado quando houver uma
alteração de tema.
- Para verificar qual é o tema atual, os apps podem executar códigos como
este:
Práticas Recomendadas
Notificações:
- Use os modelos de notificação fornecidos pelo sistema (como
MessagingStyle). Isso significa que o sistema é responsável por garantir que
o estilo de visualização correto seja aplicado.
Widgets e visualizações de notificações personalizadas
- No caso de widgets de tela de início ou de apps com visualizações de
notificações personalizadas, é importante testar o conteúdo em temas claros
e escuros.
Observações
- Temas e estilos precisam evitar cores ou ícones "fixas"
- É preciso usar atributos de tema (de preferência) ou atributos flexíveis para se
adaptarem também ao tema escuro.
- Se você deseja substituir a cor no aplicativo, é necessário criar um diretório de
valores personalizado, chamado e, para recursos de imagem, criaremos
.
- Para componentes IU que você não controla diretamente, é importante garantir que
todas as visualizações usadas reflitam o tema atual do app Dois bons exemplos são
as notificações e os widgets da tela de início.
- Se seu app tiver uma tela inicial personalizada, talvez seja necessário modificá-la
para que reflita o tema selecionado.
- Use o atributo de tema ?android:attr/colorBackground. Os drawables de tema
escuro android:windowBackground só funcionam no Android Q.
Erros Comuns
Alguns erros comuns:
- Supor que a cor do plano de fundo seja
sempre clara
- Fixar cores do texto no código
- Definir uma cor de plano de fundo
codificada ao usar a cor de texto padrão
- Usar um ícone drawable que seja uma cor
estática
Em todos esses casos, use atributos de tema
apropriados em vez de cores codificadas.
Demo
Dúvidas?
Referências
● https://developer.android.com/preview/features/darktheme?hl=pt-br#k
otlin
● https://blog.mindorks.com/implementing-dark-mode-theme-in-android
● https://engineering.q42.nl/android-dark-theme/
● https://www.youtube.com/watch?v=OCHEjeLC_UY
● https://medium.com/over-engineering/setting-up-a-material-componen
ts-theme-for-android-fbf7774da739
● https://github.com/googlearchive/android-DarkTheme
● https://www.youtube.com/watch?v=sNSlDfaNq-0
● https://material.io/design/color/dark-theme.html
Obrigado!
@rickaleu
www.github.com/rickaleu
https://medium.com/@ricardo.sousa

Mais conteúdo relacionado

Destaque

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Implementando Dark Theme no Android

  • 2. Ricardo Sousa Android Developer @ Petlove @rickaleu www.github.com/rickaleu https://medium.com/@ricardo.sousa
  • 3. O que é? - É mais uma forma de personalização no Android. Surgiu parcialmente na versão 9 e agora chegou 100% na versão 10. Com um tema escuro, pode ser totalmente preto ou com tons mais claros do preto (grafite). - Lançado no Google I/O 2019 - Pode ser aplicado de forma nativa (seguindo o tema atual do sistema). Automatica, seguindo o horário do dispositivo. Ou até mesmo "forçada", setando a opção nas configurações do app. - Suporte completo apenas a partir do target-sdk 29 (Android Q)
  • 4. Como Ativar o Dark Theme ?
  • 5. Como ativar? - Toggle de atalhos na barra de notificações - Configurações do sistema - Nos aparelhos Pixel, ligando o modo de Economia de Bateria (em outras customizações, pode ou não ser compatível o mesmo comportamento) Pixel (Stock) Samsung (One UI) Xiaomi (MIUI 10) Huawei (EMUI 9)
  • 6. Como ativar? - Toggle de atalhos na barra de notificações - Configurações do sistema - Nos aparelhos Pixel, ligando o modo de Economia de Bateria (em outras customizações, pode ou não ser compatível o mesmo comportamento) Pixel (Stock) Samsung (One UI) Xiaomi (MIUI 10) Huawei (EMUI 9)
  • 7. Outras Versões - Suporte 100% ao dark theme, a partir do Android 10 apenas - Versões anteriores, você pode dar suporte parcial através da opção "bateria fraca", vinculando uma opção nas configurações do seu aplicativo a esta opção.
  • 8. Benefícios - Pode reduzir significativamente o consumo de energia (dependendo da tecnologia da tela do dispositivo). - Melhora a visibilidade para usuários com baixa visão e aqueles que são sensíveis à luz brilhante. - Facilita o uso do dispositivo em um ambiente com pouca luz.
  • 9. Como Implementar o Dark Theme ?
  • 10. Implementação - herdar "DayNight" no seu tema para quando o tema escuro estiver ativado - com support Library - com material Component - para forçar sempre o tema escuro, usar "forceDarkAllowed" no seu AppTheme Light
  • 11. Personalização AppCompact - colorPrimary - colorAccent Material Components - textColorPrimary - colorControlNorma - colorSurface - colorOnSurfacel
  • 12. Versões Anteriores Cada uma das opções é mapeada diretamente para um dos modos AppCompat.DayNight: - Claro: MODE_NIGHT_NO - Escuro: MODE_NIGHT_YES - Definido pela Economia de bateria: MODE_NIGHT_AUTO_BATTERY - Padrão do sistema: MODE_NIGHT_FOLLOW_SYSTEM Para alternar o tema, chame AppCompatDelegate.setDefaultNightMode().
  • 13. Ui Mode - No Manifest, precisamos adicionar a propriedade configChanges na tag de atividade no Manifest e ele manipulará as alterações na configuração. - Em alguns casos, pode ser necessário que um app processe a alteração de configuração. Por exemplo, é recomendável atrasar uma alteração de configuração porque um vídeo está sendo mostrado. - Um app pode processar a implementação do tema escuro declarando que cada atividade pode processar a alteração de configuração uiMode:
  • 14. Ui Mode - Quando uma atividade declara que processa alterações de configuração, o método onConfigurationChanged() dela será chamado quando houver uma alteração de tema. - Para verificar qual é o tema atual, os apps podem executar códigos como este:
  • 15. Práticas Recomendadas Notificações: - Use os modelos de notificação fornecidos pelo sistema (como MessagingStyle). Isso significa que o sistema é responsável por garantir que o estilo de visualização correto seja aplicado. Widgets e visualizações de notificações personalizadas - No caso de widgets de tela de início ou de apps com visualizações de notificações personalizadas, é importante testar o conteúdo em temas claros e escuros.
  • 16. Observações - Temas e estilos precisam evitar cores ou ícones "fixas" - É preciso usar atributos de tema (de preferência) ou atributos flexíveis para se adaptarem também ao tema escuro. - Se você deseja substituir a cor no aplicativo, é necessário criar um diretório de valores personalizado, chamado e, para recursos de imagem, criaremos . - Para componentes IU que você não controla diretamente, é importante garantir que todas as visualizações usadas reflitam o tema atual do app Dois bons exemplos são as notificações e os widgets da tela de início. - Se seu app tiver uma tela inicial personalizada, talvez seja necessário modificá-la para que reflita o tema selecionado. - Use o atributo de tema ?android:attr/colorBackground. Os drawables de tema escuro android:windowBackground só funcionam no Android Q.
  • 17. Erros Comuns Alguns erros comuns: - Supor que a cor do plano de fundo seja sempre clara - Fixar cores do texto no código - Definir uma cor de plano de fundo codificada ao usar a cor de texto padrão - Usar um ícone drawable que seja uma cor estática Em todos esses casos, use atributos de tema apropriados em vez de cores codificadas.
  • 18. Demo
  • 20. Referências ● https://developer.android.com/preview/features/darktheme?hl=pt-br#k otlin ● https://blog.mindorks.com/implementing-dark-mode-theme-in-android ● https://engineering.q42.nl/android-dark-theme/ ● https://www.youtube.com/watch?v=OCHEjeLC_UY ● https://medium.com/over-engineering/setting-up-a-material-componen ts-theme-for-android-fbf7774da739 ● https://github.com/googlearchive/android-DarkTheme ● https://www.youtube.com/watch?v=sNSlDfaNq-0 ● https://material.io/design/color/dark-theme.html