Как использовать векторные рисунки Android в качестве фона для деятельности? - PullRequest
2 голосов
/ 13 мая 2019

Я не могу установить векторное изображение xml в качестве фона в операции Android.

Я попытался установить его в качестве фона, задав для android:background="@drawable/test_background"

  • значениекорень макета Координатора моей деятельности.

  • дочернему макету Координатора макет ограничения

  • дочернему элементу ImageView ConstraintLayoutчерез app:srcCompat"= @drawable/test_background"

Ни один из вышеуказанных подходов не сработал.В предварительном просмотре дизайна я вижу только черный экран, и мое приложение вылетает с фатальным исключением:

android.view.InflateException: строка двоичного XML-файла # 5: ошибка надувания класса android.support.design.widget.CoordinatorLayout

Вот схема моего макета:

<?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/test_background"
        android:fitsSystemWindows="true"
        android:orientation="vertical"
        android:scrollbarStyle="outsideOverlay">

       <android.support.constraint.ConstraintLayout>
           <android.support.v7.widget.AppCompatImageView>
           </android.support.v7.widget.AppCompatImageView>

       </android.support.constraint.ConstraintLayout>

</android.support.design.widget.CoordinatorLayout>

Рисуемое test_background - это векторный актив xml, созданный из изображения png, преобразованный в svg вInkscape и экспортируется в xml-актив через плагин Inkscape.Изображение в формате png содержит некий шаблон, и я никогда ничего не преобразовывал в него в путь.Так это выглядит так:

<vector xmlns:ns0="http://schemas.android.com/apk/res/android"
    ns0:name="svg869" 
    ns0:width="1382.2272dp" 
    ns0:height="2073.3408dp" 
    ns0:viewportWidth="666.666666667" 
    ns0:viewportHeight="1000.0"/>

Однако я подтвердил, что плагин успешно экспортирует xml, потому что я могу успешно установить фон xml в виде значка (например, в качестве логотипа / значка).

Моя проблема в том, что я не могу установить вектор в качестве фона.

Есть ли какие-либо атрибуты, которые мне нужно установить в чертеже, чтобы использовать его в качестве фона для действия?Или я что-то не так делаю?

Большое спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Как описано здесь , вы должны создать новый слой, который можно рисовать, чтобы он оставался векторным.Эта реализация предназначена для устройств Pre-Lollipop.Устройства с Lollipop и выше не нуждаются в этом.Я проверил это, и оно работает, т.е. независимо от типа вашего rootview.

0 голосов
/ 13 мая 2019

Вам необходимо конвертировать SVG в векторный Android-актив. Вы можете легко сделать это с Android Studio. Щелкните правой кнопкой мыши свой проект> Создать> Векторный актив. Затем выберите «Локальный файл» и введите местоположение файла / путь

enter image description here enter image description here

...