X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2FHueRing.java;h=71df5bb98f75a98012761b74f8ceed13dea237d9;hb=20c03b7a5eb152d42fbbe9ecbaae27530563b398;hp=a896a24a09374944b94fb31a8de616f5bc35b0db;hpb=fa7288f7100565c67ed66b6394d79db5019a94ab;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/HueRing.java b/app/src/main/java/net/ktnx/mobileledger/ui/HueRing.java index a896a24a..71df5bb9 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/HueRing.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/HueRing.java @@ -1,5 +1,5 @@ /* - * Copyright © 2019 Damyan Ivanov. + * Copyright © 2020 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -33,25 +33,23 @@ import androidx.annotation.Nullable; import net.ktnx.mobileledger.utils.Colors; import net.ktnx.mobileledger.utils.DimensionUtils; +import java.util.Locale; import static net.ktnx.mobileledger.utils.Logger.debug; public class HueRing extends View { public static final int hueStepDegrees = 5; private Paint ringPaint, initialPaint, currentPaint, markerPaint; - private int centerX, centerY; - private int diameter; + private int center; private int padding; private int initialHueDegrees; private int color, hueDegrees; private float outerR; private float innerR; private float bandWidth; - private float ringR; - private float innerDiameter; private float centerR; - private RectF centerRect; - private RectF ringRect; + private final RectF centerRect = new RectF(); + private final RectF ringRect = new RectF(); private int markerOverflow; private int markerStrokeWidth; public HueRing(Context context, @Nullable AttributeSet attrs) { @@ -181,6 +179,7 @@ public class HueRing extends View { int heightMode = View.MeasureSpec.getMode(heightMeasureSpec); int heightSize = View.MeasureSpec.getSize(heightMeasureSpec); + int diameter; if ((widthMode == MeasureSpec.AT_MOST) && (heightMode == MeasureSpec.AT_MOST)) { diameter = Math.min(widthSize, heightSize); } @@ -195,26 +194,29 @@ public class HueRing extends View { // getContext().getResources().getDimension(R.dimen.activity_horizontal_margin)) / 2; diameter -= 2 * padding; outerR = diameter / 2f; - centerX = padding + (int) outerR; - centerY = centerX; + center = padding + (int) outerR; bandWidth = diameter / 3.5f; - ringR = outerR - bandWidth / 2f; + float ringR = outerR - bandWidth / 2f; innerR = outerR - bandWidth; - ringRect = new RectF(-ringR, -ringR, ringR, ringR); + ringRect.set(-ringR, -ringR, ringR, ringR); - innerDiameter = diameter - 2 * bandWidth; + float innerDiameter = diameter - 2 * bandWidth; centerR = innerDiameter * 0.5f; - centerRect = new RectF(-centerR, -centerR, centerR, centerR); + centerRect.set(-centerR, -centerR, centerR, centerR); + } + @Override + public boolean performClick() { + return super.performClick(); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: - float x = event.getX() - centerX; - float y = event.getY() - centerY; + float x = event.getX() - center; + float y = event.getY() - center; float dist = (float) Math.hypot(x, y); @@ -235,8 +237,10 @@ public class HueRing extends View { hue)); setHue(hue); break; + case MotionEvent.ACTION_UP: + performClick(); + break; } - return true; } public void setInitialHue(int initialHue) {