Adicionar gráficos vetoriais de várias densidades

O Android Studio inclui uma ferramenta denominada Vector Asset Studio, que ajuda a adicionar ícones do Material Design e importar arquivos Scalable Vector Graphic (SVG) e Adobe Photoshop Document (PSD) para um projeto como recursos drawable vetoriais. O uso de drawables vetoriais em vez de bitmaps reduz o tamanho do APK, uma vez que o mesmo arquivo pode ser redimensionado para diferentes densidades de tela, sem perda de qualidade da imagem. Para versões mais antigas do Android que não são compatíveis com drawables vetoriais, o Vector Asset Studio pode, durante a compilação, transformar drawables vetoriais em diferentes tamanhos de bitmap para cada densidade de tela.

Sobre o Vector Asset Studio

O Vector Asset Studio adiciona um gráfico vetorial ao projeto como arquivo XML que descreve a imagem. A manutenção de um único arquivo XML pode ser mais fácil que a atualização de diversos gráficos rasterizados em várias resoluções.

O Android 4.4 (API nível 20) e versões anteriores não são compatíveis com drawables vetoriais. Se o nível mínimo de API for definido como um desses níveis de API, você terá duas opções para usar o Vector Asset Studio: gerar arquivos Portable Network Graphic (PNG), o padrão, ou usar a Biblioteca de Suporte.

Para manter compatibilidade com versões anteriores, o Vector Asset Studio gera imagens rasterizadas do drawable vetorial. Os drawables vetoriais e rasterizados são empacotados juntos no APK. Você pode fazer referência a drawables vetoriais como Drawable em código Java ou como @drawable em código XML. Quando o app for executado, a imagem vetorial ou rasterizada correspondente será automaticamente exibida, dependendo do nível de API.

Se você quiser usar somente drawables vetoriais, use a Android Support Library 23.2 ou uma versão posterior. Essa técnica exige uma alteração no arquivo build.gradle antes de executar o Vector Asset Studio, conforme descrito em Compatibilidade com versões anteriores da Biblioteca de Suporte. A classe VectorDrawableCompat na Biblioteca de Suporte é compatível com VectorDrawable no Android 2.1 (API nível 7) e posteriores.

Tipos de gráficos vetoriais compatíveis

A especificação de Material Design do Google oferece ícones do Material Design que podem ser usados em apps para Android. O Vector Asset Studio ajuda você a escolher, importar e dimensionar ícones do Material Design, bem como a definir opacidade e a configuração de espelhamento da direita para a esquerda (RTL, na sigla em inglês).

O Vector Asset Studio também permite importar seus arquivos SVG e PSD. O SVG é um padrão aberto baseado em XML do World Wide Web Consortium (W3C). O formato do arquivo PSD é compatível com recursos do Adobe Photoshop. O Vector Asset Studio é compatível com os padrões básicos, mas não com todos os recursos dos formatos SVG e PSD. Quando você especifica um arquivo SVG ou PSD, o Vector Asset Studio informa imediatamente se o código de gráficos é compatível ou não. Ele converte o arquivo em um XML contendo código VectorDrawable. Se ocorrerem erros, verifique se o drawable vetorial foi exibido corretamente. Para ver mais informações sobre os recursos permitidos do PSD, consulte Compatibilidade e restrições para arquivos PSD.

Para o Android 5.0 (API nível 21) e posteriores, você pode usar a classe AnimatedVectorDrawable para animar as propriedades da classe VectorDrawable. Com a Biblioteca de Suporte, é possível usar a classe AnimatedVectorDrawableCompat para animar a classe VectorDrawable no Android 3.0 (API nível 11) e posteriores. Para ver mais informações, consulte Animar drawables vetoriais.

Considerações para arquivos SVG e PSD

Um drawable vetorial é adequado para ícones simples. Os ícones do Material Design oferecem bons exemplos dos tipos de imagens que funcionam bem como drawables vetoriais em um app. Por outro lado, muitos ícones de inicialização de apps contêm muitos detalhes. Portanto, eles funcionam melhor como imagens rasterizadas.

O carregamento inicial de um drawable vetorial pode custar mais ciclos de CPU do que a imagem rasterizada correspondente. Depois disso, o uso de memória e o desempenho são semelhantes para os dois. Recomendamos que você limite uma imagem vetorial a, no máximo, 200 x 200 dp. Caso contrário, o desenho pode ser muito demorado.

