From 1d138719f5ec2f6a1024e29d42ed6dfb52835554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B0=D1=86=D0=B5=D0=BF=D0=B8=D0=BD?= Date: Thu, 26 Mar 2020 17:41:50 +0300 Subject: [PATCH] [android] Addjusted zoom in elevation chart, i.e. disabled pinch zoom and left only xaxis scaling [android] Added displaying meters if x range is lower 1000 meters --- .../src/com/mapswithme/maps/ChartController.java | 12 ++++++------ .../maps/widget/placepage/AxisValueFormatter.java | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/android/src/com/mapswithme/maps/ChartController.java b/android/src/com/mapswithme/maps/ChartController.java index 9dfbf04346..1f77e96bcb 100644 --- a/android/src/com/mapswithme/maps/ChartController.java +++ b/android/src/com/mapswithme/maps/ChartController.java @@ -8,7 +8,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; - import com.github.mikephil.charting.charts.LineChart; import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.components.MarkerView; @@ -44,6 +43,7 @@ public class ChartController implements OnChartValueSelectedListener, Initializa private static final int CHART_X_LABEL_COUNT = 6; private static final int CHART_ANIMATION_DURATION = 1500; private static final int CHART_FILL_ALPHA = (int) (0.12 * 255); + private static final int CHART_AXIS_GRANULARITY = 100; private static final float CUBIC_INTENSITY = 0.2f; private static final int CURRENT_POSITION_OUT_OF_TRACK = -1; @@ -93,9 +93,8 @@ public class ChartController implements OnChartValueSelectedListener, Initializa mChart.setTouchEnabled(true); mChart.setOnChartValueSelectedListener(this); mChart.setDrawGridBackground(false); - mChart.setDragEnabled(true); - mChart.setScaleEnabled(true); - mChart.setPinchZoom(true); + mChart.setScaleXEnabled(true); + mChart.setScaleYEnabled(false); mChart.setExtraTopOffset(0); int sideOffset = resources.getDimensionPixelSize(R.dimen.margin_base); int topOffset = 0; @@ -125,13 +124,14 @@ public class ChartController implements OnChartValueSelectedListener, Initializa { XAxis x = mChart.getXAxis(); x.setLabelCount(CHART_X_LABEL_COUNT, false); - x.setAvoidFirstLastClipping(true); x.setDrawGridLines(false); + x.setGranularity(CHART_AXIS_GRANULARITY); + x.setGranularityEnabled(true); x.setTextColor(ThemeUtils.getColor(mContext, R.attr.elevationProfileAxisLabelColor)); x.setPosition(XAxis.XAxisPosition.BOTTOM); x.setAxisLineColor(ThemeUtils.getColor(mContext, R.attr.dividerHorizontal)); x.setAxisLineWidth(mContext.getResources().getDimensionPixelSize(R.dimen.divider_height)); - ValueFormatter xAxisFormatter = new AxisValueFormatter(); + ValueFormatter xAxisFormatter = new AxisValueFormatter(mChart); x.setValueFormatter(xAxisFormatter); YAxis y = mChart.getAxisLeft(); diff --git a/android/src/com/mapswithme/maps/widget/placepage/AxisValueFormatter.java b/android/src/com/mapswithme/maps/widget/placepage/AxisValueFormatter.java index 3e6e365b8f..bf54f8396b 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/AxisValueFormatter.java +++ b/android/src/com/mapswithme/maps/widget/placepage/AxisValueFormatter.java @@ -1,21 +1,30 @@ package com.mapswithme.maps.widget.placepage; +import androidx.annotation.NonNull; +import com.github.mikephil.charting.charts.BarLineChartBase; import com.github.mikephil.charting.formatter.DefaultValueFormatter; import com.mapswithme.util.StringUtils; public class AxisValueFormatter extends DefaultValueFormatter { + private static final String DEF_DIMEN = "m"; private static final int DEF_DIGITS = 1; + private static final int DISTANCE_FOR_METER_FORMAT = 1000; + @NonNull + private final BarLineChartBase mChart; - - public AxisValueFormatter() + public AxisValueFormatter(@NonNull BarLineChartBase chart) { super(DEF_DIGITS); + mChart = chart; } @Override public String getFormattedValue(float value) { - return StringUtils.nativeFormatDistance(value); + if (mChart.getVisibleXRange() > DISTANCE_FOR_METER_FORMAT) + return StringUtils.nativeFormatDistance(value); + + return (int) value + " " + DEF_DIMEN; } }