Se você usar o assistente Vector Asset no Android Studio 1.5.0, qualquer XML drawable vetorial que você importar usando esse assistente entrará res/drawable/
.
No entanto, o build/
diretório e o APK resultante mostram que esses arquivos XML foram movidos para um res/drawable-anydpi-v21/
diretório de recursos. A -v21
parte faz sentido, pois VectorDrawable
só é compatível com API de nível 21+. No entanto, -anydpi
parece não ter documentos. Eu esperava -nodpi
, tanto para o destino de importação original quanto para onde o sistema de compilação decide movê-lo.
Alguém viu declarações oficiais sobre o que -anydpi
significa e com que relação -nodpi
? Estou procurando efeitos práticos, não apenas o que alguns comentários de código sugerem.
android
android-resources
CommonsWare
fonte
fonte
Respostas:
Nodpi
Por exemplo:
O ponto aparecerá pequeno em xxhdpi e grande em ldpi.
No entanto, o resolvedor de recursos corresponderá a um qualificador específico, se houver.
Por exemplo
Em um dispositivo hdpi Lollipop (API 21), o bitmap é usado.
Em um dispositivo xhdpi Lollipop (API 21), o vetor é usado.
Anydpi
Por exemplo
Em um dispositivo hdpi Lollipop (API 21), o vetor é usado.
Em um dispositivo xhdpi Lollipop (API 21), o vetor é usado.
Referência
Nota : anydpi foi adicionado na alteração Ic3288d0236fe0bff20bb1599aba2582c25b0db32 .
fonte
drawable
. O comportamento do SDK pode ter mudado. Consulte VectorDrawable: o Android carrega PNGs xhdpi em vez do recurso vetorialdrawable
diretório de recursos, assim como os dois diretórios que citei em meu bounty sãodrawable
diretórios de recursos.-xxhdpi
dispositivo. Eu tenhores/drawable-mdpi/nodpi_and_m.png
eres/drawable-nodpi/nodpi_and_m.xml
. Em um-xxhdpi
dispositivo Nexus 5, o recurso usado éres/drawable-nodpi/nodpi_and_m.xml
. De acordo com o seu algoritmo, e minhas expectativas,res/drawable-mdpi/nodpi_and_m.png
deve ser usado. Não é isso que está acontecendo.drawable-anydpi-v21
. Se você tiver a biblioteca support-vector-drawable, pode colocá-losdrawable-anydpi
ou simplesmentedrawable
.O código-fonte contém os seguintes comentários (linha 639):
Espero que isso esclareça a confusão.
fonte
-nodpi
diretórios certamente são dimensionados com base no tamanho, de acordo com as regras em vigor sobre como o drawable é usado.nodpi
: Recursos para todas as densidades. Esses são recursos independentes de densidade. O sistema não dimensiona recursos marcados com este qualificador, independentemente da densidade da tela atual.anydpi
: Este qualificador corresponde a todas as densidades de tela e tem precedência sobre outros qualificadores. Isso é útil para drawables vetoriais. Adicionado na API de nível 21.fonte
Eu uso drawable-nodpi para tudo, incluindo muitos gráficos grandes para o meu jogo. Uma consequência não documentada da ampliação de seus gráficos é que isso aumenta o uso de memória exponencialmente. Portanto, se você tiver um gráfico de 1 MB no drawable, ele será dimensionado para 4 MB, 16 MB ou 64 MB, dependendo da resolução do dispositivo do usuário. E as resoluções dos dispositivos continuam aumentando. Essa ampliação não aumenta realmente a nitidez do gráfico, é claro. As ações de desenho podem direcionar o tamanho de cada gráfico em relação ao tamanho da tela de qualquer maneira, sem necessidade de inchar o aplicativo com várias pastas de desenho.
fonte