Статьи

AChartEngine — библиотека диаграмм для приложений Android

Как следует из названия, AChartEngine — это библиотека графиков, которую можно использовать в приложениях для Android.

Он поддерживает все версии Android SDK от 1.6 и выше. Версия 1.6 предлагает только масштабирование на основе панорамирования и кнопок, в то время как в версии 2.1 и новее добавлена ​​поддержка пинч-масштабирования, поскольку это стало доступно в Android SDK 2.x и новее. Некоторое время назад, когда AChartEngine прекратил поддержку более старых версий Android SDK, чем 2.1, многие пользователи просили об этом через пару дней после релиза. В то время, согласно официальному дистрибутиву платформы Android, доступному здесь , в мире по-прежнему оставалось около 5% устройств, работающих под управлением версий старше 2.x.

Добавление диаграмм в приложение Android с помощью AChartEngine так же просто, как добавление achartengine-xyzjar в путь к классам приложения и начало кодирования для его API. Текущая стабильная версия — 1.0.0, а разрабатываемая — 1.1.0. Размер файла jar составляет всего 110 КБ, что в настоящее время занимает совсем немного места. Тем не менее, AChartEngine предлагает поддержку для многих типов диаграмм.

Немного истории

В конце 2008 года разработчики Android уже искали библиотеки для построения графиков, графиков и графиков. В то время не было такого доступного решения с открытым исходным кодом.
Я начал оценивать Android в шутку и после разработки нескольких приложений для Android, которые нуждались в графике, я решил, что могу открыть код для построения графиков с открытым исходным кодом под названием AChartEngine. Версия 0.2.0 была запущена в марте 2009 года и стала первой библиотекой диаграмм с открытым исходным кодом для Android. В то время Android SDK был в версии 1.1.

Особенности

AChartEngine поддерживает три основных типа диаграмм:

  • Диаграммы XY — отображать данные по 2 осям (линия, кубическая линия, площадь, столбец, разброс, пузырь, диапазон (максимум-минимум))
  • Круглые диаграммы — пирог, пончик, циферблат
  • Комбинированный график — может отображать комбинацию XY-графиков

Чтобы быстро просмотреть некоторые скриншоты демонстрационного приложения AChartEngine, посетите официальный веб-сайт и страницу Google Code AChartEngine.

Общий дизайн класса

На диаграмме ниже показано, как организованы классы, которые обрабатывают визуальную визуализацию диаграмм.


  • Класс AbstractChart описывает поведение, общее для всех диаграмм, включая фон рисования, условные обозначения, заголовки,…
  • Класс XYChart описывает состояние и поведение, общие для типов диаграмм XY, таких как отображение осей, меток,…
  • RoundChart похож на XYChart, но для типов диаграмм, которые имеют круглую форму.

Компоненты дизайна

Весь дизайн не ограничен только визуальной частью. Есть еще несколько компонентов, способствующих общей картине.

  • Модель — наборы данных / серии данных.
  • Вид — описан выше.
  • Renderers — помощь в настройке внешнего вида графиков (цвета, шрифты, оси, метки, форматирование,…).
  • ChartFactory — получает экземпляр набора данных и экземпляр средства визуализации и возвращает нужную диаграмму, встроенную в намерение (для случая, когда диаграмма заполняет действие), или представление (когда диаграмма является частью действия, вместе с другие виджеты).
  • Инструменты — инструменты взаимодействия для панорамирования и масштабирования.

Пример кода

Код ниже показывает простой пример того, как диаграмма может быть инициализирована и добавлена ​​в действие. Декларация пакета и импорт были удалены для сохранения размера образца.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class SampleChart extends Activity {
    private GraphicalView mChart;
 
    private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
 
    private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
 
    private XYSeries mCurrentSeries;
 
    private XYSeriesRenderer mCurrentRenderer;
 
    private void initChart() {
        mCurrentSeries = new XYSeries('Sample Data');
        mDataset.addSeries(mCurrentSeries);
        mCurrentRenderer = new XYSeriesRenderer();
        mRenderer.addSeriesRenderer(mCurrentRenderer);
    }
 
    private void addSampleData() {
        mCurrentSeries.add(1, 2);
        mCurrentSeries.add(2, 3);
        mCurrentSeries.add(3, 2);
        mCurrentSeries.add(4, 5);
        mCurrentSeries.add(5, 4);
    }
 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    protected void onResume() {
        super.onResume();
        LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
        if (mChart == null) {
            initChart();
            addSampleData();
            mChart = ChartFactory.getCubeLineChartView(this, mDataset, mRenderer, 0.3f);
            layout.addView(mChart);
        } else {
            mChart.repaint();
        }
    }
}

Чтобы приведенный выше пример работал, необходимо определить простой файл макета, который должен включать LinearLayout с android: id = ‘@ + id / chart’.

Приложения

Приложения всех типов используют AChartEngine для рендеринга графиков. Android-рынок appbrain.com утверждает, что 0,52% от общего числа опубликованных приложений (около 600 КБ) используют AChartEngine, а это означает, что более 3000 из них используют AChartEngine.

Список самых популярных приложений, использующих AChartEngine:

  • MotoACTV — фитнес-инструмент, разработанный Motorola и предварительно установленный на их устройствах
  • Зрители ЭКГ, приложения биологической безопасности
  • Трекеры, фитнес, велосипедные приложения
  • Финансы, бизнес-приложения
  • Другие, …

Ресурсы

  • Официальный сайт http://achartengine.org
  • Веб-сайт Google Code, содержащий загружаемые jar, javadocs и демонстрационное приложение, трекер проблем и исходный код SVN http://code.google.com/p/achartengine
  • Ищите «AChartEngine» на YouTube. Есть куча полезных видеоуроков.
  • Просмотрите stackoverflow.com для поиска решений или размещения вопросов.
  • Зарегистрируйтесь в группе Google AChartEngine и опубликуйте идеи.
  • Посетите страницу AChartEngine в Facebook. Facebook.com/achartengine.
  • Свяжитесь с нами по [email protected]

Авторы приветствуются

Вклад в проект с открытым исходным кодом может хорошо выглядеть в вашем резюме. AChartEngine — это проект с открытым исходным кодом, поэтому он является результатом усилий сообщества. Предлагаемый путь для участия в AChartEngine может быть:

  • Извлеките исходный код из SVN и попытайтесь понять его.
  • Посмотрите на открытые проблемы и попробуйте исправить некоторые из них. Когда закончите, предоставьте патчи.
  • Спросите о правах коммиттера.
  • Ответьте на вопросы на StackOverflow или других веб-сайтах.

Ссылка: AChartEngine — библиотека диаграмм для приложений Android от нашего партнера JCG Аттила-Михали Балаза в блоге Java Advent Calendar .