1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/iOS_wanglu-AAChartCore-Kotlin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
TRADITIONAL-CHINESE-README.md 26 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 10:51 7593581

AAInfographics

AAInfographics — это версия Kotlin популярного открытого фреймворка для создания графиков и диаграмм. Он основан на объектно-ориентированном подходе и представляет собой простой в использовании и очень красивый инструмент для разработки графиков. Возможно, это самый изысканный сторонний Android-фреймворк с открытым исходным кодом для построения диаграмм (✟ клянусь атеизмом, что я не несу чушь ✟).

Особенности

  1. Дружественность к среде и совместимость. Поддерживает язык Kotlin, прост в настройке. Также доступны версии для iOS от Objective-C AAChartKit, Swift AAChartKit-Swift и Android от Java AAChartCore от компаний Apple и Google, а также другие основные языки мобильных платформ.
  2. Мощные функции и разнообразие типов. Поддерживаются столбчатые диаграммы, линейные графики, гистограммы, диаграммы с областями, круговые диаграммы, пузырьковые диаграммы, радарные диаграммы, полярные карты, лепестковые диаграммы, точечные диаграммы, диаграммы диапазонов областей, столбчатые диаграммы диапазонов, диаграммы площадей диапазонов, диаграммы площади диапазонов с линиями, линейчатые диаграммы, гистограммы с накоплением, линейчатые диаграммы с накоплением, каскадные диаграммы, тепловые карты, пирамиды, гистограммы и т. д. Всего более двадцати видов диаграмм.
  3. Интерактивные графические анимации. Пользовательский интерфейс чёткий и детализированный, при этом анимация отрисовки графиков тонкая и изящная, плавная и красивая. Существует более тридцати видов анимаций отрисовки диаграмм на выбор. Пользователи могут свободно устанавливать время анимации и тип анимации при отрисовке графиков, подробности см. в разделе «Типы анимаций диаграмм AAInfographics» (AAInfographics Animation Types).
  4. Поддержка масштабирования жестами. Поддерживается масштабирование графиков жестами и перетаскивание для просмотра, типы масштабирования подробно описаны в разделе «Масштабирование жестами AAInfographics»(AAInfographics Pinch Zoom Types). Масштабирование по умолчанию отключено.
  5. Крайний минимализм. В рамках фреймворка визуализации данных AAInfographics используется формула крайнего минимализма: «виджет диаграммы + модель диаграммы = нужная вам диаграмма». Она полностью согласуется с другими мощными, красивыми и простыми в использовании открытыми графическими фреймворками AAChartKit, AAChartKit-Swift, AAChartCore.
  6. Цепное программирование. Поддерживается рекомендуемый системой синтаксис цепного программирования, конфигурация экземпляра объекта модели AAChartModel выполняется в одной строке кода.
  7. Простота и удобство. Для завершения всего процесса построения диаграммы требуется всего пять строк кода (при использовании цепного синтаксиса для настройки экземпляра объекта AAChartModel, независимо от того, сколько строк кода вы пишете, теоретически это можно считать только одной строкой). 😜😜😜

Реальные примеры

## Установка

Ручная установка

  1. Скачайте Demo AAChartCore-KotlinDemo.
  2. Перетащите папку с именем AAInfographicsLib из Demo в свой проект.

Использование метода

  1. Создайте представление AAChartView:
    <com.aachartmodel.aainfographics.AAInfographicsLib.AAChartConfiger.AAChartView
    android:id="@+id/AAChartView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
    aaChartView = findViewById(R.id.AAChartView)
  1. Настройте представление модели AAChartModel:
  • Используйте цепное программирование для настройки свойств объекта модели AAChartModel.
 val aaChartModel = AAChartModel()
    .chartType(AAChartType.Area)
    .title("title")
    .subtitle("subtitle")
    .backgroundColor("#4b2b7f")
    .dataLabelEnabled(true)
    .yAxisGridLineWidth(0)
    .legendVerticalAlign(AAChartLegendVerticalAlignType.Bottom)
    .series(arrayOf(
        AASeriesElement()
            .name("Tokyo")
            .data(arrayOf(7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6)),
        AASeriesElement()
            .name("NewYork")
            .data(arrayOf(0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5)),
        AASeriesElement()
            .name("London")
            .data(arrayOf(0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0)),
        AASeriesElement()
            .name("Berlin")
            .data(arrayOf(3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8))
    ))
  1. Нарисуйте график (после создания экземпляра AAChartView вызовите этот метод для рисования окончательного графика):
 /*Представление диаграммы вызывает модель диаграммы, рисует окончательный график*/
 aaChartView.aa_drawChartWithChartModel(aaChartModel);

