#android #svg #path #assets
Почему происходит размытие элемента path в то время как rectangle и circle без размытия?
Я нашёл решение в виде отключения аппаратного ускорения (заменой на программное), но
мне хотелось бы оставить аппаратное ускорение для данного View и избавиться от размытия.
android:layerType="hardware" // аппаратное
android:layerType="software" // программное
В gradle важная строчка указана
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Вот код загрузки изображения SVG формата из Assets.
// https://github.com/Pixplicity/sharp
Sharp sharp = Sharp.loadAsset(getAssets(), "drawing.svg");
Drawable drawable = sharp.getDrawable();
view = findViewById(R.id.photo_view); //ImageView
view.setImageDrawable(drawable);
Прошу не предлагать импорт Vector asset в Drawable ресурсы. Мне это не подходит.
В моём приложении планируется сотня небольших векторных изображений, которые я планирую
размещать в папке assets.
Проблема одинаково выглядит как на эмуляторе так и на реальных устройствах.
android:layerType="hardware" // аппаратное
android:layerType="software" // программное
Ответы
Ответ 1
Несколько дней мучился меняя библиотеки для работы с SVG. Но как это обычно бывает, ответ на собственный вопрос находится сразу же после того как задашь вопрос на стэковерфлоу ) Для назначения изображения нужно было использовать метод into(): view = findViewById(R.id.photo_view); //ImageView Sharp.loadAsset(getAssets(), "drawing.svg") .into(view); Всем спасибо! Надеюсь этот вопрос поможет кому нибудь в будущем ) Размытие исчезло во всех режимах android:layerType. P.S. Всё равно загадка остаётся неразгаданной, откуда берётся размытие и почему оно возникает только на path элементах svg файлаОтвет 2
Для path даже при android:layerType="hardware" все линии сначала будут переведены с помощью CPU в растовое изображение, и только потом оно передается в GPU. И если после этого, изображению будет необходимо масштабирование, у path будет растягиваться/сжиматься растр, в отличии от примитивных фигур. Вот line например будет рисоваться нормально.
Комментариев нет:
Отправить комментарий