Ответ 1
Добавление android:scaleType="fitXY"
к изображению разрешило его для меня.
Я использовал пару изображений, которые импортировал с помощью Android Studio Vector Asset Studio через локальный файл SVG.
Изображения отлично загружаются на моем nexus 6p, однако на Sony Xperia Z он очень пиксельный, а на Samsung Galaxy s2 - еще хуже.
Насколько я понимаю, поскольку файл представляет собой xml (векторный), а не png файл, он должен был иметь возможность автоматически изменять размер, или я что-то упустил.
Я приложил изображение 3 случаев.
РЕДАКТИРОВАТЬ: Просто некоторая дополнительная информация: файл изначально был PNG, однако я полностью преобразовал в векторный файл с помощью программы под названием Vector Magic. Я могу открыть его в иллюстраторе и редактировать каждую строку и т.д.
Решается путем перехода с VectorDrawable на VectorDrawableCompat с помощью метода VectorDrawableCompat.create(..). Спасибо @pskink.
Добавление android:scaleType="fitXY"
к изображению разрешило его для меня.
Android поддерживает SVG на уровне API 21 и выше. Для уровня API 19, 20 это возврат к генерации png. SVG, который мы поместили в приложение, имел меньший размер для этих поколений, и, следовательно, вы, похоже, получаете пиксельные изображения на вашем экране. В моем случае увеличение
<vector android:height="70dp" android:width="70dp"
вектора XML сгенерировал лучше png, и он стал выглядеть лучше на старых устройствах
Для меня причиной, по которой векторы были преобразованы в png, был атрибут android:fillType="evenodd"
в моем векторном объекте. Когда я удалил все вхождения этого атрибута в моем рисоваемом (то есть в векторе, используя тип заливки по умолчанию nonzero
), в следующий раз приложение было построено, все было хорошо.