Самый простой способ использовать SVG в Android?
Я нашел множество библиотек, чтобы использовать svg в Android и избежать создания разных разрешений и сбрасывать файлы для каждого разрешения, это очень раздражает, когда в приложении много значков или изображений.
Может ли кто-нибудь быть любезным, чтобы дать пошаговый процесс простейшей библиотеки для использования SVG в Android, я уверен, что это поможет многим другим.
Также я использую Android Studio и Illustrator для создания своих иконок и изображений.
10 ответов
Сначала вам нужно импортировать svg
файлы, следуя простым шагам.
- Щелкните правой кнопкой мыши на Drawable
- Нажмите новый
- Выберите векторный актив
Если изображение доступно на вашем компьютере, выберите svg
файл. После этого выберите путь к изображению, и, если хотите, в правой части диалогового окна также доступна опция изменения размера изображения. в этом случае svg
изображение импортируется в ваш проект После этого для использования этого изображения используйте ту же процедуру
@drawable/yourimagename
ОБНОВЛЕНИЕ: НЕ используйте этот старый ответ, лучше используйте это: /questions/1425318/samyij-prostoj-sposob-ispolzovat-svg-v-android/1425333#1425333
Хорошо, после нескольких часов исследований я обнаружил, что svg-android довольно прост в использовании, поэтому я оставляю здесь пошаговые инструкции:
загрузить библиотеку с: https://code.google.com/p/svg-android/downloads/list Последняя версия на момент написания этой статьи:
svg-android-1.1.jar
Положить банку в
lib
реж.Сохраните ваш *.svg файл в
res/drawable
dir (в иллюстраторе так же просто, как нажать Сохранить как и выбрать svg)Используйте в своей деятельности следующее: используйте библиотеку svg:
ImageView imageView = (ImageView) findViewById(R.id.imgView); SVG svg = SVGParser.getSVGFromResource(getResources(), R.drawable.example); //The following is needed because of image accelaration in some devices such as samsung imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); imageView.setImageDrawable(svg.createPictureDrawable());
Вы можете уменьшить шаблон кода, как это
Очень просто, я сделал простой класс для хранения прошлого кода и сокращения стандартного кода, например так:
import android.app.Activity;
import android.view.View;
import android.widget.ImageView;
import com.larvalabs.svgandroid.SVG;
import com.larvalabs.svgandroid.SVGParser;
public class SvgImage {
private static ImageView imageView;
private Activity activity;
private SVG svg;
private int xmlLayoutId;
private int drawableId;
public SvgImage(Activity activity, int layoutId, int drawableId) {
imageView = (ImageView) activity.findViewById(layoutId);
svg = SVGParser.getSVGFromResource(activity.getResources(), drawableId);
//Needed because of image accelaration in some devices such as samsung
imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
imageView.setImageDrawable(svg.createPictureDrawable());
}
}
Теперь я могу назвать это в действии:
SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain);
SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder);
SvgImage oceanSVG = new SvgImage(MainActivity.this, R.id.oceanImageView, R.drawable.ocean);
SvgImage fireSVG = new SvgImage(MainActivity.this, R.id.fireImageView, R.drawable.fire);
SvgImage windSVG = new SvgImage(MainActivity.this, R.id.windImageView,R.drawable.wind);
SvgImage universeSVG = new SvgImage(MainActivity.this, R.id.universeImageView,R.drawable.universe);
Android Studio поддерживает SVG начиная с версии 1.4
Вот видео о том, как импортировать.
попробуй это
следующий шаг -
а теперь отредактируйте имя изображения или значка и сохраните его.
Спасибо, удачного кодирования.
Вместо добавления библиотек, которые увеличивают размер вашего apk, я предлагаю вам преобразовать Svg в drawable с помощью http://inloop.github.io/svg2android/. и добавить vectorDrawables.useSupportLibrary = true
в граде,
- вам нужно конвертировать SVG в XML для использования в проекте Android.
1.1 вы можете сделать это на этом сайте: http://inloop.github.io/svg2android/ но он не поддерживает все функции SVG, такие как некоторые градиенты.
1.2 вы можете конвертировать через Android Studio, но он может использовать некоторые функции, которые поддерживают только API 24 и выше, которые могут вызвать сбой вашего приложения на старых устройствах.
и добавить vectorDrawables.useSupportLibrary = true
в файле gradle и используйте вот так:
<android.support.v7.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/ic_item1" />
- используйте эту библиотеку https://github.com/MegatronKing/SVG-Android которая поддерживает эти функции: https://github.com/MegatronKing/SVG-Android/blob/master/support_doc.md
добавьте этот код в класс приложения:
public void onCreate() {
SVGLoader.load(this)
}
и используйте SVG так:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_android_red"/>
1) Щелкните правой кнопкой мыши по каталогу для рисования, затем перейдите в новый, затем перейдите к векторным ресурсам 2) измените тип актива с клип-арта на локальный 3) просмотрите свой файл 4) укажите размер 5) затем нажмите `` Далее '', затем готово. каталог
Вы можете использовать библиотеку Coil для загрузки svg. Просто добавьте эти строки в build.gradle
// ... Coil (https://github.com/coil-kt/coil)
implementation("io.coil-kt:coil:0.12.0")
implementation("io.coil-kt:coil-svg:0.12.0")
Затем добавьте функцию расширения
fun AppCompatImageView.loadSvg(url: String) {
val imageLoader = ImageLoader.Builder(this.context)
.componentRegistry { add(SvgDecoder(this@loadSvg.context)) }
.build()
val request = ImageRequest.Builder(this.context)
.crossfade(true)
.crossfade(500)
.data(url)
.target(this)
.build()
imageLoader.enqueue(request)
}
Затем вызовите этот метод в своей деятельности или фрагменте
your_image_view.loadSvg("your_file_name.svg")
Попробуйте подключаемый модуль SVG2VectorDrawable. Перейдите в Настройки-> Плагины-> Просмотреть плагины и установите SVG2VectorDrawable. Отлично подходит для конвертирования файлов в векторную форму. После установки вы найдете значок для этого в разделе панели инструментов справа от значка справки (?).
Загрузите SVG, используя библиотеку Coil . Обратите внимание, что эта библиотека построена на Kotlin Coroutines.
Импортируйте библиотеку расширений:
implementation("io.coil-kt:coil-svg:2.1.0")
И добавьте декодер в реестр компонентов при создании вашего
ImageLoader:
val imageLoader = ImageLoader.Builder(context)
.components {
add(SvgDecoder.Factory())
}
.build()
Вот и все!
Щелкните здесь для получения дополнительной информации.