🌹 🌹 🌹 Хорошо, теперь у вас есть все необходимое для построения графика! Вы получите желаемый график!

Обновление содержимого графика

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

  • Просто обновите данные серии графиков (рекомендуется использовать этот метод после завершения первого графика и последующего обновления данных графика).
/*Обновлены только данные таблицы графиков, без изменения других свойств графиков*/
aaChartView.aa_onlyRefreshTheChartDataWithChartModelSeries(chartModelSeriesArray)
  • Обновите другие свойства графика, кроме данных серии (рекомендуется использовать этот метод после обновления всех свойств графика после первого графика).
/*Обновление всего содержимого AAChartModel (например, изменение типа диаграммы с column chart на area chart), а затем обновление диаграммы*/
aaChartView.aa_refreshChartWholeContentWithChartModel(aaChartModel)

Примеры графиков после настройки некоторых важных свойств AAInfographics

  • line chart - линейный график

line chart (https://github.com/AAChartModel/loadHtmlCssJsDemo-master/blob/master/AAInfographics/LineChart.png) ### Столбчатая диаграмма — 條形圖

Специальная диаграмма с областями первая — 常規折線區域填充圖

Специальная диаграмма с областями вторая — 帶有負數的區域填充圖

Специальная диаграмма с областями третья — 堆積效果的區域填充圖

Полярная диаграмма — 極地圖

Диаграмма-радар — 雷達圖

Круговая диаграмма — 扇形圖

Пузырьковая диаграмма — 氣泡圖

Точечная диаграмма — 散點圖

Диаграмма с областями — 區域範圍圖

Диаграмма со ступенчатыми областями — 直方折線填充圖

Смешанная диаграмма — 混合圖形

Дополнительные графические эффекты

Обратите внимание: приведённое ниже демонстрационное изображение представляет собой анимированный GIF-файл размером около 6 Мбайт. Если анимация не отображается, это означает, что ресурсы изображения загружены не полностью. После полной загрузки ресурсов изображения вы сможете увидеть динамические эффекты для дополнительных элементов.

Особые указания

Поддержка отслеживания событий касания и одиночного перетаскивания пользователем

Можно реализовать отслеживание событий касания пользователя и одиночное перетаскивание, установив методы прокси для экземпляра объекта AAChartView.

interface AAChartViewCallBack {
        fun chartViewMoveOverEventMessage(aaChartView: AAChartView, messageModel: AAMoveOverEventMessageModel)
    }

При отслеживании событий взаимодействия с пользователем информация о событии AAMoveOverEventMessageModel содержит следующее содержимое:

class AAMoveOverEventMessageModel {
    var name: String? = null
    var x: Double? = null
    var y: Double? = null
    var category: String? = null
    var offset: LinkedTreeMap<*, *>? = null
    var index: Double? = null
}

Поддержка определения пользовательского представления всплывающей подсказки AATooltip через JavaScript

Иногда встроенных эффектов всплывающих подсказок может быть недостаточно для удовлетворения особых требований пользователей. В этом случае можно добавить HTML-контент в текстовые свойства headerFormat, footerFormat и pointFormat строки, чтобы определить содержимое всплывающей подсказки. Эти три свойства могут удовлетворить большинство потребностей в настройке всплывающих подсказок.

Если требования по-прежнему не выполняются, всплывающую подсказку AATooltip также можно настроить с помощью функции форматирования. Например, настройте свойства экземпляра объекта AATooltip:

val aaTooltip = AATooltip()
            .useHTML(true)
            .formatter(
             """
function () {
        return ' 🌕 🌖 🌗 🌘 🌑 🌒 🌓 🌔 <br/> '
        + ' Support JavaScript Function Just Right Now !!! <br/> '
        + ' The Gold Price For <b>2020 '
        +  this.x
        + ' </b> Is <b> '
        +  this.y
        + ' </b> Dollars ';
        }
             """.trimIndent()
            )
            .valueDecimals(2)//設置取值精確到小數點後幾位//設置取值精確到小數點後幾位
            .backgroundColor("#000000")
            .borderColor("#000000")
            .style(
                AAStyle()
                    .color("#FFD700")
                    .fontSize("12 px")
            )
          

Это позволит настроить всплывающие подсказки на графике. Визуальный эффект настроенной всплывающей подсказки показан ниже: Пользовательский стиль всплывающей подсказки

Поддержка добавления функции разделения диапазона значений ⚔

  • Добавление цветовой полосы для разделения диапазона значений

  • Добавление цветной линии для разделения диапазона значений ### В настоящее время поддерживаются более десяти типов диаграмм, описание следующее:

enum class AAChartType(val value: String) {
    Column          ("column"),
    Bar             ("bar"),
    Area            ("area"),
    Areaspline      ("areaspline"),
    Line            ("line"),
    Spline          ("spline"),
    Scatter         ("scatter"),
    Pie             ("pie"),
    Bubble          ("bubble"),
    Pyramid         ("pyramid"),
    Funnel          ("funnel"),
    Columnrange     ("columnrange"),
    Arearange       ("arearange"),
    Areasplinerange ("areasplinerange"),
    Boxplot         ("boxplot"),
    Waterfall       ("waterfall"),
    Polygon         ("polygon")
}

В настоящее время поддерживается три типа масштабирования диаграмм, описание следующее:

enum class AAChartZoomType(val value: String) {
    None ("none"),  //отключает функцию масштабирования диаграммы (по умолчанию отключает масштабирование)
    X    ("x"),     //поддерживает горизонтальное масштабирование диаграммы по оси X
    Y    ("y"),     //поддерживает вертикальное масштабирование диаграммы по оси Y
    XY   ("xy"),    //поддерживает масштабирование диаграммы по осям XY
}

Примечание: например, если вы установили свойство zoomType модели AAChartModel в значение AAChartZoomType.X, и выполнили масштабирование диаграммы, то после этого, чтобы можно было перемещать диаграмму влево-вправо, используйте двойное нажатие на область представления AAChartView в виде экрана для перетаскивания влево-вправо. Одновременно в правом верхнем углу экрана автоматически появится кнопка с заголовком «Восстановить масштаб», при нажатии на которую восстанавливается исходный размер и положение диаграммы.

Поддерживается более тридцати типов анимации диаграмм, описание следующее:

enum class AAChartAnimationType(val value :String){
    EaseInQuad     ("easeInQuad"),
    EaseOutQuad    ("easeOutQuad"),
    EaseInOutQuad  ("easeInOutQuad"),
    EaseInCubic    ("easeInCubic"),
    EaseOutCubic   ("easeOutCubic"),
    EaseInOutCubic ("easeInOutCubic"),
    EaseInQuart    ("easeInQuart"),
    EaseOutQuart   ("easeOutQuart"),
    EaseInOutQuart ("easeInOutQuart"),
    EaseInQuint    ("easeInQuint"),
    EaseOutQuint   ("easeOutQuint"),
    EaseInOutQuint ("easeInOutQuint"),
    EaseInSine     ("easeInSine"),
    EaseOutSine    ("easeOutSine"),
    EaseInOutSine  ("easeInOutSine"),
    EaseInExpo     ("easeInExpo"),
    EaseOutExpo    ("easeOutExpo"),
    EaseInOutExpo  ("easeInOutExpo"),
    EaseInCirc     ("easeInCirc"),
    EaseOutCirc    ("easeOutCirc"),
    EaseInOutCirc  ("easeInOutCirc"),
    EaseOutBounce  ("easeOutBounce"),
    EaseInBack     ("easeInBack"),
    EaseOutBack    ("easeOutBack"),
    EaseInOutBack  ("easeInOutBack"),
    Elastic        ("elastic"),
    SwingFromTo    ("swingFromTo"),
    SwingFrom      ("swingFrom"),
    SwingTo        ("swingTo"),
    Bounce         ("bounce"),
    BouncePast     ("bouncePast"),
    EaseFromTo     ("easeFromTo"),
    EaseFrom       ("easeFrom"),
    EaseTo         ("easeTo"),
}

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

Back Bounce Circ Cubic Elastic
![][1] ![][2] ![][3] ![][4] ![][5]
Expo Quad Quart Quint Sine
![][6] ![][7] ![][8] ![][9] ![][10]

Описание свойств AAChartModel:

  • Основные свойства AAChartModel

Свойство Описание Диапазон значений
title Заголовок диаграммы Любая допустимая строка
subtitle Подзаголовок диаграммы Любая допустимая строка
chartType Тип диаграммы, может быть указан как любой допустимый тип из перечисления AAChartType. Поддерживаются такие типы диаграмм как столбчатая, линейчатая, гистограмма, график, столбчатая диаграмма с накоплением, линейная диаграмма, кривая, радарная диаграмма, круговая диаграмма, пузырьковая диаграмма, точечная диаграмма, пирамидальная диаграмма, воронкообразная диаграмма, диаграмма областей, столбчатая диаграмма диапазонов AAChartType.Column,
AAChartType.Bar,
AAChartType.Area,
AAChartType.AreaSpline,
AAChartType.Line,
AAChartType.Spline,
AAChartType.Pie,
AAChartType.Bubble,
AAChartType.Scatter,
AAChartType.Pyramid,
AAChartType.Funnel,
AAChartType.Arearange,
AAChartType.Columnrange
stacking Определяет, будут ли значения каждой серии данных диаграммы суммироваться. По умолчанию используется значение .none, что отключает эффект наложения. Также доступны обычное наложение и наложение в процентах AAChartStackingType.None,
AAChartStackingType.Normal,
AAChartStackingType.Percent
symbol Определяет стиль соединения точек кривой диаграммы. Можно выбрать значения круг, квадрат, ромб, треугольник или перевернутый треугольник, по умолчанию используется смешанный стиль AAChartSymbolType.Circle,
AAChartSymbolType.Square,
AAChartSymbolType.Diamond,
AAChartSymbolType.Triangle,
AAChartSymbolType.TriangleDown
colorsTheme Определяет цветовую тему диаграммы Лицензия

Этот проект AAChartCore использует лицензию MIT. Подробности можно найти, нажав на MIT LICENSE.

Содержание, не являющееся частью фреймворка, но зависящее от него, по-прежнему подчиняется своей первоначальной лицензии.

Контакты

  • 🌕 🌖 🌗 🌘 Тёплое напоминание 🌑 🌒 🌓 🌔

Если у вас есть какие-либо проблемы с использованием, вы всегда можете обратиться ко мне с вопросом на GitHub.

GitHub Issues: https://github.com/AAChartModel/AAChartCore/issues

Если вы хотите принять участие в этом проекте с открытым исходным кодом, также всегда рады вашему обращению.

GitHub: https://github.com/AAChartModel StackOverflow: https://stackoverflow.com/users/7842508/codeforu JianShu: http://www.jianshu.com/u/f1e6753d4254 SegmentFault: https://segmentfault.com/u/huanghunbieguan

Список задач

  • Поддержка загрузки графики и добавление пользовательских событий после завершения.
  • Поддержка динамического обновления глобального содержимого графика.
  • Поддержка динамического обновления содержимого только числовых данных (series).
  • Поддержка эффекта градиента для цветовых слоёв графика.
  • Поддержка горизонтального (полноэкранного) эффекта.
  • Поддержка настройки пользователем анимации рендеринга графика.
  • Поддержка свободной конфигурации объекта модели AAOptions.
  • Поддержка наложения графиков.
  • Поддержка инвертирования осей координат графика.
  • Поддержка рендеринга точечных диаграмм.
  • Поддержка рендеринга гистограмм.
  • Поддержка рендеринга диаграмм диапазонов площадей.
  • Поддержка рендеринга линейных диаграмм с областями диапазонов.
  • Поддержка рендеринга полярных карт.
  • Поддержка рендеринга столбчатых диаграмм.
  • Поддержка рендеринга гистограмм с заливкой.
  • Поддержка рендеринга древовидных диаграмм уровней иерархии.
  • Поддержка рендеринга графиков с циферблатами.
  • Поддержка добавления событий обратного вызова при нажатии на график.
  • Поддержка динамического обновления чистых данных и плавного прокручивания графика в реальном времени.
  • Поддержка создания изображений из уже отрендеренных графиков.
  • Поддержка сохранения созданных изображений в системную папку.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/iOS_wanglu-AAChartCore-Kotlin.git
git@api.gitlife.ru:oschina-mirror/iOS_wanglu-AAChartCore-Kotlin.git
oschina-mirror
iOS_wanglu-AAChartCore-Kotlin
iOS_wanglu-AAChartCore-Kotlin
master