From 2ef4eb62ba87a1ee6d56f9996cf94061c1dd7e30 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Date: Sun, 27 Jul 2025 15:46:01 +0200 Subject: [PATCH] [android] Use a library maintain to draw charts Signed-off-by: Jean-Baptiste --- android/app/build.gradle | 2 +- .../main/java/app/organicmaps/ChartController.java | 4 ++-- .../widget/placepage/AxisValueFormatter.java | 11 ++++++----- android/gradle/libs.versions.toml | 2 +- data/copyright.html | 3 +++ 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index c54408f79..72ccd8064 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -355,7 +355,7 @@ dependencies { // Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture // https://github.com/organicmaps/organicmaps/issues/6106 implementation libs.google.guava - implementation libs.devnullorthrow.mpandroidchart + implementation libs.appdevnext.androidchart implementation libs.jcip.annotations // Test Dependencies diff --git a/android/app/src/main/java/app/organicmaps/ChartController.java b/android/app/src/main/java/app/organicmaps/ChartController.java index 6ec611157..8c4bd2e72 100644 --- a/android/app/src/main/java/app/organicmaps/ChartController.java +++ b/android/app/src/main/java/app/organicmaps/ChartController.java @@ -24,7 +24,7 @@ import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; -import com.github.mikephil.charting.formatter.ValueFormatter; +import com.github.mikephil.charting.formatter.IAxisValueFormatter; import com.github.mikephil.charting.highlight.Highlight; import com.github.mikephil.charting.listener.OnChartValueSelectedListener; import com.google.android.material.textview.MaterialTextView; @@ -119,7 +119,7 @@ public class ChartController implements OnChartValueSelectedListener x.setPosition(XAxis.XAxisPosition.BOTTOM); x.setAxisLineColor(ThemeUtils.getColor(mContext, androidx.appcompat.R.attr.dividerHorizontal)); x.setAxisLineWidth(mContext.getResources().getDimensionPixelSize(R.dimen.divider_height)); - ValueFormatter xAxisFormatter = new AxisValueFormatter(mChart); + IAxisValueFormatter xAxisFormatter = new AxisValueFormatter(mChart); x.setValueFormatter(xAxisFormatter); YAxis y = mChart.getAxisLeft(); diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/AxisValueFormatter.java b/android/app/src/main/java/app/organicmaps/widget/placepage/AxisValueFormatter.java index 0543be12b..c305bda6e 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/AxisValueFormatter.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/AxisValueFormatter.java @@ -3,22 +3,23 @@ package app.organicmaps.widget.placepage; import androidx.annotation.NonNull; import app.organicmaps.sdk.util.StringUtils; import com.github.mikephil.charting.charts.BarLineChartBase; -import com.github.mikephil.charting.formatter.DefaultValueFormatter; +import androidx.annotation.Nullable; +import com.github.mikephil.charting.components.AxisBase; +import com.github.mikephil.charting.formatter.IAxisValueFormatter; -public class AxisValueFormatter extends DefaultValueFormatter +public class AxisValueFormatter implements IAxisValueFormatter { - private static final int DEF_DIGITS = 1; @NonNull private final BarLineChartBase mChart; public AxisValueFormatter(@NonNull BarLineChartBase chart) { - super(DEF_DIGITS); + super(); mChart = chart; } @Override - public String getFormattedValue(float value) + public String getFormattedValue(float value, @Nullable AxisBase axisBase) { return StringUtils.nativeFormatDistance(value).toString(mChart.getContext()); } diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index 9613d2668..0b6405fa4 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -22,7 +22,7 @@ androidx-work-runtime = { module = "androidx.work:work-runtime", version = "2.10 androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version = "2.9.2" } android-material = { module = "com.google.android.material:material", version = "1.12.0" } google-guava = { module = "com.google.guava:guava", version = "33.4.8-android" } -devnullorthrow-mpandroidchart = { module = "com.github.devnullorthrow:MPAndroidChart", version = "3.2.0-alpha" } +appdevnext-androidchart = { module = "com.github.AppDevNext:AndroidChart", version = "3.1.0.30" } jcip-annotations = { module = "net.jcip:jcip-annotations", version = "1.0" } androidx-test-junit = { module = "androidx.test.ext:junit", version = "1.2.1" } junit = { module = "junit:junit", version = "4.13.2" } diff --git a/data/copyright.html b/data/copyright.html index ab9036427..146794679 100644 --- a/data/copyright.html +++ b/data/copyright.html @@ -220,6 +220,9 @@
  • MPAndroidChart
    © 2020 Philipp Jahoda; Apache License
  • + +
  • AndroidChart
    + © 2025 AppDevNext; Apache License
  • Skarupke Hash Tables
    © Malte Skarupke 2017; Boost License