fundo
Percebi que o Android agora suporta algum tipo de desenho vetorial, por meio de uma classe chamada " VectorDrawable " (e também AnimatedVectorDrawable , BTW). Descobri isso examinando o que há de novo no Android-Studio .
Eu me pergunto se isso seria o fim de ter de colocar vários arquivos em várias pastas ( mdpi
, hdpi
, xhdpi
, etc). Isso seria ótimo e pode minimizar o tamanho dos aplicativos em alguns casos.
As questões
Eu gostaria de fazer algumas perguntas sobre esta nova classe:
É possível usá-lo em versões mais antigas do Android, talvez através de uma biblioteca até mesmo da biblioteca de suporte do Google?
Não estou familiarizado com seu funcionamento, mas o Lollipop pode lidar com arquivos SVG? Ele pode fazer qualquer coisa que seja alcançável em arquivos SVG?
Existe algum exemplo / tutorial / vídeo de como usá-lo, além da documentação que encontrei?
fonte
s a very usefull tool but I
resultado impróprio nesse caso e não sei o que há de errado ... Hmmm, para futuros lançamentos gostaria que esta ferramenta notasse sobre formato incorreto ... Se eu usei arquivos svg puros com libs de terceiros, está tudo bem ...Respostas:
ATUALIZAÇÃO EM março de 2016
Por atualização da Biblioteca de Suporte do Android 23.2.1 , Desenhos de vetor de suporte e Drawables de vetor animado. (você também pode usar o último para o mesmo)
Atualize a versão de uma biblioteca no arquivo gradle.
compile 'com.android.support:recyclerview-v7:23.2.1'
Os drawables vetoriais permitem que você substitua vários recursos PNG por um único gráfico vetorial , definido em XML. Embora anteriormente limitado ao Lollipop e dispositivos superiores , ambos
VectorDrawable
eAnimatedVectorDrawable
agora estão disponíveis por meio de duas novas bibliotecas de suporte support-vector-drawable e animated-vector-drawable. novoapp:srcCompat
atributo para referenciar drawables vetoriais.Verifique a fonte no github com alguns exemplos de exemplo .
Mudanças na biblioteca appcompat v7:
Dependência revertida em ativos vetoriais para que os desenvolvedores que usam a biblioteca appcompat não sejam forçados a usar
VectorDrawable
e seus sinalizadores de construção associados.fonte
compile
afirmação acima implica que o projeto usa oRecyclerView
que nem sempre é o caso.Atualização 2 : eles o habilitam novamente na Biblioteca de Suporte 23.4.0:
Verifique este 23.4.0 disponível agora
Atualização : não funciona a partir da versão 23.3.0. Verifique aqui os detalhes. Drawables proxy não funcionam.
app:srcCompat
esetImageResource()
trabalho, no entanto.O suporte a Vector Drawable está disponível na Biblioteca de Suporte da versão 23.2 e posteriores. No entanto, para usar adequadamente esses drawables, eles devem ser referenciados indiretamente.
O primeiro passo seria alterar a
AppCompat
versão.compile 'com.android.support:appcompat-v7:23.2.0'
Em segundo lugar, ative o suporte Vector Drawable. Se estiver usando o plugin do Gradle, 2.0+
android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
De outra forma
android { defaultConfig { generatedDensities = [] } aaptOptions { additionalParameters "--no-version-vectors" } }
Terceiro , consulte a resposta vinculada .
fonte
MenuItem
, que funciona bem.Você pode tentar esta biblioteca de suporte . Ele suporta VectorDrawable e AnimatedVectorDrawable introduzidos no Lollipop com compatibilidade total com versões anteriores.
fonte
Para complementar algumas das respostas aqui: sim, você pode obter suporte para VectorDrawables pré-Lollipop , pelo menos parcial.
Quão parcial? Depende - fiz este diagrama para ajudar (válido para a Biblioteca de Suporte 23.4.0 a - pelo menos - 25.1.0).
fonte
Infelizmente, neste momento, VectorDrawable e AnimatedVectorDrawable não estão disponíveis na biblioteca de suporte. Mas para aproveitar esse recurso nas versões Pré-Lollipop, você pode usar o backport não oficial chamado MrVector.
MrVector está disponível no Github e será compatível com as versões 7 do Android.
Do Leiame oficial
Para adicionar a dependência MrVector, adicione a seguinte linha ao seu bloco de dependências build.gradle.
compile 'com.telly:mrvector:0.2.0'
Para criar o drawable a partir do XML vetorial,
Espero que isto ajude.
fonte
Se você estiver usando o VectorDrawable, o Android Studio irá gerar automaticamente os arquivos PNG de acordo (com base em seus arquivos XML) para as versões Pré-Lollipop.
Observe que esses arquivos PNG gerados são considerados BitmapDrawables em vez de VectorDrawables em dispositivos que executam API abaixo de 21 e, portanto, não podem ser animados ou semelhantes nesses dispositivos.
Consulte "compatibilidade com versões anteriores" para obter mais detalhes: http://android-developers.blogspot.co.at/2015/09/android-studio-14.html
fonte
O Lollipop não pode lidar com arquivos SVG sem bibliotecas de terceiros.
A melhor solução que encontrei é a biblioteca BetterVectorDrawable junto com o conversor SVG para VectorDrawable .
BetterVectorDrawable é a implementação VectorDrawable para Android 4.0+ com comportamento de fallback configurável no Android 5.0+.
SVG to VectorDrawable Converter é o conversor em lote de imagens SVG para arquivos de recursos XML do Android VectorDrawable. Versão online
Os links apontam para readmes, que fornecem informações suficientes sobre como usar a lib e o conversor.
fonte
Não há VectorDrawables na biblioteca de suporte neste momento.
Funkystein está certo - VectorDrawable é semelhante ao SVG, suportando apenas os recursos de desenho vetorial que estão em alta demanda para que o Android possa se concentrar no desempenho. pathData, por exemplo, tem o mesmo formato da string "d" do SVG.
fonte
A grande notícia é que o Google lançou o Android Support Library 23.2 Support Vector Drawables e Drawables vetoriais animados!
Mas obrigado às pessoas que portaram esta biblioteca antes do Google!
Guia para usar:
Refira-se a " idade-dos-vetores " por @chrisbanes
fonte