Sempre que crio um ImageView com o ícone adicionado usando os Ativos de vetor do Android Studio, recebo um erro na linha app:srcCompat="@drawable/ic_play"
Quando altero o app:srcCompat
com android:src
, o erro desaparece, mas o ícone parece pixelizado.
Qual é a principal diferença entre
app:srcCompat="@drawable/ic_play"
e
android:src="@drawable/ic_play"
fonte
build.gradle
, mas ainda não está funcionando, alguma idéia?Se você estiver usando o arquivo build.gradle
android:src="@drawable/some_vector"
semvectorDrawables.useSupportLibrary = true
o aplicativo e tiver imagens vetoriais (drawable vector), ao criar o arquivo apk, o plug-in Android gradle gera muitos arquivos * .png para diferentes telas (hdpi, xhdpi ...) cada um dos seus vetores desenhados (apenas para API = <19). O resultado - tamanho maior do apk .Ao usar
app:srcCompat="@drawable/some_vector"
com ovectorDrawables.useSupportLibrary = true
Android, é possível usar arquivos desenhados por vetores sem gerar*.png
arquivos.Você pode verificar isso com a ferramenta analisador de apk do Android Studio. Basta criar apk com e sem
vectorDrawables.useSupportLibrary = true
.Eu acho que essa é a principal diferença.
fonte
Usar:
O atributo srcCompat é realmente definido na biblioteca AppCompat. Importante: você precisará adicionar o espaço para nome apropriado para isso.
Nota
O que você está recebendo parece ser apenas um erro de cotão que pode ser ignorado. Eu tentei e obtive o mesmo erro, mas está funcionando corretamente.
Você pode usar
tools:ignore="MissingPrefix"
para evitar temporariamente esse erro.Eu espero que isso ajude.
fonte
Ao usar
AppCompat
comImageView
(ou subclasses comoImageButton
eFloatingActionButton
), você poderá usar o novoapp:srcCompat
atributo para referenciar drawables vetoriais em versões mais antigas da plataforma (assim como qualquer outro drawable disponível paraandroid:src
) .android.support.v7.appcompat.R.attr.srcCompat :
Não se esqueça de adicionar
xmlns:app="http://schemas.android.com/apk/res-auto"
quando usarapp:srcCompat
.fonte
Vetores e vetores animados eram suportados apenas em versões recentes da estrutura. srcCompat pode ser usado com a biblioteca de compatibilidade para fazê-los funcionar, mas isso funciona apenas com determinadas visualizações na biblioteca de suporte. Observe que o aplicativo: é usado em vez do android :. Isso significa que não faz parte da estrutura, mas um parâmetro definido pelo seu aplicativo.
fonte
referir que é AppCompatActivity src que vem na biblioteca de suporte enquanto
refere-se a atividade simples.
fonte
Ao usar
AppCompat
comImageView
(ou subclasses comoImageButton
eFloatingActionButton
), você poderá usar o novoapp:srcCompat
atributo para fazer referência a drawables vetoriais (assim como qualquer outro drawable disponível paraandroid:src
). E se você estiver alterando drawables em tempo de execução, poderá usar o mesmosetImageResource()
método de antes (não há alterações).Usar
AppCompat
eapp:srcCompat
é o método mais infalível de integrar desenháveis vetoriais em seu aplicativo. Você verá que a referência direta a drawables vetoriais fora deapp:srcCompat
falhará antes do Lollipop .fonte
O Android 5.0 (nível de API 21) e superior fornece suporte para desenho vetorial, portanto, para oferecer suporte ao desenho vetorial em versões mais antigas: srcCompat foi adicionado
fonte