Привязка Xamarin Android и использование библиотеки Java в Visual Studio

Я хочу добавить эту библиотеку кнопок с плавающими действиями из github в свой проект Visual Studio: https://github.com/Clans/FloatingActionButton

Я последовал этому описанию, предложив добавить библиотеку привязки (Android). (https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-a-jar/)

Я пробовал связывание с файлами .jar и .aar. Файлы вроде бы в порядке, но во время импорта я получаю следующее исключение:

BINDINGSGENERATOR : warning BG8601: No packages found

OR

JARTOXML : warning J2X9001: Couldn't load class com/github/clans/fab/FloatingActionButton$1 : java.lang.NoClassDefFoundError: android/view/ViewOutlineProvider

Любая помощь приветствуется.


person CreateAHero    schedule 20.04.2016    source источник


Ответы (2)


В то время как ответ SushiHangovers является правильным с точки зрения выполнения вашей собственной привязки. Однако, если вы просто хотите использовать библиотеку плавающих кнопок действий кланов, вы можете легко установить FAB.XamarinAndroid. через nuget, который уже выполнил для вас привязку этой библиотеки.

Изменить

репозиторий GitHub, где вы можете увидеть, как структурирован проект привязки.

person Plac3Hold3r    schedule 20.04.2016

(Это одно из самых чистых связываний, которые я когда-либо делал, обычно в итоге получается много преобразований...)

  • Начните с нуля и создайте новое Xamarin.Android решение/проект с помощью шаблона.

  • Добавьте проект Android Library Binding в свое решение.

  • Добавьте fab-1.6.3.aar в папку Jars:

(Я использовал прямую ссылку на Maven Central указан на сайте проекта Github)

Примечание. Убедитесь, что .arr помечен как действие сборки LibraryProjectZip после его добавления.

Соберите проект Binding, вы должны получить пару предупреждений о переопределениях, но не об ошибках.

  • Перейдите в свой основной проект приложения Xamarin.Android и добавьте ссылку на проект привязки.

  • Откройте файл Resources/Layout/Main.axml и замените содержимое:


<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <com.github.clans.fab.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_marginBottom="8dp"
        android:layout_marginRight="8dp"/>
</FrameLayout>
  • Соберите и запустите его на своем эмуляторе, пока это не очень круто, так как нет кода, заполняющего что-либо, но он работает:

введите здесь описание изображения

Примечание. Я пошел дальше и импортировал все ресурсы из их образца github, иначе вы получите множество ошибок компиляции относительно отсутствующих ресурсов, если начнете работать с их образцами XML-макетов и кода.

FloatingActionButton/sample/src/main/res:
anim            drawable-xxhdpi     mipmap-xhdpi
drawable        drawable-xxxhdpi    mipmap-xxhdpi
drawable-hdpi       layout          values
drawable-mdpi       menu            values-v21
drawable-v21        mipmap-hdpi     values-w820dp
drawable-xhdpi      mipmap-mdli

И преобразовал достаточно кода Java для MainActivity OnCreate и фрагменты, чтобы проверить это, и все работает, что я пробовал:

введите здесь описание изображения

person SushiHangover    schedule 20.04.2016
comment
Я попробовал ваше решение и немного продвинулся --> теперь оно компилируется без каких-либо исключений. К сожалению, во время выполнения я получаю следующее исключение: Вызвано: java.lang.ClassNotFoundException: не найден класс com.github.clans.fab.FloatingActionButton - person CreateAHero; 21.04.2016
comment
Вы добавили проект Android Library Binding в свое основное приложение Android в качестве ссылки на проект? - person SushiHangover; 21.04.2016
comment
Да, я следовал вашим инструкциям. Немного странно - официальный файл из Xamarin demo работает. developer.xamarin.com/guides /android/advanced_topics/ (textanalyzer.aar) - person CreateAHero; 21.04.2016
comment
@CreateAHero np, рад видеть, что у вас это работает через версию Nuget. - person SushiHangover; 22.04.2016