- PVSM.RU - https://www.pvsm.ru -
Совсем недавно наткнулся на статью [1] на Хабре о том, как реализовать диалоговое окно со списком использованных библиотек. Мне предложенный вариант показался слишком сложным, да и сам список смотрелся криво. В связи с этим я решил поделиться более простым и элегантным способом реализации данного функционала.
Прописываем зависимость в build.gradle нашего модуля:
compile('de.psdev.licensesdialog:licensesdialog:1.8.0')
Теперь нам нужно создать список с использованными библиотеками. Для этого в папке res/raw создаем файл license.xml (можно использовать и другие названия).
Пример:
<?xml version="1.0" encoding="utf-8"?>
<notices>
<notice>
<name>Application Crash Reporting for Android (ACRA)</name>
<url>http://acra.ch/</url>
<copyright>Copyright 2010 Emmanuel Astier & Kevin Gaudin</copyright>
<license>Apache Software License 2.0</license>
</notice>
<notice>
<name>Android ViewPagerIndicator</name>
<url>http://viewpagerindicator.com/</url>
<copyright>Copyright (C) 2011 The Android Open Source Project<br/>Copyright (C) 2012 Jake Wharton</copyright>
<license>Apache Software License 2.0</license>
</notice>
<notice>
<name>OrmLite</name>
<url>http://ormlite.com/</url>
<copyright>Copyright Gray Watson</copyright>
<license>ISC License</license>
</notice>
<notice>
<name>PhotoView</name>
<url>https://github.com/chrisbanes/PhotoView</url>
<copyright>Copyright 2011, 2012 Chris Banes.</copyright>
<license>Apache Software License 2.0</license>
</notice>
</notices>
Как видите нам не нужно писать огромный текст лицензии, а можно лишь указать ее имя. Библиотека на основании этого файла сгенерирует HTML-который потом будет отображаться в диалоговом окне. На момент написания стать поддерживаются следующие лицензии:
Также можно создать свою лицензию, унаследовавшись от класса License и реализовав абстрактные методы.
Если у библиотеки нет копирайта, то просто пишем:
<copyright/>
Осталось написать код в нашей Activity:
new LicensesDialog.Builder(this)
.setNotices(R.raw.license)
.build()
.showAppCompat();
Вот что получается на выходе:
Также можно создать лицензию прямо в Java:
final String name = "LicensesDialog";
final String url = "http://psdev.de";
final String copyright = "Copyright 2013 Philip Schiffer <admin@psdev.de>";
final License license = new ApacheSoftwareLicense20();
final Notice notice = new Notice(name, url, copyright, license);
new LicensesDialog.Builder(this)
.setNotices(notice)
.build()
.showAppCompat();
Исходный код примера можно посмотреть здесь [2]. Спасибо за внимание.
Автор: ImangazalievM
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/108924
Ссылки в тексте:
[1] статью: http://habrahabr.ru/post/274859/
[2] здесь: https://github.com/ImangazalievM/LicenseDialogExample
[3] Источник: http://habrahabr.ru/post/275097/
Нажмите здесь для печати.