В общем, дело обстоит так. Когда ты определяешь ресурс с одним именем в разных папках, они раскладываются так, чтобы было понятно андроиду. Путь к этим файлам для разных конфигураций прописывается в файле resources.arsc, который лежит в apk.
Если определить drawable/avd.xml
и drawable-v21/avd.xml
(анимированный), для supportVectorDrawable=true
они будут определены как:
default=res/drawable/avd.xml
(неанимированный)
v21=res/drawable-v21.xml
(анимированный)
А для supportVectorDrawable=false
будут другие значения.
anydpi-v21=res/drawable-anydpi-v21/avd.xml
(неанимированный)
v21=res/drawable-v21/avd.xml
(анимаированный)
xxhdpi=res/drawable-xxhdpi-v4/avd.png
(api<=21, с другими dpi аналогично)
Когда ты прописываешь в xml в папке layout android:src="@drawable/avd.xml"
, андроид во время инфляции смотрит и разрешает какой конкретно файл изображения соответствует конфигурации лэйаута.
Если у нас supportVectorDrawable=true
и api>=21, то все хорошо, и берется, парсится и отображается файл res/drawable-v21.xml
Но если у нас supportVectorDrawable=false
и api>=21, андроид делает выбор между drawable-anydpi-v21
и drawable-v21
. Если этот drawable используется в дефолтной папке layout, то он выбирает drawable-anydpi-v21
, потому что так задан приоритет у разных конфигураций
(типа это дефолт, и layout подходит под него, можешь тут глянуть небольшое объяснение https://gist.github.com/lopspower/7adbcde1d677c9d2f526)
Возможно, поэтому во всех примерах id у статичного и анимированного вектора отличаются друг от друга.