Размещение файлов и тип сборки для SVG в Android и iOS - PullRequest
0 голосов
/ 07 января 2020

У меня возник вопрос по документации для поддержки Xamarin.Native SVG здесь :

В примере кода он вызывает LoadFile:

ImageService.Instance
    .LoadFile("image.svg")
    .
    .

In Для того, чтобы это работало, где в проекте должен быть размещен файл image.svg? А что такое тип сборки для image.svg (Content, AndroidRersource, et c.)? И такое же поведение для iOS?

У меня проблемы с тем, чтобы заставить его работать. Я поместил свой svg в каталог drawable с типом сборки AndroidResource.

Android Project
    |
    |
    -> Resources
        |
        |
        -> drawable
            |
            |
            -> image.svg

1 Ответ

1 голос
/ 08 января 2020

ImageService.Instance.LoadFile: используется для загрузки файлов с диска (только полный путь).

Вы должны использовать LoadFileFromApplicationBundle (комплект приложений), ИЛИ LoadCompiledResource (ресурс приложения).

Загрузить изображение из файла из комплекта приложения.

          /// <summary>
          /// Load an image from a file from application bundle.
          /// eg. assets on Android, compiled resource for other platforms
          /// </summary>
          /// <returns>The new TaskParameter.</returns>
          /// <param name="filepath">Path to the file.</param>
          TaskParameter LoadFileFromApplicationBundle(string filepath);

Xamarin. Android

xml:

  <FFImageLoading.Views.ImageViewAsync
    android:id="@+id/imageView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

Активы: с AndroidAsset of Build Action

enter image description here

MainActivity:

 var imageView = FindViewById<ImageView>(Resource.Id.imageView);
        var filePath = "sample2.svg";
        ImageService.Instance.LoadFileFromApplicationBundle(filePath).WithCustomDataResolver(new SvgDataResolver(64, 0, true)).Into(imageView);

Загрузить изображение из файла из ресурса приложения. Использовать имя ресурса в папке для рисования без расширения.

          /// <summary>
          /// Load an image from a file from application resource.
          /// </summary>
          /// <returns>The new TaskParameter.</returns>
          /// <param name="resourceName">Name of the resource in drawable folder without extension</param>
          TaskParameter LoadCompiledResource(string resourceName);

Xamarin. Android

xml:

 <FFImageLoading.Views.ImageViewAsync
    android:id="@+id/imageView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/> 

Drawable Resource: with AndroidResource of BuildAction

enter image description here

MainActivity:

var filePath = "sample";

ImageService.Instance.LoadCompiledResource(filePath).WithCustomDataResolver(new SvgDataResolver(64, 0, true)).Into(imageView);

enter image description here

В указанной вами ссылке также показан способ загрузки из встроенного ресурсы на Xamarin.Forms, вы можете проверить это. https://github.com/luberda-molinet/FFImageLoading/wiki/SVG-support#xamarinandroid

...