Embora os drawables vetoriais sejam compatíveis com uma ou mais cores, muitas vezes é melhor colorir os ícones de preto (android:fillColor="#FF000000"). Com essa abordagem, é possível adicionar uma tonalidade ao drawable vetorial colocado em um layout. A cor do ícone é alterada para a cor da tonalidade. Se a cor do ícone não for preta, ela poderá se mesclar com a tonalidade em vez de substituí-la.

Soluções de compatibilidade com versões anteriores de drawables vetoriais

A tabela a seguir resume as duas técnicas que podem ser usadas para compatibilidade com versões anteriores:

Técnica Drawables no APK Elementos XML VectorDrawable Versão Sinalizações de compilação Código do app
Geração de PNGs Vetorial e rasterizado Subconjunto compatível

SVG: plug-in do Android para o Gradle 1.5.0 ou posterior

PSD: Android Studio 2.2 ou posterior

Padrão Diversas técnicas de programação compatíveis
Biblioteca de Suporte 23.2 ou posterior Vetorial Totalmente compatível Plug-in do Android para o Gradle 2.0 ou posterior Exige instruções da Biblioteca de Suporte Subconjunto de técnicas de programação compatíveis

O uso de drawables vetoriais pode produzir um APK menor, mas o carregamento inicial desses drawables pode ser mais demorado.

Geração de PNGs

O Android 5.0 (API nível 21) ou posterior é compatível com drawables vetoriais. Se o app tiver um nível de API mínimo inferior a esse, o Vector Asset Studio adicionará o arquivo de drawable vetorial ao projeto. Além disso, durante a compilação, o Gradle criará imagens rasterizadas PNG em várias resoluções. O Gradle gera as densidades de PNG especificadas pela propriedade generatedDensities da Domain Specific Language (DSL) em um arquivo build.gradle.

Para o Android 5.0 (API nível 21) ou posterior, o Vector Asset Studio é compatível com todos os elementos VectorDrawable. Para compatibilidade com o Android 4.4 (API nível 20) ou anterior, o Vector Asset Studio é compatível com os seguintes elementos XML:

<vector>

  • android:width
  • android:height
  • android:viewportWidth
  • android:viewportHeight
  • android:alpha

<group>

  • android:rotation
  • android:pivotX
  • android:pivotY
  • android:scaleX
  • android:scaleY
  • android:translateX
  • android:translateY

<path>

  • android:pathData
  • android:fillColor
  • android:strokeColor
  • android:strokeWidth
  • android:strokeAlpha
  • android:fillAlpha
  • android:strokeLineCap
  • android:strokeLineJoin
  • android:strokeMiterLimit

É possível alterar o código XML gerado pelo Vector Asset Studio, embora isso não seja considerado uma prática recomendada. A alteração de valores no código não deve causar problemas, desde que os valores sejam válidos e estáticos. Se você quiser adicionar elementos XML, precisará ter certeza de que eles são compatíveis com base no nível mínimo de API.

Biblioteca de Suporte

Essa técnica exige a Android Support Library 23.2 ou posterior e o plug-in do Android para o Gradle 2.0 ou posterior, e usa somente drawables vetoriais. A classe VectorDrawableCompat na Biblioteca de Suporte permite a compatibilidade com VectorDrawable no Android 2.1 (API nível 7) e posterior.

Antes de usar o Vector Asset Studio, adicione uma declaração ao arquivo build.gradle:

    android {
      defaultConfig {
        vectorDrawables.useSupportLibrary = true
      }
    }

    dependencies {
      compile 'com.android.support:appcompat-v7:23.2.0'
    }
    

Também é necessário usar técnicas de programação compatíveis com a Biblioteca de Suporte, como o uso do atributo app:srcCompat em vez de android:src para os drawables vetoriais. Para ver mais informações, consulte Android Support Library 23.2.

Executar o Vector Asset Studio

