O Android consegue usar um SVG direto como drawable?

Um recurso VectorDrawable usa o vocabulário XML do Android: um elemento vector com uma viewport, dimensões de exibição e caminhos de desenho. Renomear logo.svg para logo.xml não traduz esses elementos. O SVG usa outros nomes para preenchimentos, traços e transformações, e tem recursos que este exportador recusa de propósito.

Use o conversor de SVG para Android para um ícone de interface simples ou uma ilustração flat. Ele aceita o SVG que você enviar ou um dos seus próprios resultados desbloqueados. Se você começa com um bitmap, faça o traçado da imagem em vetor antes, confira os contornos e só então exporte. Converter recursos não faz um novo traçado nem dispensa o desbloqueio de um resultado existente.

Um exemplo pequeno que você pode reproduzir

Salve este triângulo como triangle.svg e envie. Escolha o nome de recurso ic_triangle e um lado maior de 24 dp.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
  <path fill="#fa643c" d="M12 2L22 22H2Z"/>
</svg>

O XML baixado tem uma viewport de 24 por 24, dimensões de exibição de 24 dp e um caminho. O preenchimento laranja vira a cor do Android com o alfa na frente, #fffa643c. Coloque ic_triangle.xml em app/src/main/res/drawable/. Num layout, use android:src="@drawable/ic_triangle"; no código do app, use o identificador do recurso drawable correspondente.

A viewport descreve a geometria. As dimensões em dp descrevem o tamanho de exibição pretendido do drawable. Um SVG retangular mantém a proporção: escolher 48 dp para o lado maior não estica o desenho num quadrado. O nome do recurso começa com uma letra minúscula e pode ter letras minúsculas, números e sublinhados.

O que sobrevive à conversão?

Nosso conversor aceita caminhos e formas geométricas básicas, cores sólidas, opacidade de preenchimento, estilos de traço compatíveis e preenchimentos nonzero e even-odd. Ele aplica as transformações compatíveis direto nas coordenadas dos caminhos. O preenchimento even-odd é o motivo de esta exportação ser para API 24 e posteriores. Ela não cria adaptações de compatibilidade para apps mais antigos.

Texto, degradês, máscaras, recortes, imagens incorporadas e efeitos precisam de outra etapa de preparação. Converta o texto em contornos no seu editor vetorial. Converta traços transformados em contornos se a transformação escalar os eixos de forma diferente. A opacidade de grupo pode mudar formas sobrepostas, então o exportador a recusa em vez de aplicar a opacidade separadamente e alterar a imagem. O resultado lista tudo o que foi removido por não ser seguro.

Para uma arte detalhada, uma exportação em PNG pode ser um recurso mais adequado. Um número muito grande de caminhos pode custar tempo de renderização, mesmo quando o arquivo é tecnicamente um vetor. Simplifique os pontos desnecessários e teste no tamanho real em que vai aparecer na tela.

Confira o resultado no app

Compile o recurso no Android Studio e confira sobre fundos claros e escuros. Verifique os furos dentro das letras, os traços finos, as cores pretendidas e a transparência. Compare o original e o drawable em tamanhos pequenos, onde os detalhes contam mais. Se o XML compila, o recurso foi aceito; a renderização no dispositivo e as configurações de tint do seu app é que definem a aparência final.

Para um ícone de launcher, use o gerador de ícone de app. Ícones de launcher têm exigências de densidade e de camadas adaptáveis que uma exportação comum de drawable não empacota.