Реалізація списку використаних бібліотек в Android додатку. Спроба №2

Зовсім недавно натрапив на статті на Хабре про те, як реалізувати діалогове вікно зі списком використаних бібліотек. Мені запропонований варіант здався занадто складним, та й сам список виглядав криво. У зв'язку з цим я вирішив поділитися більш простим і елегантним способом реалізації даного функціоналу.

Прописуємо залежність у 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 © 2011 The Android Open Source Project<br/>Copyright © 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-який потім буде відображатися в діалоговому вікні. На момент написання стати підтримуються наступні ліцензії:

  • Apache Software License 2.0
  • BSD 2/3 Clause License
  • Gnu General Public License 2.0/3.0
  • GNU Lesser General Public License 2.1/3
  • MIT
  • Mozilla Public License 1.1
Також можна створити свою ліцензію, унаследовавшись від класу License і реалізувавши абстрактні методи.

Якщо у бібліотеки немає копірайту, то просто пишемо:

<copyright/>

Залишилося написати код нашої Activity:

new LicensesDialog.Builder(this)
.setNotices(R. raw.license)
.build()
.showAppCompat();

Ось що виходить на виході:

image

Також можна створити ліцензію прямо в 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();

Вихідний код прикладу можна подивитися тут. Дякую за увагу.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.