Para iniciar o Vector Asset Studio:

  1. No Android Studio, abra o projeto de um app para Android.
  2. Na janela Project, selecione a visualização Android.
  3. Clique com o botão direito na pasta res e selecione New > Vector Asset.
  4. Algumas outras visualizações e pastas do projeto também têm esse item de menu.

    O Vector Asset Studio é exibido.

    Figura 1. Vector Asset Studio.

  5. Se a caixa de diálogo Need Newer Android Plugin for Gradle for exibida, corrija a versão do Gradle da seguinte forma:
    1. Selecione File > Project Structure.
    2. Na caixa de diálogo Project Structure, selecione Project.
    3. No campo Android Plugin Version, altere a versão do plug-in do Android para o Gradle para 1.5.0 ou posterior e clique em OK.
    4. O Gradle sincroniza o projeto.

    5. Na visualização Android da janela Project, clique com o botão direito na pasta res e selecione New > Vector Asset.
    6. O Vector Asset Studio é exibido.

  6. Continue em Importar um gráfico vetorial.

Importar um gráfico vetorial

O Vector Asset Studio ajuda a importar um arquivo de gráfico vetorial para o projeto do app. Siga um destes procedimentos:

Adicionar um ícone do Material Design

Depois de abrir o Vector Asset Studio, é possível adicionar um ícone do Material Design da seguinte forma:

  1. No Vector Asset Studio, selecione Material Icon.
  2. No campo "Icon", clique no botão.
  3. A caixa de diálogo Select Icon é exibida. Você pode filtrar quais ícones são visíveis selecionando uma categoria na lista à esquerda ou inserindo sua opção no campo de pesquisa, conforme mostrado na figura 2.

    Figura 2. Filtrar ícones do Material Design no Vector Asset Studio.

  4. Selecione um ícone do Material Design e clique em OK. O ícone será exibido em Vector Drawable Preview.

  5. Opcionalmente, altere o nome, o tamanho, a opacidade e a configuração de espelhamento da direita para a esquerda (RTL, na sigla em inglês) do recurso:
    • Name: se não quiser usar o nome padrão, digite um novo. O Vector Asset Studio criará automaticamente um nome único (adicionando um número ao final do nome) se esse nome de recurso já existir no projeto. O nome pode conter apenas caracteres minúsculos, sublinhados e dígitos.
    • Override: selecione essa opção para ajustar o tamanho da imagem. Quando você digita um novo tamanho, a alteração é exibida na área de visualização.
    • O padrão é 24 x 24 dp, definido na especificação do Material Design. Desmarque a caixa de seleção para voltar ao padrão.

    • Opacity: use o controle deslizante para ajustar a opacidade da imagem. A alteração é exibida na área de visualização.
    • Enable auto mirroring for RTL layout: selecione essa opção para exibir uma imagem espelhada quando a direção do layout for da direita para a esquerda, não da esquerda para a direita. Por exemplo, alguns idiomas são lidos da direita para a esquerda. Se você tiver um ícone de seta, poderá ser necessário exibir uma imagem espelhada do ícone nesse caso. Se você está trabalhando com um projeto mais antigo, pode ser necessário adicionar android:supportsRtl="true" ao manifesto do seu app. O espelhamento automático é compatível com o Android 5.0 (API nível 21) ou posterior, bem como com a Biblioteca de Suporte.
  6. Clique em Next.
  7. Você também tem a opção de alterar o diretório dos módulos e recursos:
    • Res Directory: selecione o conjunto de origem de recursos a que quer adicionar o drawable vetorial: src/main/res, src/debug/res, src/release/res ou um conjunto de origem definido pelo usuário. O conjunto de origem principal é aplicado a todas as variações de compilação, inclusive depuração e lançamento. Os conjuntos de origem de depuração e lançamento substituem o conjunto de origem principal e aplicam-se a uma versão de compilação. O conjunto de origem de depuração é usado apenas para depuração. Para definir um novo conjunto de origem, selecione File > Project Structure > app > Build Types. Por exemplo, você pode definir um conjunto de origem Beta e criar uma versão de ícone que contenha o texto "BETA" no canto inferior direito. Para saber mais, consulte Configurar variações de compilação.

    A área Output Directories exibe o drawable vetorial e o diretório onde ele será exibido.

  8. Clique em Finish.
  9. O Vector Asset Studio adiciona um arquivo XML que define o drawable vetorial para o projeto na pasta app/src/main/res/drawable/. Na visualização Android da janela Project, é possível ver o arquivo XML vetorial gerado na pasta drawable.

  10. Compile o projeto.
  11. Se o nível mínimo de API for Android 4.4 (API nível 20) ou anterior e você não tiver ativado a técnica da Biblioteca de Suporte, o Vector Asset Studio gerará arquivos PNG. Na visualização Project Files da janela Project, é possível ver os arquivos PNG e XML gerados na pasta app/build/generated/res/pngs/debug/.

    Não edite os arquivos rasterizados gerados. Em vez disso, trabalhe com o arquivo XML vetorial. O sistema de compilação gera automaticamente novos arquivos rasterizados quando necessário. Portanto, não é necessário mantê-los.

