Статьи

Добавьте диаграммы в ваше приложение для Android, используя MPAndroidChart

Если ваше приложение имеет дело с большим количеством данных, использование диаграмм вместо таблиц для отображения этих данных может значительно улучшить взаимодействие с пользователем. В этом руководстве вы познакомитесь с популярной библиотекой графиков с открытым исходным кодом MPAndroidChart . Диаграммы этой библиотеки очень настраиваемы, интерактивны и просты в создании.

Убедитесь, что у вас установлена ​​последняя версия Android Studio. Вы можете получить его с сайта Android Developer .

Чтобы использовать эту библиотеку в своем проекте Android, все, что вам нужно сделать, это:

  1. Загрузите последнюю версию библиотеки с Github . На момент написания статьи последняя версия 1.7.4 .
  2. Скопируйте mpandroidchartlibrary-1-7-4.jar в каталог libs вашего проекта.
  3. В Android Studio щелкните правой кнопкой мыши файл JAR и выберите « Добавить как библиотеку» .

Все данные должны быть преобразованы в объект DataSet прежде чем они могут быть использованы диаграммой. Различные типы диаграмм используют разные подклассы класса DataSet . Например, BarChart использует экземпляр BarDataSet . Точно так же PieChart использует экземпляр PieDataSet .

Вместо того, чтобы просто иметь дело со случайными числами для создания образца диаграммы, давайте рассмотрим гипотетический сценарий. Алиса и Боб друзья. Алиса звонит Бобу несколько раз в месяц, чтобы узнать, чем он занимается. Боб делает пометки всякий раз, когда она звонит ему

В этом уроке мы используем заметки Боба, чтобы создать диаграмму, показывающую, сколько раз Алиса звонила Бобу . Вот что записал Боб:

Месяц Количество звонков
январь 4
февраль 8
марш 6
апрель 12
май 18
июнь 9

Гистограмма кажется идеальной для этого типа данных. Чтобы отобразить данные в диаграмме, нам нужно создать экземпляр BarDataSet . Вы можете выполнить те же действия, чтобы создать экземпляры других подклассов DataSet .

Каждое отдельное значение необработанных данных должно быть представлено как Entry . ArrayList таких объектов Entry используется для создания DataSet . Давайте создадим несколько объектов BarEntry и добавим их в ArrayList :

1
2
3
4
5
6
7
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(4f, 0));
entries.add(new BarEntry(8f, 1));
entries.add(new BarEntry(6f, 2));
entries.add(new BarEntry(12f, 3));
entries.add(new BarEntry(18f, 4));
entries.add(new BarEntry(9f, 5));

Теперь, когда ArrayList объектов Entry готов, мы можем создать из него DataSet :

1
BarDataSet dataset = new BarDataSet(entries, «# of Calls»);

Мы уже добавили несколько значений в нашу диаграмму, но они не будут иметь большого смысла для пользователя, если мы не дадим им значимые метки. Каждая метка оси x представлена ​​с помощью String а ArrayList используется для хранения всех меток.

1
2
3
4
5
6
7
ArrayList<String> labels = new ArrayList<String>();
labels.add(«January»);
labels.add(«February»);
labels.add(«March»);
labels.add(«April»);
labels.add(«May»);
labels.add(«June»);

Все диаграммы этой библиотеки являются подклассами ViewGroup , что означает, что вы можете легко добавить их в любой макет. Вы можете определить свою диаграмму, используя файл XML или код Java. Если диаграмма будет занимать весь экран Activity или Fragment , то использовать код Java проще:

1
2
BarChart chart = new BarChart(context);
setContentView(chart);

Это создает пустой график без каких-либо данных. Давайте используем набор данных и список меток, которые мы создали на предыдущих шагах, чтобы определить данные этой диаграммы.

1
2
BarData data = new BarData(labels, dataset);
chart.setData(data);

Давайте также добавим описание к диаграмме.

1
chart.setDescription(«# of times Alice called Bob»);

Если вы теперь запускаете свое приложение на устройстве Android, вы должны увидеть гистограмму, похожую на приведенную ниже. Диаграмма является интерактивной и реагирует на жесты с масштабированием и перетаскиванием.

Если вам не нравятся цвета по умолчанию, вы можете использовать метод setColors класса DataSet , чтобы изменить цветовую схему. Тем не менее, MPAndroidChart также поставляется с рядом предопределенных цветовых шаблонов, которые позволяют вам изменять внешний вид вашего набора данных без необходимости работать с отдельными значениями цвета.

В текущей версии этой библиотеки доступны следующие шаблоны:

  • ColorTemplate.LIBERTY_COLORS
  • ColorTemplate.COLORFUL_COLORS
  • ColorTemplate.JOYFUL_COLORS
  • ColorTemplate.PASTEL_COLORS
  • ColorTemplate.VORDIPLOM_COLORS

Чтобы связать шаблон цвета с набором данных, вы должны использовать метод setColors . Вот пример:

1
dataset.setColors(ColorTemplate.COLORFUL_COLORS);

Запустите ваше приложение еще раз, чтобы увидеть диаграмму с более яркими цветами.

Все графики этой библиотеки поддерживают анимацию, которую вы можете использовать, чтобы сделать ваши графики более живыми. Метод animateXY используется для анимации обеих осей диаграммы. Если вы хотите анимировать только одну из осей, вы можете использовать animateX или animateY чтобы анимировать ось X или Y соответственно. Вы должны указать продолжительность (в миллисекундах) анимации при вызове этих методов. Например, чтобы анимировать только ось Y, добавьте следующий фрагмент кода:

1
chart.animateY(5000);

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

В нашем примере, где Алиса звонит Бобу несколько раз в месяц, скажем, что Боб раздражается, если Алиса звонит ему более десяти раз в месяц. Чтобы показать эту информацию, мы могли бы добавить граничную линию для этого значения. Вот как вы это делаете:

1
2
LimitLine line = new LimitLine(10f);
data.addLimitLine(line);

MPAndroidChart также позволяет сохранить текущее состояние диаграммы в виде изображения. Чтобы использовать эту функцию, сначала необходимо дать приложению разрешение на запись на SD-карту устройства. Вы можете сделать это, добавив следующий код в ваш AndroidManifest.xml :

1
<uses-permission android:name=»android.permission.WRITE_EXTERNAL_STORAGE»/>

У вас есть два метода на выбор:

  • saveToGallery Этот метод сохраняет вашу диаграмму в виде файла JPEG. Это также позволяет вам указать качество или степень сжатия изображения.
  • saveToPath Этот метод сохраняет вашу диаграмму как файл PNG по указанному вами пути.

Например, чтобы сохранить диаграмму в виде файла JPEG, вы можете использовать следующий фрагмент кода:

1
chart.saveToGallery(«mychart.jpg», 85);

В этом руководстве вы узнали, как использовать библиотеку MPAndroidChart для создания приятных и интерактивных диаграмм. Ради последовательности я использовал гистограммы в этом уроке. Однако вы можете выполнить те же действия, чтобы создать другие типы диаграмм. Чтобы узнать больше об этой библиотеке, я советую вам прочитать документацию и примеры на Github .