X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2FHueRing.java;h=0a759a0a6739c0c459e8564a4c2f1905f88e04c9;hp=493e6658d4e18f89477d72571427eeb7f23bdd12;hb=899d71e1f4cff043592de4283813b96be8f397a5;hpb=2ee8546a6eecf830e15196ecda72656c344593cb 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 493e6658..0a759a0a 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/HueRing.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/HueRing.java @@ -1,18 +1,18 @@ /* * Copyright © 2019 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your opinion), any later version. + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your opinion), any later version. * - * MoLe is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License terms for details. + * MoLe is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License terms for details. * - * You should have received a copy of the GNU General Public License - * along with Mobile-Ledger. If not, see . + * You should have received a copy of the GNU General Public License + * along with MoLe. If not, see . */ package net.ktnx.mobileledger.ui; @@ -29,6 +29,7 @@ import android.view.MotionEvent; import android.view.View; import net.ktnx.mobileledger.utils.Colors; +import net.ktnx.mobileledger.utils.DimensionUtils; import androidx.annotation.Nullable; @@ -92,6 +93,8 @@ public class HueRing extends View { setInitialHue(initialHueDegrees); setHue(initialHueDegrees); + + padding = DimensionUtils.dp2px(getContext(), 4); } public int getColor() { return color; @@ -100,10 +103,14 @@ public class HueRing extends View { return hueDegrees; } public void setHue(int hueDegrees) { - // round to 15 degrees - int rem = hueDegrees % 15; - if (rem < 8) hueDegrees -= rem; - else hueDegrees += 15 - rem; + if (hueDegrees == -1) hueDegrees = Colors.DEFAULT_HUE_DEG; + + if (hueDegrees != Colors.DEFAULT_HUE_DEG) { + // round to 15 degrees + int rem = hueDegrees % 15; + if (rem < 8) hueDegrees -= rem; + else hueDegrees += 15 - rem; + } this.hueDegrees = hueDegrees; this.color = Colors.getPrimaryColorForHue(hueDegrees); @@ -117,9 +124,10 @@ public class HueRing extends View { protected void onDraw(Canvas canvas) { super.onDraw(canvas); + float center = getWidth() / 2f; ringPaint.setStrokeWidth((int) bandWidth); - canvas.translate(centerX, centerY); + canvas.translate(center, center); canvas.drawOval(ringRect, ringPaint); canvas.drawArc(centerRect, 180, 180, true, initialPaint); @@ -137,17 +145,18 @@ public class HueRing extends View { int heightMode = View.MeasureSpec.getMode(heightMeasureSpec); int heightSize = View.MeasureSpec.getSize(heightMeasureSpec); - if (((widthMode == MeasureSpec.AT_MOST) && (heightMode == MeasureSpec.AT_MOST)) || - ((widthMode == MeasureSpec.EXACTLY) && (heightMode == MeasureSpec.EXACTLY))) - { + if ((widthMode == MeasureSpec.AT_MOST) && (heightMode == MeasureSpec.AT_MOST)) { diameter = Math.min(widthSize, heightSize); } + else { + setMeasuredDimension(MEASURED_STATE_TOO_SMALL, MEASURED_STATE_TOO_SMALL); + return; + } setMeasuredDimension(diameter, diameter); // padding = DimensionUtils.dp2px(getContext(), // getContext().getResources().getDimension(R.dimen.activity_horizontal_margin)) / 2; - padding = 0; diameter -= 2 * padding; radius = diameter / 2f; centerX = padding + (int) radius;