Importar um arquivo SVG ou PSD

Depois de abrir o Vector Asset Studio, é possível importar um arquivo SVG ou PSD da seguinte forma:

  1. No Vector Asset Studio, selecione Local file.
  2. O arquivo deve estar em uma unidade local. Se estiver localizado na rede, por exemplo, será necessário antes fazer o download dele para uma unidade local.

  3. Especifique um Image file clicando em .
  4. A imagem será exibida em Vector Drawable Preview.

    Se o arquivo SVG ou PSD tiver recursos incompatíveis, será exibido um erro na parte inferior do Vector Asset Studio, conforme mostrado na figura 3.

    Figura 3. Exibição de erros no Vector Asset Studio.

    Se forem exibidos erros, será necessário garantir a renderização correta do drawable vetorial importado. Role a lista para ver os erros.

    Para ver uma lista dos elementos compatíveis, consulte Soluções de compatibilidade com versões anteriores de drawables vetoriais. Para ver mais informações sobre os arquivos PSD permitidos, consulte Compatibilidade e restrições para arquivos PSD.

  5. Opcionalmente, altere o nome, o tamanho, a opacidade e a configuração de espelhamento da direita para a esquerda (RTL, na sigla em inglês) do recurso:
    • Name: se não quiser usar o nome padrão, digite um novo. O Vector Asset Studio criará automaticamente um nome único (adicionando um número ao final do nome) se esse nome de recurso já existir no projeto. O nome pode conter apenas caracteres minúsculos, sublinhados e dígitos.
    • Override: selecione essa opção para ajustar o tamanho da imagem. Assim, o tamanho será alterado com as dimensões da própria imagem. Sempre que você alterar o tamanho, a alteração será exibida na área de visualização. O padrão é 24 x 24 dp, definido na especificação do Material Design.
    • Opacity: use o controle deslizante para ajustar a opacidade da imagem. A alteração é exibida na área de visualização.
    • Enable auto mirroring for RTL layout: selecione essa opção para exibir uma imagem espelhada quando a direção do layout for da direita para a esquerda, não da esquerda para a direita. Por exemplo, alguns idiomas são lidos da direita para a esquerda. Se você tiver um ícone de seta, poderá ser necessário exibir uma imagem espelhada do ícone nesse caso. Se você está trabalhando com um projeto mais antigo, pode ser necessário adicionar android:supportsRtl="true" ao manifesto do seu app. O espelhamento automático é compatível com o Android 5.0 (API nível 21) ou posterior, bem como com a Biblioteca de Suporte.
  6. Clique em Next.
  7. Se quiser, você poderá alterar o diretório de recursos:
    • Res Directory: selecione o conjunto de origem de recursos a que quer adicionar o drawable vetorial: src/main/res, src/debug/res, src/release/res ou um conjunto de origem definido pelo usuário. O conjunto de origem principal é aplicado a todas as variações de compilação, inclusive depuração e lançamento. Os conjuntos de origem de depuração e lançamento substituem o conjunto de origem principal e aplicam-se a uma versão de compilação. O conjunto de origem de depuração é usado apenas para depuração. Para definir um novo conjunto de origem, selecione File > Project Structure > app > Build Types. Por exemplo, você pode definir um conjunto de origem Beta e criar uma versão de ícone que contenha o texto "BETA" no canto inferior direito. Para saber mais, consulte Configurar variações de compilação.

    A área Output Directories exibe o drawable vetorial e o diretório onde ele será exibido.

  8. Clique em Finish.
  9. O Vector Asset Studio adiciona um arquivo XML que define o drawable vetorial para o projeto na pasta app/src/main/res/drawable/. Na visualização Android da janela Project, é possível ver o arquivo XML vetorial gerado na pasta drawable.

  10. Compile o projeto.
  11. Se o nível mínimo de API for Android 4.4 (API nível 20) ou anterior e você não tiver ativado a técnica da Biblioteca de Suporte, o Vector Asset Studio gerará arquivos PNG. Na visualização Project Files da janela Project, é possível ver os arquivos PNG e XML gerados na pasta app/build/generated/res/pngs/debug/.

    Não edite os arquivos rasterizados gerados. Em vez disso, trabalhe com o arquivo XML vetorial. O sistema de compilação gera automaticamente novos arquivos rasterizados quando necessário. Portanto, não é necessário mantê-los.

