Если
ваше приложение работает с большими объемами информации, то может
возникнуть нужда в их приятном представлении. Для этого можно
использовать разные методы: таблицы, графики, диаграммы. Сегодня мы
научимся, как добавлять в Android приложение диаграммы, используя
библиотеку MPAndroidChart. Диаграммы этой библиотеки удобны, легки в настройке и даже интерактивны.
Для того, чтобы использовать библиотеку MPAndroidChart для начала ее нужно скачать вот отсюда, а потом скопировать файл библиотеки в папку libs вашего проекта, нажать в Android Studio правым кликом мышки по файлу JAR библиотеки и выбрать Add as Library и подождать пока все добавится.
Перед тем, как данные можно будет использовать в построении диаграммы, их нужно преобразовать в объект DataSet. Разные виды диаграмм используют разные типы подклассов класса DataSet. Например, BarChart использует BarDataSet, а PieChart использует PieDataSet.
Вместо
того, чтобы создавать диаграмму с случайным набором чисел, представим
такую гипотетическую ситуацию: есть два друга и один вечно наяривает
другому по телефону, узнать как у того дела. Второй в свою очередь,
решил стать настоящим исследователем, и записывает количество звонков от
друга за каждый месяц. В нашем уроке мы возьмем да и используем записи
второго друга для создания диаграммы, которая будет показывать, сколько
раз один надоедливый друг звонил другому.
Для отображения данных в диаграмме нам необходимо создать пример BarDataSet. Следуя этими же шагами, можно создать любой другой подкласс DataSet.
Каждое отдельное значение рядка с данными должно быть представлено как Entry. Для создания DataSet используетсяArrayList с объектами Entry. Давайте создадим несколько DataSet объектов и добавим их в ArrayList:
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));
Теперь массив из Entry объектов готов и из него можно создать DataSet:
BarDataSet dataset = new BarDataSet(entries, "# of Calls");
Мы
добавили несколько значений в нашу будущую диаграмму и теперь, с целью
большей ясности того, что же изображает диаграмма, нужно присвоить осям
диаграммы понятные названия. Каждое название по оси Х представим с
помощью использования строк String и сохраним все значения в массиве ArrayList:
ArrayList<String> labels = new ArrayList<String>();
labels.add("Январь");
labels.add("Февраль");
labels.add("Март");
labels.add("Апрель");
labels.add("Май");
labels.add("Июнь");
Все диаграммы этой библиотеки являются подклассами ViewGroup,
что значит то, что вы можете с легкостью добавлять их в любой layout.
Вы можете определить свою диаграмму используя XML файл или java код.
Если диаграмма будет появляться при запуске activity то проще
использовать java код:
BarChart chart = new BarChart(context);
setContentView(chart);
Таким
образом создается бланк диаграммы без какой либо информации в ней. Для
занесения в диаграмму созданных нами выше данных делаем вот так:
BarData data = new BarData(labels, dataset);
chart.setData(data);
Давайте также добавим нашей диаграмме описание:
chart.setDescription("# of times friend1 called friend2");
Если
вы сейчас запустите приложение, то должны увидеть созданную диаграмму.
Эта диаграмма интерактивна и откликается на операцию
увеличения/уменьшения и прикосновения.
Если вам не нравятся стандартные цвета то можно использовать метод setColors для
смены цветовой темы. В библиотеке MPAndroidChart по умолчанию уже
предоставляется несколько разных цветовых тем для диаграмм. Например,
доступны вот такие шаблоны:
- ColorTemplate.LIBERTY_COLORS;
- ColorTemplate.COLORFUL_COLORS; - ColorTemplate.JOYFUL_COLORS; - ColorTemplate.PASTEL_COLORS; - ColorTemplate.VORDIPLOM_COLORS.
Для соединения цветового шаблона с данными, используйте следующую команду:
dataset.setColors(ColorTemplate.COLORFUL_COLORS);
Запустите приложение и увидите, что его цветовая тема изменилась.
Все
диаграммы в данной библиотеке поддерживают анимацию, что делает
диаграммы более привлекательными и живыми. Для анимации обоих осей
диаграммы используется метод animateXY. Если вы хотите применить анимацию только к одной с осей, то нужно использовать animateX или animateY для
анимации Х или Y, соответственно. Когда вызывается метод анимации,
нужно задать длительность анимации в миллисекундах. Например, чтобы
добавить анимацию оси X, используем следующую команду:
chart.animateY(5000);
Также
в диаграммах можно использовать ограничивающие линии. Это может
пригодиться, если вы хотите придать данным на диаграмме большего смысла и
выделить разность показателей, например. В нашем примере, установим
линию, которая будет указывать на предельно допустимое количество
звонков от друга 1 у другу 2, после которого друг 2 начинает
раздражаться. Чтобы это сделать, используем команду:
LimitLine line = new LimitLine(10f);
data.addLimitLine(line);
Библиотека MPAndroidChart
дает пользователю возможность сохранять диаграмму как изображение. Для
использования этой возможности, сначала нужно написать в манифесте
разрешение на запись приложением файлов на SD карту. Чтобы это сделать
открываем файл AndroidManifest.xml и добавляем туда строку:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Далее можно выбирать один из двух методов:
- saveToGallery -
этот метод сохраняет диаграмму как JPEG изображение. Можно настраивать
некоторые характеристики, типа качества сохраняемого изображения;
- saveToPath - метод сохраняет диаграмму как PNG изображение, можно задать путь для сохранения файла.
Например, чтобы наша программа сохраняла диаграмму в формате JPEG, добавим это:
chart.saveToGallery("mychart.jpg", 85); // 85 это качество изображения
Ну что, на этом все. Смотрим на результат:
![]()
Полный код файла MainActivity.java можно посмотреть по ссылке.
Мы научились основам работы с интересной популярной библиотекой для Android программирования под названием MPAndroidChart и теперь смело может использовать новые знания на практике. Удачи!
|