O Android 14 introduz ótimos recursos e APIs para desenvolvedores. As informações a seguir ajudam você a conhecer os recursos disponíveis para os apps e a começar a usar as APIs relacionadas.
Para uma lista detalhada das APIs adicionadas, modificadas e removidas, leia o Relatório de diferenças da API. Para saber mais sobre as APIs adicionadas, acesse a Referência da API do Android. No Android 14, procure as APIs que foram adicionadas no nível 34 da API. Para saber mais sobre as áreas em que as mudanças na plataforma podem afetar seus apps, confira as mudanças de comportamento do Android 14 para apps destinados ao Android 14 e para todos os apps.
Internacionalização
Seleção de idioma por app
O Android 14 expande os recursos de linguagem por app lançados no Android 13 (API de nível 33) com estes recursos extras:
Gerar automaticamente o
localeConfig
de um app: a partir do Android Studio Giraffe Canary 7 e do AGP 8.1.0-alpha07, é possível configurar seu app para oferecer suporte a seleção de idioma por app automaticamente. Com base nos recursos do projeto, o Plug-in do Android para Gradle gera o arquivoLocaleConfig
e adiciona uma referência a ele no arquivo de manifesto final. Assim, não é mais necessário criar ou atualizar o arquivo manualmente. O AGP usa os recursos nas pastasres
dos módulos do app e qualquer dependência de módulos de biblioteca para determinar as localidades que serão incluídas no arquivoLocaleConfig
.Atualizações dinâmicas para o
localeConfig
de um app: use os métodossetOverrideLocaleConfig()
egetOverrideLocaleConfig()
emLocaleManager
para atualizar dinamicamente a lista de idiomas com suporte no app nas configurações do sistema do dispositivo. Use essa flexibilidade para personalizar a lista de idiomas com suporte por região, executar experimentos A/B ou fornecer uma lista atualizada de localidades se o app usar pushes do lado do servidor para localização.Visibilidade do idioma do app para Editores de método de entrada (IMEs): os IMEs podem usar o método
getApplicationLocales()
para conferir o idioma do app atual e associar o idioma do IME a ele.
API Grammatical Inflection
有 30 亿人在使用区分性别的语言,此类语言的语法类别(例如名词、动词、形容词和介词)会根据您交谈所涉及的人或物的性别而变化。传统上,许多区分性别的语言使用阳性语法性别作为默认或通用性别。
以错误的语法性别来称呼用户,例如以阳性语法性别来称呼女性,可能会对她们的表现和态度产生负面影响。相比之下,界面语言如果能正确反映用户的语法性别,就可以提高用户互动度,并提供更个性化、更自然的用户体验。
Para ajudar a criar uma interface focada no usuário para idiomas com flexão de gênero, o Android 14 apresenta a API Grammatical Inflection, que permite adicionar suporte aos gêneros gramaticais sem refatorar o app.
Preferências regionais
As preferências regionais permitem que os usuários personalizem unidades de temperatura, o primeiro dia da semana e sistemas de numeração. Um europeu que mora nos Estados Unidos pode preferir que as unidades de temperatura estejam em Celsius em vez de Fahrenheit e que apps tratem a segunda-feira como o início da semana, em vez do padrão dos EUA de usar o domingo.
Os novos menus de configurações do Android para essas preferências oferecem aos usuários um
local detectável e centralizado para mudar as preferências do app. Essas
preferências também são mantidas com backup e restauração. Várias APIs e
intents (como
getTemperatureUnit
e
getFirstDayOfWeek
)
permitem que o app acesse as preferências do usuário, ajustando a forma como as informações
são exibidas. Também é possível registrar um
BroadcastReceiver
em
ACTION_LOCALE_CHANGED
para processar mudanças de configuração de localidade quando as preferências regionais mudam.
Para encontrar essas configurações, abra o app Configurações e navegue até Sistema > Idiomas e entrada > Preferências regionais.
Acessibilidade
Dimensionamento de fonte não linear para 200%
No Android 14 e versões mais recentes, o sistema oferece suporte ao escalonamento de fontes até 200%, oferecendo aos usuários com baixa visão outras opções de acessibilidade alinhadas às Diretrizes de Acessibilidade para Conteúdo Web (WCAG, na sigla em inglês).
Para evitar que elementos de texto grandes na tela fiquem grandes demais, o sistema aplica uma curva de dimensionamento não linear. Essa estratégia significa que textos grandes não são dimensionados na mesma taxa que os menores. O dimensionamento de fonte não linear ajuda a preservar a hierarquia proporcional entre elementos de tamanhos diferentes, reduzindo problemas com o dimensionamento linear em graus elevados, como cortes de texto ou dificuldade de leitura devido a telas muito grandes.
Testar o app com dimensionamento de fontes não linear
Se você já usa unidades de pixels dimensionados (sp, na sigla em inglês) para definir o dimensionamento do texto, essas outras opções e melhorias de dimensionamento são aplicadas automaticamente ao texto do app. No entanto, ainda é necessário realizar testes de interface com o tamanho máximo da fonte ativado (200%) para garantir que o app aplique os tamanhos de fonte corretamente e possa acomodar fontes maiores sem afetar a usabilidade.
Para ativar o tamanho de fonte de 200%, siga estas etapas:
- Abra o app Configurações e navegue até Acessibilidade > Texto e tamanho de exibição.
- Na opção Tamanho da fonte, toque no ícone de adição (+) até ativar a configuração de tamanho máximo de fonte, conforme mostrado na imagem que acompanha esta seção.
Usar unidades de pixels dimensionados (sp) para tamanhos de texto
Sempre especifique tamanhos de texto em unidades de sp. Quando o app usa unidades de sp, o Android pode aplicar o tamanho de texto preferencial do usuário e escaloná-lo adequadamente.
Não use unidades de sp para preenchimento ou defina as alturas da visualização presumindo que o padding implícito: com o dimensionamento de fonte não linear, as dimensões de sp podem não ser proporcionais. Portanto, 4sp + 20sp podem não ser iguais a 24sp.
Converter unidades de pixels dimensionados
Use TypedValue.applyDimension()
para converter unidades de sp
em pixels, e TypedValue.deriveDimension()
para
converter pixels em sp. Esses métodos aplicam a curva de dimensionamento não linear adequada
automaticamente.
Evite equações fixadas no código usando
Configuration.fontScale
ou
DisplayMetrics.scaledDensity
. Como o dimensionamento da fonte não é
linear, o campo scaledDensity
não é mais preciso. O campo fontScale
precisa ser usado apenas para fins informativos porque as fontes não são mais
escalonadas com um único valor escalar.
Usar unidades sp para lineHeight
Sempre defina android:lineHeight
usando unidades sp em vez
de dp, para que a altura da linha seja dimensionada de acordo com o texto. Caso contrário, se o texto
for sp, mas a lineHeight
estiver em dp ou px, ele não será dimensionado e parecerá apertado.
A TextView corrige automaticamente a lineHeight
para que as proporções
pretendidas sejam preservadas, mas somente se textSize
e lineHeight
forem
definidos em unidades sp.
Câmera e mídia
Ultra HDR para imagens
O Android 14 adiciona suporte a imagens de High Dynamic Range (HDR) que retêm mais informações do sensor ao tirar uma foto, o que permite cores vibrantes e maior contraste. O Android usa o formato Ultra HDR, que é totalmente compatível com versões anteriores de imagens JPEG, permitindo que os apps interajam perfeitamente com imagens HDR, exibindo-as no intervalo dinâmico padrão (SDR, na sigla em inglês) conforme necessário.
A renderização dessas imagens na interface em HDR é feita automaticamente pelo framework
quando o app opta por usar a interface HDR para a janela de atividade, seja por uma
entrada de manifesto ou no momento da execução, chamando
Window.setColorMode()
. Também é possível capturar imagens estáticas Ultra
HDR compactadas em dispositivos compatíveis. Com mais cores recuperadas
do sensor, a edição na pós-produção pode ser mais flexível. O
Gainmap
associado a imagens Ultra HDR pode ser usado para renderizá-las
usando OpenGL ou Vulkan.
Zoom, foco, visualização pós-gravação e muito mais nas extensões da câmera
O Android 14 atualiza e melhora as extensões de câmera, permitindo que os apps processem imagens em tempos mais longos, o que melhora as imagens usando algoritmos de computação intensiva, como a fotografia com pouca luz em dispositivos compatíveis. Esses recursos oferecem aos usuários uma experiência ainda mais robusta ao usar os recursos de extensão da câmera. Confira alguns exemplos dessas melhorias:
- A estimativa de latência de processamento de captura estática dinâmica fornece estimativas de latência de captura estática muito mais precisas com base nas condições atuais da cena e do ambiente. Chame
CameraExtensionSession.getRealtimeStillCaptureLatency()
para receber um objetoStillCaptureLatency
com dois métodos de estimativa de latência. O métodogetCaptureLatency()
retorna a latência estimada entreonCaptureStarted
eonCaptureProcessStarted()
, e o métodogetProcessingLatency()
retorna a latência estimada entreonCaptureProcessStarted()
e o frame processado final que está disponível. - Suporte a callbacks de progresso de captura para que os apps possam mostrar o progresso
atual de operações de processamento de captura de longa duração. É possível verificar
se esse recurso está disponível com
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
. Se estiver, implemente o callbackonCaptureProcessProgressed()
, que tem o progresso (de 0 a 100) transmitido como um parâmetro. Metadados específicos da extensão, como
CaptureRequest.EXTENSION_STRENGTH
para discar a quantidade de um efeito de extensão, como a quantidade de desfoque do plano de fundo comEXTENSION_BOKEH
.Recurso de visualização pós-captura para captura de fotos em extensões de câmera, que fornece uma imagem menos processada mais rapidamente do que a imagem final. Se uma extensão aumentar a latência de processamento, uma imagem pós-visualização poderá ser fornecida como um marcador de posição para melhorar a UX e ser trocada posteriormente pela imagem final. Você pode verificar se esse recurso está disponível com
CameraExtensionCharacteristics.isPostviewAvailable
. Em seguida, você pode transmitir umOutputConfiguration
paraExtensionSessionConfiguration.setPostviewOutputConfiguration
.Compatibilidade com
SurfaceView
, permitindo um caminho de renderização de visualização mais otimizado e eficiente em termos de energia.Suporte a toque para focar e zoom durante o uso da extensão.
Zoom no sensor
Quando REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
em
CameraCharacteristics
contém
SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
, o app
pode usar recursos avançados do sensor para fornecer a um fluxo RAW cortado os mesmos
pixels do campo de visão completo usando um CaptureRequest
com um destino RAW que tenha o caso de uso do fluxo definido como
CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
.
Ao implementar os controles de substituição de solicitação, a câmera atualizada oferece aos usuários
o controle de zoom antes mesmo que outros controles da câmera estejam prontos.
Áudio USB sem perdas
O Android 14 oferece suporte a formatos de áudio sem perda para experiências
de áudio de alta qualidade com fones de ouvido com fio USB. É possível consultar um dispositivo USB para saber os
atributos de mixer preferidos, registrar um listener para mudanças nos atributos
de mixer preferidos e configurar atributos de mixer usando a
classe AudioMixerAttributes
. Essa classe representa o
formato, como máscara de canal, taxa de amostragem e comportamento do mixer de áudio. A
classe permite que o áudio seja enviado diretamente, sem mixagem,
ajuste de volume ou efeitos de processamento.
Produtividade e ferramentas para desenvolvedores
Credential Manager
O Android 14 adiciona o Gerenciador de credenciais como uma API da plataforma, com suporte adicional para dispositivos com o Android 4.4 (nível 19 da API) por meio de uma biblioteca Jetpack que usa o Google Play Services. O objetivo do Gerenciador de credenciais é facilitar o login para os usuários com APIs que extraem e armazenam credenciais com provedores de credenciais configurados pelo usuário. O Gerenciador de credenciais oferece suporte a vários métodos de login, incluindo nome de usuário e senha, chaves de acesso e soluções de login federadas (como o recurso Fazer login com o Google) em uma única API.
As chaves de acesso oferecem muitas vantagens. Por exemplo, as chaves de acesso são criadas com base nos padrões do setor, podem funcionar em diferentes sistemas operacionais e ecossistemas de navegadores e podem ser usadas em sites e apps.
Para mais informações, consulte a documentação do Gerenciador de credenciais e das chaves de acesso e o post do blog sobre o Gerenciador de credenciais e as chaves de acesso.
Conexão Saúde
A Conexão Saúde é um repositório no dispositivo para dados de saúde e condicionamento físico do usuário. Ele permite que os usuários compartilhem dados entre os apps favoritos, com um único lugar para controlar quais dados eles querem compartilhar com esses apps.
Em dispositivos com versões anteriores ao Android 14, o app Conexão Saúde está disponível para download na Google Play Store. A partir do Android 14, a Conexão Saúde faz parte da plataforma e recebe atualizações por meio das atualizações do sistema do Google Play sem precisar de um download separado. Com isso, a Conexão Saúde pode ser atualizada com frequência, e seus apps podem contar com a Conexão Saúde disponível em dispositivos com o Android 14 ou mais recente. Os usuários podem acessar a Conexão Saúde nas configurações do dispositivo, com controles de privacidade integrados às configurações do sistema.
A Conexão Saúde inclui vários novos recursos no Android 14, como rotas de exercícios, permitindo que os usuários compartilhem uma rota do treino que pode ser visualizada em um mapa. Uma rota é definida como uma lista de locais salvos em um período de tempo, e o app pode inserir rotas em sessões de exercício, vinculando-as uma à outra. Para garantir que os usuários tenham controle total sobre esses dados sensíveis, eles precisam permitir o compartilhamento de rotas individuais com outros apps.
Para mais informações, consulte a documentação da Conexão Saúde e a postagem do blog Novidades no Android Health.
Atualizações do OpenJDK 17
O Android 14 continua o trabalho de atualizar as principais bibliotecas do Android para se alinhar aos recursos das versões mais recentes do LTS do OpenJDK, incluindo atualizações de bibliotecas e suporte à linguagem Java 17 para desenvolvedores de apps e plataformas.
Os seguintes recursos e melhorias estão incluídos:
- Aproximadamente 300 classes
java.base
foram atualizadas para oferecer suporte ao Java 17. - Blocos de texto, que introduzem literais de string de várias linhas à linguagem de programação Java.
- Correspondência de padrão para instanceof, que permite que um objeto
seja tratado como um tipo específico em uma
instanceof
sem nenhuma outra variável. - Classes seladas, que permitem restringir quais classes e interfaces podem estender ou implementar essas classes.
Graças às atualizações do sistema do Google Play (Projeto Mainline), mais de 600 milhões de dispositivos podem receber as atualizações mais recentes do Android Runtime (ART), que incluem essas mudanças. Isso faz parte do nosso compromisso de oferecer aos apps um ambiente mais consistente e seguro em todos os dispositivos, com novos recursos para os usuários, independente da versão da plataforma.
Java e OpenJDK são marcas registradas da Oracle e/ou afiliadas.
Melhorias para app stores
Android 14 introduces several PackageInstaller
APIs that
allow app stores to improve their user experience.
Request install approval before downloading
Installing or updating an app might require user approval.
For example, when an installer making use of the
REQUEST_INSTALL_PACKAGES
permission attempts to install a
new app. In prior Android versions, app stores can only request user approval
after APKs are written to the install session and the
session is committed.
Starting with Android 14, the requestUserPreapproval()
method lets installers request user approval before committing the install
session. This improvement lets an app store defer downloading any APKs until
after the installation has been approved by the user. Furthermore, once a user
has approved installation, the app store can download and install the app in the
background without interrupting the user.
Claim responsibility for future updates
The setRequestUpdateOwnership()
method allows an installer
to indicate to the system that it intends to be responsible for future updates
to an app it is installing. This capability enables update ownership
enforcement, meaning that only the update owner is permitted
to install automatic updates to the app. Update ownership enforcement helps to
ensure that users receive updates only from the expected app store.
Any other installer, including those making use of the
INSTALL_PACKAGES
permission, must receive explicit user
approval in order to install an update. If a user decides to proceed with an
update from another source, update ownership is lost.
Update apps at less-disruptive times
App stores typically want to avoid updating an app that is actively in use because this leads to the app's running processes being killed, which potentially interrupts what the user was doing.
Starting with Android 14, the InstallConstraints
API
gives installers a way to ensure that their app updates happen at an opportune
moment. For example, an app store can call the
commitSessionAfterInstallConstraintsAreMet()
method to
make sure that an update is only committed when the user is no longer
interacting with the app in question.
Seamlessly install optional splits
With split APKs, features of an app can be delivered in separate APK files,
rather than as a monolithic APK. Split APKs allow app stores to optimize the
delivery of different app components. For example, app stores might optimize
based on the properties of the target device. The
PackageInstaller
API has supported splits since its
introduction in API level 22.
In Android 14, the setDontKillApp()
method allows an
installer to indicate that the app's running processes shouldn't be killed when
new splits are installed. App stores can use this feature to seamlessly install
new features of an app while the user is using the app.
Pacotes de metadados do app
A partir do Android 14, o instalador do pacote do Android permite que você especifique os metadados do app, como práticas de segurança de dados, que serão incluídos em páginas de app stores, como o Google Play.
Detectar quando usuários fazem capturas de tela no dispositivo
Para criar uma experiência mais padronizada para detectar capturas de tela, o Android 14 apresenta uma API de detecção de capturas de tela que preserva a privacidade. Ela permite que os apps registrem callbacks por atividade. Esses callbacks são invocados, e o usuário é notificado quando faz uma captura de tela enquanto a atividade está visível.
Experiência do usuário
Ações personalizadas e melhoria na classificação do Sharesheet
Android 14 updates the system sharesheet to support custom app actions and more informative preview results for users.
Add custom actions
With Android 14, your app can add custom actions to the system sharesheet it invokes.
Improve ranking of Direct Share targets
Android 14 uses more signals from apps to determine the ranking of the direct share targets to provide more helpful results for the user. To provide the most useful signal for ranking, follow the guidance for improving rankings of your Direct Share targets. Communication apps can also report shortcut usage for outgoing and incoming messages.
Suporte a animações de voltas preditivas integradas e personalizadas
O Android 13 introduziu a animação de volta preditiva à tela inicial por trás de uma opção do desenvolvedor. Quando usada em um app com suporte para a opção para desenvolvedor ativada, deslizar para trás mostra uma animação indicando que o gesto de retorno sai do app de volta à tela inicial.
O Android 14 inclui várias melhorias e novas orientações para a volta preditiva:
- Você pode configurar
android:enableOnBackInvokedCallback=true
para ativar as animações do sistema de volta preditiva por atividade em vez de para todo o app. - Adicionamos novas animações do sistema para acompanhar a animação de retorno à tela inicial do Android 13. As novas animações do sistema são entre atividades e tarefas, que são recebidas automaticamente após a migração para a volta preditiva.
- Adicionamos novas animações do componente Material Design para páginas inferiores, páginas laterais e pesquisa.
- Desenvolvemos orientações de design para a criação de transições e animações personalizadas no app.
- Adicionamos novas APIs para oferecer suporte a animações de transição personalizadas no app:
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Use
overrideActivityTransition
em vez deoverridePendingTransition
para transições que respondem à medida que o usuário desliza de volta.
Com esta versão de pré-lançamento do Android 14, todos os recursos de volta preditiva permanecem por trás de uma opção para desenvolvedores. Consulte o guia do desenvolvedor para migrar seu app para a volta preditiva e o guia do desenvolvedor para criar transições personalizadas no app.
Substituições por app do fabricante do dispositivo de tela grande
Per-app overrides enable device manufacturers to change the behavior of apps on large screen devices. For example, the FORCE_RESIZE_APP
override instructs the system to resize the app to fit display dimensions (avoiding size compatibility mode) even if resizeableActivity="false"
is set in the app manifest.
Overrides are intended to improve the user experience on large screens.
New manifest properties enable you to disable some device manufacturer overrides for your app.
Substituições por app para usuários de telas grandes
As substituições por app mudam o comportamento dos apps em dispositivos de tela grande. Por exemplo, a substituição do fabricante do dispositivo OVERRIDE_MIN_ASPECT_RATIO_LARGE
define a proporção do app como 16:9, independente da configuração dele.
O Android 14 QPR1 permite que os usuários apliquem substituições por app usando um novo menu de configurações em dispositivos de tela grande.
Compartilhamento de tela de app
O compartilhamento de tela de apps permite que os usuários compartilhem uma janela de app em vez de toda a tela do dispositivo durante a gravação do conteúdo da tela.
Com o compartilhamento de tela do app, a barra de status, a barra de navegação, as notificações e outros elementos da interface do sistema são excluídos da tela compartilhada. Somente o conteúdo do app selecionado é compartilhado.
O compartilhamento de tela de apps melhora a produtividade e a privacidade, permitindo que os usuários executem vários apps, mas limitem o compartilhamento de conteúdo a um único app.
Resposta inteligente com tecnologia LLM no Gboard no Pixel 8 Pro
Em dispositivos Pixel 8 Pro com a versão de dezembro, os desenvolvedores podem testar respostas inteligentes de maior qualidade no Gboard com modelos de linguagem grandes (LLMs) no dispositivo em execução no Google Tensor.
Esse recurso está disponível como uma prévia limitada para o inglês dos EUA no WhatsApp, no Line e no KakaoTalk. É necessário usar um dispositivo Pixel 8 Pro com o Gboard como teclado.
Para testar, primeiro ative o recurso em Configurações > Opções do desenvolvedor > Configurações do AICore > Ativar o AICore persistente.
Em seguida, abra uma conversa em um app compatível para conferir a resposta inteligente com LLM na faixa de sugestões do Gboard em resposta às mensagens recebidas.
Gráficos
Os caminhos podem ser consultados e interpolados
Android's Path
API is a powerful and flexible mechanism for
creating and rendering vector graphics, with the ability to stroke or fill a
path, construct a path from line segments or quadratic or cubic curves, perform
boolean operations to get even more complex shapes, or all of these
simultaneously. One limitation is the ability to find out what is actually in a
Path object; the internals of the object are opaque to callers after creation.
To create a Path
, you call methods such as
moveTo()
, lineTo()
, and
cubicTo()
to add path segments. But there has been no way to
ask that path what the segments are, so you must retain that information at
creation time.
Starting in Android 14, you can query paths to find out what's inside of them.
First, you need to get a PathIterator
object using the
Path.getPathIterator
API:
Kotlin
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
Java
Path path = new Path(); path.moveTo(1.0F, 1.0F); path.lineTo(2.0F, 2.0F); path.close(); PathIterator pathIterator = path.getPathIterator();
Next, you can call PathIterator
to iterate through the segments
one by one, retrieving all of the necessary data for each segment. This example
uses PathIterator.Segment
objects, which packages up the data
for you:
Kotlin
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
Java
while (pathIterator.hasNext()) { PathIterator.Segment segment = pathIterator.next(); Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints()); }
PathIterator
also has a non-allocating version of next()
where you can pass
in a buffer to hold the point data.
One of the important use cases of querying Path
data is interpolation. For
example, you might want to animate (or morph) between two different paths. To
further simplify that use case, Android 14 also includes the
interpolate()
method on Path
. Assuming the two paths have
the same internal structure, the interpolate()
method creates a new Path
with that interpolated result. This example returns a path whose shape is
halfway (a linear interpolation of .5) between path
and otherPath
:
Kotlin
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
Java
Path interpolatedResult = new Path(); if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, 0.5F, interpolatedResult); }
The Jetpack graphics-path library enables similar APIs for earlier versions of Android as well.
Malhas personalizadas com sombreadores de vértice e fragmento
Android has long supported drawing triangle meshes with custom shading, but the input mesh format has been limited to a few predefined attribute combinations. Android 14 adds support for custom meshes, which can be defined as triangles or triangle strips, and can, optionally, be indexed. These meshes are specified with custom attributes, vertex strides, varying, and vertex and fragment shaders written in AGSL.
The vertex shader defines the varyings, such as position and color, while the
fragment shader can optionally define the color for the pixel, typically by
using the varyings created by the vertex shader. If color is provided by the
fragment shader, it is then blended with the current Paint
color using the blend mode selected when
drawing the mesh. Uniforms can be passed
into the fragment and vertex shaders for additional flexibility.
Renderizador de buffer de hardware para tela
Para ajudar no uso da API Canvas
do Android para desenhar com
aceleração de hardware em um HardwareBuffer
, Android 14
apresenta o HardwareBufferRenderer
. Essa API é
particularmente útil quando seu caso de uso envolve a comunicação com o compositor
do sistema usando SurfaceControl
para renderização
de baixa latência.