Adicionar um drawable vetorial a um layout

Em um arquivo de layout, você pode definir qualquer widget relacionado a ícone, como ImageButton, ImageView e assim por diante, apontando para um drawable vetorial. Por exemplo, o layout a seguir mostra um drawable vetorial exibido em um botão:

Figura 4. Um drawable vetorial exibido no botão de um layout:

Para exibir um drawable vetorial em um widget, como mostrado na figura:

  1. Abra um projeto e importe um drawable vetorial.
  2. Esse exemplo usa um projeto Phone/Tablet gerado com o assistente de novo projeto.

  3. Na visualização Android da janela Project, clique duas vezes em um arquivo XML de layout, como content_main.xml.
  4. Clique na guia Design para exibir o Layout Editor.
  5. Arraste o widget ImageButton da janela Palette para o Layout Editor.
  6. Na caixa de diálogo Resources, selecione Drawable no painel esquerdo e depois o drawable vetorial importado. Clique em OK.
  7. O drawable vetorial será exibido no ImageButton do layout.

  8. Para alterar a cor da imagem para a cor de realce definida no tema, na janela Properties, localize a propriedade tint e clique em .
  9. Na caixa de diálogo Resources, selecione Color no painel esquerdo e depois colorAccent. Clique em OK.
  10. A cor da imagem é alterada para a cor de realce no layout.

Se o projeto usar a Biblioteca de Suporte, o código de ImageButton será semelhante a este:

    <ImageButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      app:srcCompat="@drawable/ic_build_black_24dp"
      tools:layout_editor_absoluteX="11dp"
      tools:layout_editor_absoluteY="225dp"
      android:id="@+id/imageButton"
      android:tint="@color/colorAccent" />
    

Se o projeto não usar a Biblioteca de Suporte, o código do drawable vetorial precisará ser android:src="@drawable/ic_build_black_24dp".

Fazer referência a um drawable vetorial em código

Normalmente, você pode fazer referência a um recurso de drawable vetorial de forma genérica no código. Quando o app é executado, a imagem vetorial ou rasterizada correspondente é automaticamente exibida, dependendo do nível de API:

  • Na maioria dos casos, você pode fazer referência a drawables vetoriais como @drawable no código XML ou como Drawable no código Java.
  • Por exemplo, o layout de código XML a seguir aplica a imagem a uma visualização:

        <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:src="@drawable/myimage" />
        

    O código Java a seguir recupera a imagem como Drawable:

    Kotlin

        val drawable = resources.getDrawable(R.drawable.myimage, theme)

    Java

        Resources res = getResources();
        Drawable drawable = res.getDrawable(R.drawable.myimage, getTheme());
        

    O método getResources() fica na classe Context, que se aplica a objetos da IU, como atividades, fragmentos, layouts, visualizações, entre outros.

  • Se o app usa a Biblioteca de Suporte, mesmo que você não tenha uma declaração vectorDrawables.useSupportLibrary = true no arquivo build.gradle, é possível referenciar um drawable vetorial com uma declaração app:srcCompat. Por exemplo:
  •     <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            app:srcCompat="@drawable/myimage" />
        
  • Você pode ter que fazer um typecast do recurso drawable para a classe exata dele, como quando você precisa usar recursos específicos da classe VectorDrawable. Para isso, você pode usar código Java como o seguinte:
  • Kotlin

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            val vectorDrawable = drawable as VectorDrawable
        } else {
            val bitmapDrawable = drawable as BitmapDrawable
        }
        

    Java

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
           VectorDrawable vectorDrawable = (VectorDrawable) drawable;
        } else {
           BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
        }
        

Só é possível acessar recursos de drawables vetoriais na linha de código principal.

Na técnica da Biblioteca de Suporte, você precisa usar técnicas de programação compatíveis com essa biblioteca. Para ver mais informações, consulte Android Support Library 23.2.

Modificar código XML gerado pelo Vector Asset Studio

Você pode modificar o código XML do drawable vetorial, mas não os PNGs e o código XML correspondente gerados durante a compilação. No entanto, isso não é recomendável.

