From 6b690f38adc26a27898f5ac73fcbfa58779449f4 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 21 Nov 2020 23:29:28 +0100 Subject: [PATCH] Charts: text size is resolved from styles. Fixes #524. --- .../chart/ChartValueSeriesTest.java | 3 +- .../opentracks/chart/ChartValueSeries.java | 6 ++-- .../opentracks/chart/ChartView.java | 29 ++++++++++--------- .../opentracks/util/ThemeUtils.java | 17 +++++++++++ 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartValueSeriesTest.java b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartValueSeriesTest.java index 57df29089..dcd436f43 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartValueSeriesTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartValueSeriesTest.java @@ -49,7 +49,8 @@ public class ChartValueSeriesTest { R.string.description_elevation_imperial, R.color.chart_elevation_fill, R.color.chart_elevation_border, - 1) { + 15, + 18) { @Override double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { return chartPoint.getElevation(); diff --git a/src/main/java/de/dennisguse/opentracks/chart/ChartValueSeries.java b/src/main/java/de/dennisguse/opentracks/chart/ChartValueSeries.java index fce1828d5..7075e8079 100644 --- a/src/main/java/de/dennisguse/opentracks/chart/ChartValueSeries.java +++ b/src/main/java/de/dennisguse/opentracks/chart/ChartValueSeries.java @@ -68,7 +68,7 @@ abstract class ChartValueSeries { * @param fillColor the fill color * @param strokeColor the stroke color */ - ChartValueSeries(Context context, int absoluteMin, int absoluteMax, int[] intervalValues, int metricTitleId, int imperialTitleId, int fillColor, int strokeColor, float fontScale) { + ChartValueSeries(Context context, int absoluteMin, int absoluteMax, int[] intervalValues, int metricTitleId, int imperialTitleId, int fillColor, int strokeColor, int fontSizeSmall, int fontSizeMedium) { this.absoluteMin = absoluteMin; this.absoluteMax = absoluteMax; this.intervalValues = intervalValues; @@ -87,12 +87,12 @@ abstract class ChartValueSeries { // Make copies of the stroke paint with the default thickness titlePaint = new Paint(strokePaint); - titlePaint.setTextSize(ChartView.MEDIUM_TEXT_SIZE * fontScale); + titlePaint.setTextSize(fontSizeMedium); titlePaint.setTextAlign(Align.CENTER); titlePaint.setStyle(Style.FILL_AND_STROKE); markerPaint = new Paint(strokePaint); - markerPaint.setTextSize(ChartView.SMALL_TEXT_SIZE * fontScale); + markerPaint.setTextSize(fontSizeSmall); markerPaint.setTextAlign(Align.RIGHT); markerPaint.setStyle(Style.FILL_AND_STROKE); diff --git a/src/main/java/de/dennisguse/opentracks/chart/ChartView.java b/src/main/java/de/dennisguse/opentracks/chart/ChartView.java index 1d9bfd605..4cdcab9db 100644 --- a/src/main/java/de/dennisguse/opentracks/chart/ChartView.java +++ b/src/main/java/de/dennisguse/opentracks/chart/ChartView.java @@ -59,9 +59,6 @@ import de.dennisguse.opentracks.util.UnitConversions; */ public class ChartView extends View { - static final float MEDIUM_TEXT_SIZE = 18f; - static final float SMALL_TEXT_SIZE = 12f; - static final int Y_AXIS_INTERVALS = 5; private static final int TARGET_X_AXIS_INTERVALS = 4; @@ -193,9 +190,8 @@ public class ChartView extends View { public ChartView(Context context, final boolean chartByDistance) { super(context); this.chartByDistance = chartByDistance; - float fontScale = context.getResources().getDisplayMetrics().density - * context.getResources().getConfiguration().fontScale; - + int fontSizeSmall = ThemeUtils.getFontSizeSmallInPx(context); + int fontSizeMedium = ThemeUtils.getFontSizeMediumInPx(context); seriesList.add(new ChartValueSeries(context, Integer.MIN_VALUE, @@ -205,7 +201,8 @@ public class ChartView extends View { R.string.description_elevation_imperial, R.color.chart_elevation_fill, R.color.chart_elevation_border, - fontScale) { + fontSizeSmall, + fontSizeMedium) { @Override protected double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { return chartPoint.getElevation(); @@ -225,7 +222,8 @@ public class ChartView extends View { R.string.description_speed_imperial, R.color.chart_speed_fill, R.color.chart_speed_border, - fontScale) { + fontSizeSmall, + fontSizeMedium) { @Override protected double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { return chartPoint.getSpeed(); @@ -246,7 +244,8 @@ public class ChartView extends View { R.string.description_pace_imperial, R.color.chart_pace_fill, R.color.chart_pace_border, - fontScale) { + fontSizeSmall, + fontSizeMedium) { @Override protected double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { return chartPoint.getPace(); @@ -267,7 +266,8 @@ public class ChartView extends View { R.string.description_sensor_heart_rate, R.color.chart_heart_rate_fill, R.color.chart_heart_rate_border, - fontScale) { + fontSizeSmall, + fontSizeMedium) { @Override protected double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { return chartPoint.getHeartRate(); @@ -287,7 +287,8 @@ public class ChartView extends View { R.string.description_sensor_cadence, R.color.chart_cadence_fill, R.color.chart_cadence_border, - fontScale) { + fontSizeSmall, + fontSizeMedium) { @Override protected double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { return chartPoint.getCadence(); @@ -306,8 +307,8 @@ public class ChartView extends View { R.string.description_sensor_power, R.color.chart_power_fill, R.color.chart_power_border, - fontScale - ) { + fontSizeSmall, + fontSizeMedium) { @Override protected double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { return chartPoint.getPower(); @@ -325,7 +326,7 @@ public class ChartView extends View { axisPaint.setStyle(Style.FILL_AND_STROKE); axisPaint.setColor(ThemeUtils.getTextColorPrimary(context)); axisPaint.setAntiAlias(true); - axisPaint.setTextSize(SMALL_TEXT_SIZE * fontScale); + axisPaint.setTextSize(fontSizeSmall); xAxisMarkerPaint = new Paint(axisPaint); xAxisMarkerPaint.setTextAlign(Align.CENTER); diff --git a/src/main/java/de/dennisguse/opentracks/util/ThemeUtils.java b/src/main/java/de/dennisguse/opentracks/util/ThemeUtils.java index 7f44841ad..7bb9524c7 100644 --- a/src/main/java/de/dennisguse/opentracks/util/ThemeUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/ThemeUtils.java @@ -2,10 +2,13 @@ package de.dennisguse.opentracks.util; import android.content.Context; import android.content.res.Resources; +import android.content.res.TypedArray; import android.util.TypedValue; import androidx.core.content.ContextCompat; +import de.dennisguse.opentracks.R; + public class ThemeUtils { private ThemeUtils() { @@ -37,4 +40,18 @@ public class ThemeUtils { return ContextCompat.getColor(context, typedValue.resourceId); } + + public static int getFontSizeSmallInPx(Context context) { + TypedArray typedArray = context.obtainStyledAttributes(R.style.TextSmall, new int[]{android.R.attr.textSize}); + int fontSize = typedArray.getDimensionPixelSize(0, 12); + typedArray.recycle(); + return fontSize; + } + + public static int getFontSizeMediumInPx(Context context) { + TypedArray typedArray = context.obtainStyledAttributes(R.style.TextMedium, new int[]{android.R.attr.textSize}); + int fontSize = typedArray.getDimensionPixelSize(0, 15); + typedArray.recycle(); + return fontSize; + } }