From 658f60f5c94dc1ff68631ca17d2e81fa5d1a7c17 Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Fri, 22 Dec 2017 20:42:24 +0100 Subject: [PATCH] Put more focus on normal span and add margin Instead of having the low, normal and high span be equal, make the normal span as big as low and high together. Also add a small margin to avoid having the indicator at the far edge of the low or high span. --- .../openscale/gui/views/LinearGaugeView.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/LinearGaugeView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/LinearGaugeView.java index bcc4bfcf..6b353fe8 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/LinearGaugeView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/LinearGaugeView.java @@ -123,16 +123,20 @@ public class LinearGaugeView extends View { final boolean hasFirstLimit = firstLimit >= 0; - // Calculate the size of the "normal" span with a fallback if there is no such span - float span = hasFirstLimit ? secondLimit - firstLimit : 0.3f * secondLimit; + // Calculate how much bar to show to the left and right of the "normal" span + // (or just the second limit if there is no first limit). + float span = hasFirstLimit ? (secondLimit - firstLimit) / 2.0f : 0.3f * secondLimit; + + // Add some extra margin to avoid having the indicator too far towards an edge + final float margin = 0.05f * span; // Adjust the span if needed to make the value fit inside of it - if (hasFirstLimit && value < firstLimit - span) { - span = firstLimit - value; - } else if (!hasFirstLimit && value < secondLimit - span) { - span = secondLimit - value; - } else if (value > secondLimit + span) { - span = value - secondLimit; + if (hasFirstLimit && value - margin < firstLimit - span) { + span = firstLimit - value + margin; + } else if (!hasFirstLimit && value - margin < secondLimit - span) { + span = secondLimit - value + margin; + } else if (value + margin > secondLimit + span) { + span = value - secondLimit + margin; } // Round span to some nice value