Ao usar a técnica de geração de PNGs, o Vector Asset Studio verifica se o drawable vetorial e os PNGs são correspondentes e se o manifesto contém o código correto. Se você adicionar código não compatível no Android 4.4 (API nível 20) ou anterior, as imagens vetorial e do PNG poderão ser diferentes. Também é preciso verificar se o manifesto contém o código compatível com as alterações.

Para modificar o arquivo XML vetorial quando você não está usando a técnica da Biblioteca de Suporte:

  1. Na janela Project, clique duas vezes no arquivo XML vetorial gerado na pasta drawable.
  2. O arquivo XML será exibido no editor e nas janelas Preview.

    Figura 5. Arquivo XML vetorial exibido no Code Editor e na janela "Preview".

  3. Edite o código XML de acordo com o que é compatível com o nível de API mínimo:
  4. Compile o projeto e verifique se o drawable vetorial e as imagens rasterizadas correspondentes têm a mesma aparência.
  5. Lembre-se de que os PNGs gerados podem ser exibidos de forma diferente na janela Preview e no app. Essa diferença é causada pelos mecanismos de renderização diferentes e pelas possíveis alterações feitas no drawable vetorial antes da compilação. Se você adicionar código ao arquivo XML vetorial criado pelo Vector Asset Studio, nenhum recurso incompatível no Android 4.4 (API nível 20) ou anterior aparecerá nos arquivos PNG gerados. Como resultado, quando você adicionar código, será sempre necessário verificar se os PNGs gerados correspondem ao drawable vetorial. Para isso, você pode clicar duas vezes no PNG na visualização Project Files da janela Project. A margem esquerda do Code Editor também exibe a imagem PNG quando o código faz referência ao drawable, conforme mostrado na figura 6.

    Figura 6. Imagem PNG exibida na margem esquerda do Code Editor.

Excluir um drawable vetorial de um projeto

Para excluir um drawable vetorial de um projeto:

  1. Na janela Project, exclua o arquivo XML vetorial gerado selecionando-o e pressionando a tecla Delete (ou selecione Edit > Delete).
  2. A caixa de diálogo Safe Delete será exibida.

  3. Você também pode selecionar opções para saber onde o arquivo é usado no projeto. Depois disso, clique em OK.
  4. O Android Studio exclui o arquivo do projeto e da unidade. No entanto, se você optou por pesquisar os locais do projeto onde o arquivo é usado e alguns desses usos foram encontrados, é possível visualizá-los e decidir se quer excluir esse arquivo ou não.

  5. Selecione Build > Clean Project.
  6. Todos os arquivos PNG e XML gerados automaticamente e correspondentes ao drawable vetorial excluído serão removidos do projeto e da unidade.

Entregar um app que contém drawables vetoriais

Se você usou a técnica da Biblioteca de Suporte ou seu nível de API mínimo é o Android 5.0 (API nível 21) ou posterior, o APK conterá os drawables vetoriais adicionados com o Vector Asset Studio. Esses APKs serão menores do que se as imagens vetoriais fossem convertidas em PNGs.

Se seu nível mínimo de API inclui o Android 4.4 (API nível 20) ou anterior e você tem drawables vetoriais e imagens rasterizadas correspondentes no projeto, há duas opções para entregar os arquivos do APK:

  • Crie um APK que inclui os drawables vetoriais e as representações rasterizadas correspondentes. Essa solução é a mais simples de implementar.
  • Crie APKs separados para níveis de API diferentes. Quando você não inclui as imagens rasterizadas correspondentes no APK para o Android 5.0 (API nível 21) ou posterior, o APK pode ter um tamanho muito menor. Para ver mais informações, consulte Compatibilidade com vários APKs.

Compatibilidade e restrições para arquivos PSD

O Vector Asset Studio não é compatível com todos os recursos de arquivos PSD. A lista a seguir resume as características compatíveis e incompatíveis de arquivos PSD, bem como alguns detalhes de conversão.

Documento

Compatíveis:

  • Os modos de cor bitmap, grayscale, indexed, RGB, Lab ou CMYK de arquivos PSD
  • Uma resolução de cores de 8, 16 ou 32 bits

Detalhes de conversão:

  • As dimensões do documento PSD se tornam as dimensões do drawable vetorial e da janela de visualização.

Incompatíveis:

  • Os modos de cor duotone ou multichannel de arquivos PSD

Formas

Compatíveis:

  • Máscaras de recorte, se a base do recorte for outra forma
  • Operações de forma, incluindo combinação/adição, interseção, subtração e exclusão

Incompatíveis:

  • Regra de preenchimento par-ímpar usada por formas do Photoshop. No Android 6.0 (API nível 23) e anterior, os drawables vetoriais são compatíveis apenas com a regra de preenchimento não zero. Em formas com autointerseção, essa limitação pode levar a diferenças de renderização entre o PSD e o drawable vetorial resultante. Para corrigir esse problema, adicione android:fillType="evenOdd" à forma no drawable vetorial. Por exemplo:
        <vector xmlns:android="https://schemas.android.com/apk/res/android"
            android:viewportHeight="168"
            android:height="24dp"
            android:viewportWidth="209"
            android:width="24dp">
    
            <path
                android:fillAlpha="1.0"
                android:fillColor="#000000"
                android:fillType="evenOdd"
                android:pathData="M24,58 L24,167 L114,167 L114,66 M64,1 L64,96 L208,96 L208,8 M1,97 L146,139 L172,47"/>
        </vector>
        

Traços e preenchimentos

Compatíveis:

  • Traços, incluindo cor, opacidade, largura, união, extremidade, traços interrompidos e alinhamento
  • Preenchimentos e traços com cor sólida
  • Cores de traço e preenchimento especificadas como RGB, Lab ou CMYK

Detalhes de conversão:

  • Se um traço for tracejado, recortado usando uma base de recorte ou usar um alinhamento diferente do centro, o Vector Asset Studio o converterá em uma forma de preenchimento no drawable vetorial.

Incompatíveis:

  • Cores de preenchimentos e traços não sólidas, como gradientes

Opacidade

Compatíveis:

  • Camadas de forma com opacidade 0

Detalhes de conversão:

  • O Vector Asset Studio multiplica a opacidade do preenchimento pela opacidade da camada para calcular o alfa do preenchimento.
  • A ferramenta multiplica a opacidade da base de recorte (se existir) pelo alfa do preenchimento para calcular o alfa do preenchimento final.
  • A ferramenta multiplica a opacidade do traço pela opacidade da camada para calcular o alfa do traço.
  • A ferramenta multiplica a opacidade da base de recorte (se existir) pelo alfa do traço para calcular o alfa do traço final.

Camadas

Compatíveis:

  • Qualquer camada de forma visível

Detalhes de conversão:

  • O Vector Asset Studio preserva o nome das camadas no arquivo do drawable vetorial.

Incompatíveis:

  • Efeitos de camada
  • Camadas de ajuste e texto
  • Modos de mistura (ignorados)

Compatibilidade e restrições para arquivos SVG

O Vector Asset Studio não é compatível com todos os recursos de arquivos SVG. A seção a seguir resume as características compatíveis e incompatíveis quando a ferramenta converte um arquivo SVG em um VectorDrawable, bem como alguns detalhes de conversão.

Recursos compatíveis

VectorDrawable é compatível com todos os recursos do Tiny SVG 1.2, exceto texto.

Formas

VectorDrawable é compatível com caminhos SVG.

A ferramenta converte formas primitivas, como círculos, quadrados e polígonos, em caminhos.

Transformações

A ferramenta é compatível com matrizes de transformação e as aplica diretamente a caminhos filhos.

Grupos

A ferramenta é compatível com elementos de grupos para translação, dimensionamento e rotação. Grupos não são compatíveis com propriedades de opacidade.

A ferramenta também aplica qualquer estilo de grupo ou opacidade a caminhos filhos.

Preenchimentos e traços

Os caminhos podem ser preenchidos e traçados com cores sólidas ou gradientes (linear, radial ou angular). Apenas traços centralizados são compatíveis. Modos de mistura não são compatíveis. Caminhos tracejados não são compatíveis.

Máscaras

A ferramenta é compatível com uma máscara de recorte por grupo.

Recursos incompatíveis com o importador de SVG

Qualquer recurso não listado na seção Recursos compatíveis acima é incompatível. Veja alguns recursos incompatíveis importantes:

  • Efeitos de filtro: efeitos como sombra projetada, desfoques e matriz de cor não são compatíveis.
  • Texto: recomendamos que a conversão de texto em formas seja feita com outras ferramentas.
  • Preenchimentos de padrões.