From a762d629875e7ab337cde91eef5d0c002c551cf0 Mon Sep 17 00:00:00 2001 From: cuizhaofei Date: Tue, 6 Jul 2021 17:01:15 +0800 Subject: [PATCH] =?UTF-8?q?FindBugs=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/build.gradle | 13 +++- entry/src/main/config.json | 2 +- .../zyao89/view/zloading/ZLoadingDialog.java | 8 +-- .../view/zloading/ZLoadingDrawable.java | 3 - .../zyao89/view/zloading/ZLoadingView.java | 2 - .../view/zloading/ball/BaseBallBuilder.java | 29 ++++---- .../zloading/ball/ElasticBallBuilder.java | 37 +++++----- .../zloading/ball/InfectionBallBuilder.java | 11 +-- .../view/zloading/ball/IntertwineBuilder.java | 9 +-- .../zloading/circle/DoubleCircleBuilder.java | 5 +- .../view/zloading/circle/PacManBuilder.java | 13 ++-- .../zloading/circle/RotateCircleBuilder.java | 9 +-- .../zloading/circle/SingleCircleBuilder.java | 3 +- .../zloading/circle/SnakeCircleBuilder.java | 23 +++--- .../view/zloading/clock/CircleBuilder.java | 14 ++-- .../view/zloading/clock/ClockBuilder.java | 17 +++-- .../view/zloading/path/MusicPathBuilder.java | 43 +++++------ .../view/zloading/path/SearchPathBuilder.java | 7 +- .../view/zloading/path/StairsPathBuilder.java | 13 ++-- .../view/zloading/rect/ChartRectBuilder.java | 19 ++--- .../view/zloading/rect/StairsRectBuilder.java | 9 +-- .../view/zloading/star/LeafBuilder.java | 33 ++++----- .../view/zloading/star/StarBuilder.java | 43 +++++------ .../view/zloading/text/TextBuilder.java | 7 +- .../view/zloading/util/NumCalcUtil.java | 71 +++++++++++++++++++ 25 files changed, 268 insertions(+), 175 deletions(-) create mode 100644 zloadingview/src/main/java/com/zyao89/view/zloading/util/NumCalcUtil.java diff --git a/entry/build.gradle b/entry/build.gradle index 711e236..7ee4864 100644 --- a/entry/build.gradle +++ b/entry/build.gradle @@ -13,7 +13,17 @@ ohos { } } } - + signingConfigs { + debug { + storeFile file('C:\\Users\\257641-cuizhaofei\\Desktop\\key\\harmonyDebug.p12') + storePassword '00000019C68AFC1661299831FF1EE5DD96EF91D015488A5E2C84B93A922B855539837CD65041D9C68A' + keyAlias = 'harmony' + keyPassword '000000193029002FCC0C7B4A0E7CB36B36431C94A70B4A0B7D2A25E5C8A818CE1991FA44BA0A02152B' + signAlg = 'SHA256withECDSA' + profile file('C:\\Users\\257641-cuizhaofei\\Desktop\\key\\progress_activityDebug.p7b') + certpath file('C:\\Users\\257641-cuizhaofei\\Desktop\\key\\harmonyDebug.cer') + } + } } dependencies { @@ -21,6 +31,7 @@ dependencies { testImplementation 'junit:junit:4.13' ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100' implementation('com.gitee.chinasoft_ohos:Zloading:0.0.3-SNAPSHOT') +// implementation project(path: ':zloadingview') } decc { supportType = ['html', 'xml'] diff --git a/entry/src/main/config.json b/entry/src/main/config.json index e9d04d1..68e6276 100644 --- a/entry/src/main/config.json +++ b/entry/src/main/config.json @@ -1,6 +1,6 @@ { "app": { - "bundleName": "com.zyao89.view.zloading", + "bundleName": "com.example.hm_progress_activity", "vendor": "zyao89", "version": { "code": 1000000, diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingDialog.java b/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingDialog.java index b234a82..b8929a0 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingDialog.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingDialog.java @@ -20,7 +20,7 @@ import java.lang.ref.WeakReference; * My Blog: http://zyao89.me */ public class ZLoadingDialog extends ComponentContainer { - private final String TAG = "Zloading ZLoadingDialog"; + private static final String TAG = "Zloading ZLoadingDialog"; private final WeakReference mContext; private final int mThemeResId; private Z_TYPE mLoadingBuilderType; @@ -29,7 +29,6 @@ public class ZLoadingDialog extends ComponentContainer { private int mHintTextSize = -1; private int mHintTextColor = -1; private boolean mCancelable = true; - private boolean mCanceledOnTouchOutside = true; private double mDurationTimePercent = 1.0f; private int mDialogBackgroundColor = -1; private CommonDialog mZLoadingDialog; @@ -80,11 +79,6 @@ public class ZLoadingDialog extends ComponentContainer { return this; } - public ZLoadingDialog setCanceledOnTouchOutside(boolean canceledOnTouchOutside) { - mCanceledOnTouchOutside = canceledOnTouchOutside; - return this; - } - public ZLoadingDialog setDurationTime(double percent) { this.mDurationTimePercent = percent; return this; diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingDrawable.java b/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingDrawable.java index 7966551..1ba99b5 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingDrawable.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingDrawable.java @@ -1,6 +1,5 @@ package com.zyao89.view.zloading; -import com.zyao89.view.zloading.util.Log; import ohos.agp.components.Component; import ohos.agp.components.Image; import ohos.agp.render.Canvas; @@ -19,8 +18,6 @@ import ohos.app.Context; public class ZLoadingDrawable extends Image implements Component.DrawTask { private final static String TAG = "Zloading ZLoadingDrawable"; private ZLoadingBuilder mZLoadingBuilder; - private int width; - public ZLoadingDrawable(Context context) { super(context); } diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingView.java b/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingView.java index 911a231..14870a7 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingView.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/ZLoadingView.java @@ -22,8 +22,6 @@ public class ZLoadingView extends Image implements Component.BindStateChangedLis public boolean isVisiable; protected ZLoadingBuilder mZLoadingBuilder; private ZLoadingDrawable mZLoadingDrawable; - private int z_type; - private Context mContext; private int mPaintcolor; public ZLoadingView(Context context) { diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/ball/BaseBallBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/ball/BaseBallBuilder.java index 94550d2..a1b2bce 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/ball/BaseBallBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/ball/BaseBallBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.ball; import com.zyao89.view.zloading.ZLoadingBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.render.Canvas; import ohos.agp.render.ColorFilter; import ohos.agp.render.Paint; @@ -51,29 +52,29 @@ abstract class BaseBallBuilder extends ZLoadingBuilder { protected final void initPoints(float ballR) { float centerX = getViewCenterX(); float centerY = getViewCenterY(); - CirclePoint p_0 = new CirclePoint(centerX - ballR, centerY); + CirclePoint p_0 = new CirclePoint(NumCalcUtil.subtract(centerX, ballR), centerY); mBallPoints.add(p_0); - CirclePoint p_1 = new CirclePoint(centerX - ballR, centerY + ballR * PROP_VALUE); + CirclePoint p_1 = new CirclePoint(NumCalcUtil.subtract(centerX, ballR), NumCalcUtil.add(centerY, ballR * PROP_VALUE)); mBallPoints.add(p_1); - CirclePoint p_2 = new CirclePoint(centerX - ballR * PROP_VALUE, centerY + ballR); + CirclePoint p_2 = new CirclePoint(NumCalcUtil.subtract(centerX, ballR * PROP_VALUE), NumCalcUtil.add(centerY, ballR)); mBallPoints.add(p_2); - CirclePoint p_3 = new CirclePoint(centerX, centerY + ballR); + CirclePoint p_3 = new CirclePoint(centerX, NumCalcUtil.add(centerY, ballR)); mBallPoints.add(p_3); - CirclePoint p_4 = new CirclePoint(centerX + ballR * PROP_VALUE, centerY + ballR); + CirclePoint p_4 = new CirclePoint(NumCalcUtil.add(centerX, ballR * PROP_VALUE), NumCalcUtil.add(centerY, ballR)); mBallPoints.add(p_4); - CirclePoint p_5 = new CirclePoint(centerX + ballR, centerY + ballR * PROP_VALUE); + CirclePoint p_5 = new CirclePoint(NumCalcUtil.add(centerX, ballR), NumCalcUtil.add(centerY, ballR * PROP_VALUE)); mBallPoints.add(p_5); - CirclePoint p_6 = new CirclePoint(centerX + ballR, centerY); + CirclePoint p_6 = new CirclePoint(NumCalcUtil.add(centerX, ballR), centerY); mBallPoints.add(p_6); - CirclePoint p_7 = new CirclePoint(centerX + ballR, centerY - ballR * PROP_VALUE); + CirclePoint p_7 = new CirclePoint(NumCalcUtil.add(centerX, ballR), NumCalcUtil.subtract(centerY, ballR * PROP_VALUE)); mBallPoints.add(p_7); - CirclePoint p_8 = new CirclePoint(centerX + ballR * PROP_VALUE, centerY - ballR); + CirclePoint p_8 = new CirclePoint(NumCalcUtil.add(centerX, ballR * PROP_VALUE), NumCalcUtil.subtract(centerY, ballR)); mBallPoints.add(p_8); - CirclePoint p_9 = new CirclePoint(centerX, centerY - ballR); + CirclePoint p_9 = new CirclePoint(centerX, NumCalcUtil.subtract(centerY, ballR)); mBallPoints.add(p_9); - CirclePoint p_10 = new CirclePoint(centerX - ballR * PROP_VALUE, centerY - ballR); + CirclePoint p_10 = new CirclePoint(NumCalcUtil.subtract(centerX, ballR * PROP_VALUE), NumCalcUtil.subtract(centerY, ballR)); mBallPoints.add(p_10); - CirclePoint p_11 = new CirclePoint(centerX - ballR, centerY - ballR * PROP_VALUE); + CirclePoint p_11 = new CirclePoint(NumCalcUtil.subtract(centerX, ballR), NumCalcUtil.subtract(centerY, ballR * PROP_VALUE)); mBallPoints.add(p_11); } @@ -121,11 +122,11 @@ abstract class BaseBallBuilder extends ZLoadingBuilder { } float getX() { - return mX + mOffsetX; + return NumCalcUtil.add(mX, mOffsetX); } float getY() { - return mY + mOffsetY; + return NumCalcUtil.add(mY, mOffsetY); } void setOffsetX(float offsetX) { diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/ball/ElasticBallBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/ball/ElasticBallBuilder.java index 2cc1b87..8a25c84 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/ball/ElasticBallBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/ball/ElasticBallBuilder.java @@ -16,6 +16,7 @@ package com.zyao89.view.zloading.ball; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Canvas; @@ -82,15 +83,15 @@ public class ElasticBallBuilder extends BaseBallBuilder { private void initBgPoints() { float centerX = getViewCenterX(); float centerY = getViewCenterY(); - CirclePoint p_0 = new CirclePoint(centerX - mCanvasTranslateOffset * 2, centerY); - CirclePoint p_1 = new CirclePoint(centerX - mCanvasTranslateOffset, centerY); + CirclePoint p_0 = new CirclePoint(NumCalcUtil.subtract(centerX, mCanvasTranslateOffset * 2), centerY); + CirclePoint p_1 = new CirclePoint(NumCalcUtil.subtract(centerX, mCanvasTranslateOffset), centerY); // 默认第一个圆不显示 mBGCircles.add(p_0); mBGCircles.add(p_1); CirclePoint p_2 = new CirclePoint(centerX, centerY); - CirclePoint p_3 = new CirclePoint(centerX + mCanvasTranslateOffset, centerY); - CirclePoint p_4 = new CirclePoint(centerX + mCanvasTranslateOffset * 2, centerY); + CirclePoint p_3 = new CirclePoint(NumCalcUtil.add(centerX, mCanvasTranslateOffset), centerY); + CirclePoint p_4 = new CirclePoint(NumCalcUtil.add(centerX, mCanvasTranslateOffset * 2), centerY); mBGCircles.add(p_2); mBGCircles.add(p_3); mBGCircles.add(p_4); @@ -105,8 +106,8 @@ public class ElasticBallBuilder extends BaseBallBuilder { private void drawBall(Canvas canvas) { canvas.save(); mPaint.setStyle(Paint.Style.FILLANDSTROKE_STYLE); - float offsetX = mBGCircles.size() / 2 * mCanvasTranslateOffset; - canvas.translate(-offsetX + mCanvasTranslateOffset * mCurrPointPos, 0); + float offsetX = mBGCircles.size() / 2f * mCanvasTranslateOffset; + canvas.translate(NumCalcUtil.add(-offsetX, mCanvasTranslateOffset * mCurrPointPos), 0); super.drawBall(canvas, mPath, mPaint); canvas.restore(); } @@ -164,24 +165,24 @@ public class ElasticBallBuilder extends BaseBallBuilder { break; case 3: animation.setDuration(mDurationTime + 1000); - mBallPoints.get(0).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(1).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(11).setOffsetX((1 - animatedValue) * offset); + mBallPoints.get(0).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(1).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(11).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); break; case 4: animation.setDuration(mDurationTime + 1111); - mBallPoints.get(2).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(3).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(4).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(8).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(9).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(10).setOffsetX((1 - animatedValue) * offset); + mBallPoints.get(2).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(3).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(4).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(8).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(9).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(10).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); break; case 5: animation.setDuration(mDurationTime + 1333); - mBallPoints.get(5).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(6).setOffsetX((1 - animatedValue) * offset); - mBallPoints.get(7).setOffsetX((1 - animatedValue) * offset); + mBallPoints.get(5).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(6).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); + mBallPoints.get(7).setOffsetX(NumCalcUtil.subtract(1, animatedValue) * offset); break; default: break; diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/ball/InfectionBallBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/ball/InfectionBallBuilder.java index e09516c..b2f0807 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/ball/InfectionBallBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/ball/InfectionBallBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.ball; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.components.Component; @@ -99,7 +100,7 @@ public class InfectionBallBuilder extends BaseBallBuilder { animation.setDuration(mDurationTime_2); for (int i = 0; i < mBallPoints.size(); i++) { if (i > 10 || i < 8) { - mBallPoints.get(i).setOffsetY(animatedValue * offset + offset); + mBallPoints.get(i).setOffsetY(NumCalcUtil.add(animatedValue * offset, offset)); } else { mBallPoints.get(i).setOffsetY(animatedValue * offset); } @@ -110,9 +111,9 @@ public class InfectionBallBuilder extends BaseBallBuilder { // 无对应的方法 // animation.setInterpolator(new DecelerateInterpolator()); - mBallPoints.get(8).setOffsetY(animatedValue * offset + offset); - mBallPoints.get(9).setOffsetY(animatedValue * offset + offset); - mBallPoints.get(10).setOffsetY(animatedValue * offset + offset); + mBallPoints.get(8).setOffsetY(NumCalcUtil.add(animatedValue * offset, offset)); + mBallPoints.get(9).setOffsetY(NumCalcUtil.add(animatedValue * offset, offset)); + mBallPoints.get(10).setOffsetY(NumCalcUtil.add(animatedValue * offset, offset)); mBallPoints.get(5).setOffsetX(animatedValue * offset); mBallPoints.get(6).setOffsetX(animatedValue * offset); @@ -123,7 +124,7 @@ public class InfectionBallBuilder extends BaseBallBuilder { break; case 4: animation.setDuration(mDurationTime_4); - mPaint.setAlpha((1f - animatedValue) * 1f); + mPaint.setAlpha(NumCalcUtil.subtract(1f, animatedValue) * 1f); break; default: break; diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/ball/IntertwineBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/ball/IntertwineBuilder.java index bd16d33..856fcea 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/ball/IntertwineBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/ball/IntertwineBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.ball; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.components.Component; @@ -69,11 +70,11 @@ public class IntertwineBuilder extends BaseBallBuilder { for (int i = 0; i < mBallPoints.size(); i++) { CirclePoint circlePoint = mBallPoints.get(i); if (2 <= i && i <= 7) { - circlePoint.setOffsetX(-mBallR * (1 - animatedValue)); - circlePoint.setOffsetY(-mBallR * (1 - animatedValue)); + circlePoint.setOffsetX(-mBallR * NumCalcUtil.subtract(1, animatedValue)); + circlePoint.setOffsetY(-mBallR * NumCalcUtil.subtract(1, animatedValue)); } else { - circlePoint.setOffsetX(mBallR * (1 - animatedValue)); - circlePoint.setOffsetY(mBallR * (1 - animatedValue)); + circlePoint.setOffsetX(mBallR * NumCalcUtil.subtract(1, animatedValue)); + circlePoint.setOffsetY(mBallR * NumCalcUtil.subtract(1, animatedValue)); } } break; diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/DoubleCircleBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/DoubleCircleBuilder.java index d87a773..b92222d 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/DoubleCircleBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/DoubleCircleBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.circle; import com.zyao89.view.zloading.ZLoadingBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Arc; @@ -40,8 +41,8 @@ public class DoubleCircleBuilder extends ZLoadingBuilder { //旋转角度 mRotateAngle = 0; //圆范围 - mOuterCircleRectF = new RectFloat(getViewCenterX() - outR, getViewCenterY() - outR, getViewCenterX() + outR, getViewCenterY() + outR); - mInnerCircleRectF = new RectFloat(getViewCenterX() - inR, getViewCenterY() - inR, getViewCenterX() + inR, getViewCenterY() + inR); + mOuterCircleRectF = new RectFloat(NumCalcUtil.subtract(getViewCenterX(), outR), NumCalcUtil.subtract(getViewCenterY(), outR), NumCalcUtil.add(getViewCenterX(), outR), NumCalcUtil.add(getViewCenterY(), outR)); + mInnerCircleRectF = new RectFloat(NumCalcUtil.subtract(getViewCenterX(), inR), NumCalcUtil.subtract(getViewCenterY(), inR), NumCalcUtil.add(getViewCenterX(), inR), NumCalcUtil.add(getViewCenterY(), inR)); mRotateArc = new Arc(); mInnerArc = new Arc(); } diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/PacManBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/PacManBuilder.java index 0d85db6..6d88da4 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/PacManBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/PacManBuilder.java @@ -17,6 +17,7 @@ package com.zyao89.view.zloading.circle; import com.zyao89.view.zloading.ZLoadingBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Arc; @@ -58,7 +59,7 @@ public class PacManBuilder extends ZLoadingBuilder { mArc = new Arc(); float outR = getAllSize(); float inR = outR * 0.7f; - mMaxMoveRange = getIntrinsicWidth() + 2 * inR; + mMaxMoveRange = NumCalcUtil.add(getIntrinsicWidth(), 2 * inR); // 移动距离范围 initPaint(color); @@ -76,7 +77,7 @@ public class PacManBuilder extends ZLoadingBuilder { mMoveDistance = 0; // 移动距离 - mOuterCircleRectF = new RectFloat(getViewCenterX() - inR, getViewCenterY() - inR, getViewCenterX() + inR, getViewCenterY() + inR); + mOuterCircleRectF = new RectFloat(NumCalcUtil.subtract(getViewCenterX(), inR), NumCalcUtil.subtract(getViewCenterY(), inR), NumCalcUtil.add(getViewCenterX(), inR), NumCalcUtil.add(getViewCenterY(), inR)); } private void initPaint(Color color) { @@ -93,7 +94,7 @@ public class PacManBuilder extends ZLoadingBuilder { protected void onDraw(Canvas canvas) { canvas.save(); - canvas.translate(mDefaultStartMoveX + mMoveDistance, 0); + canvas.translate(NumCalcUtil.add(mDefaultStartMoveX, mMoveDistance), 0); canvas.rotate(HorizontalAngle, getViewCenterX(), getViewCenterY()); mArc.setArc(mMouthAngle, 360 - mMouthAngle * 2, true); canvas.drawArc(mOuterCircleRectF, mArc, mFullPaint); @@ -123,15 +124,15 @@ public class PacManBuilder extends ZLoadingBuilder { float step = mMaxMoveRange / half; if (mCurrAnimatorState < half) { HorizontalAngle = 0; - mMoveDistance = mLastMoveDistance + step * animatedValue; + mMoveDistance = NumCalcUtil.add(mLastMoveDistance, step * animatedValue); } else { HorizontalAngle = 180; - mMoveDistance = mLastMoveDistance - step * animatedValue; + mMoveDistance = NumCalcUtil.subtract(mLastMoveDistance, step * animatedValue); } if (mCurrAnimatorState % 2 == 0) { mMouthAngle = (int) (MAX_MOUTH_ANGLE * animatedValue) + 5; } else { - mMouthAngle = (int) (MAX_MOUTH_ANGLE * (1 - animatedValue)) + 5; + mMouthAngle = (int) (MAX_MOUTH_ANGLE * NumCalcUtil.subtract(1, animatedValue)) + 5; } } diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/RotateCircleBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/RotateCircleBuilder.java index 3e7c29e..5682d2b 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/RotateCircleBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/RotateCircleBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.circle; import com.zyao89.view.zloading.ZLoadingBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Canvas; @@ -42,11 +43,11 @@ public class RotateCircleBuilder extends ZLoadingBuilder { private void drawCircles(Canvas canvas) { int all = CIRCLE_NUM; for (int i = 0; i < all; i++) { - int angle = (int) (360 / all * i + mDefaultAngle); - float centerX = getViewCenterX() + (mOuterRadius * cos(angle)); - float centerY = getViewCenterY() + (mOuterRadius * sin(angle)); + int angle = (int) NumCalcUtil.add(360 / all * i, mDefaultAngle); + float centerX = NumCalcUtil.add(getViewCenterX(), mOuterRadius * cos(angle)); + float centerY = NumCalcUtil.add(getViewCenterY(), mOuterRadius * sin(angle)); //mFullPaint.setAlpha(255 / all * i); - canvas.drawCircle(centerX, centerY, i + mInterRadius, mFullPaint); + canvas.drawCircle(centerX, centerY, NumCalcUtil.add(i, mInterRadius), mFullPaint); } } diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/SingleCircleBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/SingleCircleBuilder.java index 08683f2..9ec2131 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/SingleCircleBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/SingleCircleBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.circle; import com.zyao89.view.zloading.ZLoadingBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Arc; @@ -53,7 +54,7 @@ public class SingleCircleBuilder extends ZLoadingBuilder { // 圆范围 mOuterCircleRectF = new RectFloat(); - mOuterCircleRectF.fuse(getViewCenterX() - outR, getViewCenterY() - outR, getViewCenterX() + outR, getViewCenterY() + outR); + mOuterCircleRectF.fuse(NumCalcUtil.subtract(getViewCenterX(), outR), NumCalcUtil.subtract(getViewCenterY(), outR), NumCalcUtil.add(getViewCenterX(), outR), NumCalcUtil.add(getViewCenterY(), outR)); } /** diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/SnakeCircleBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/SnakeCircleBuilder.java index da1c724..7dae6c3 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/circle/SnakeCircleBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/circle/SnakeCircleBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.circle; import com.zyao89.view.zloading.ZLoadingBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Arc; @@ -59,11 +60,11 @@ public class SnakeCircleBuilder extends ZLoadingBuilder { mRotateAngle = 0; // 圆范围 mOuterCircleRectF = new RectFloat(); - mOuterCircleRectF.modify(getViewCenterX() - mOuterRF, getViewCenterY() - mOuterRF, getViewCenterX() - + mOuterRF, getViewCenterY() + mOuterRF); + mOuterCircleRectF.modify(NumCalcUtil.subtract(getViewCenterX(), mOuterRF), NumCalcUtil.subtract(getViewCenterY(), mOuterRF), + NumCalcUtil.add(getViewCenterX(), mOuterRF), NumCalcUtil.add(getViewCenterY(), mOuterRF)); mInterCircleRectF = new RectFloat(); - mInterCircleRectF.modify(getViewCenterX() - mInterRF, getViewCenterY() - mInterRF, getViewCenterX() - + mInterRF, getViewCenterY() + mInterRF); + mInterCircleRectF.modify(NumCalcUtil.subtract(getViewCenterX(), mInterRF), NumCalcUtil.subtract(getViewCenterY(), mInterRF), + NumCalcUtil.add(getViewCenterX(), mInterRF), NumCalcUtil.add(getViewCenterY(), mInterRF)); mOuterCircleArc = new Arc(); mInterCircleArc = new Arc(); initPathMeasure(); @@ -97,12 +98,12 @@ public class SnakeCircleBuilder extends ZLoadingBuilder { mPath = new Path(); float pointOffset = mOuterRF * 0.3f; float pointOffsetHalf = mOuterRF * 0.3f * 0.5f; - mPath.moveTo(getViewCenterX() - mOuterRF * 0.8f, getViewCenterY()); - mPath.lineTo(getViewCenterX() - pointOffset, getViewCenterY()); - mPath.lineTo(getViewCenterX() - pointOffsetHalf, getViewCenterY() + pointOffsetHalf); - mPath.lineTo(getViewCenterX() + pointOffsetHalf, getViewCenterY() - pointOffsetHalf); - mPath.lineTo(getViewCenterX() + pointOffset, getViewCenterY()); - mPath.lineTo(getViewCenterX() + mOuterRF * 0.8f, getViewCenterY()); + mPath.moveTo(NumCalcUtil.subtract(getViewCenterX(), mOuterRF * 0.8f), getViewCenterY()); + mPath.lineTo(NumCalcUtil.subtract(getViewCenterX(), pointOffset), getViewCenterY()); + mPath.lineTo(NumCalcUtil.subtract(getViewCenterX(), pointOffsetHalf), NumCalcUtil.add(getViewCenterY(), pointOffsetHalf)); + mPath.lineTo(NumCalcUtil.add(getViewCenterX(), pointOffsetHalf), NumCalcUtil.subtract(getViewCenterY(), pointOffsetHalf)); + mPath.lineTo(NumCalcUtil.add(getViewCenterX(), pointOffset), getViewCenterY()); + mPath.lineTo(NumCalcUtil.add(getViewCenterX(), mOuterRF * 0.8f), getViewCenterY()); } @Override @@ -161,7 +162,7 @@ public class SnakeCircleBuilder extends ZLoadingBuilder { @Override protected void computeUpdateValue(AnimatorValue animation, float animatedValue) { mRotateAngle = 360 * animatedValue; - mAntiRotateAngle = 360 * (1 - animatedValue); + mAntiRotateAngle = 360 * NumCalcUtil.subtract(1, animatedValue); switch (mCurrAnimatorState) { case 0: resetDrawPath(); diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/clock/CircleBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/clock/CircleBuilder.java index 5bda34b..3522ce5 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/clock/CircleBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/clock/CircleBuilder.java @@ -2,6 +2,7 @@ package com.zyao89.view.zloading.clock; import com.zyao89.view.zloading.ZLoadingBuilder; import com.zyao89.view.zloading.util.Log; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.*; @@ -29,14 +30,15 @@ public class CircleBuilder extends ZLoadingBuilder { private void initValues(Context context) { float allSize = getAllSize(); - float innerRadius = allSize - dip2px(context, 3); + float innerRadius = NumCalcUtil.subtract(allSize, dip2px(context, 3)); mInnerCircleArc = new Arc(); mStartAngle = DEFAULT_ANGLE; mEndAngle = DEFAULT_ANGLE; viewCenterX = getViewCenterX(); viewCenterY = getViewCenterY(); - mInnerCircleRectF = new RectFloat(viewCenterX - innerRadius, viewCenterY - innerRadius, - viewCenterX + innerRadius, viewCenterY + innerRadius); + mInnerCircleRectF = new RectFloat(NumCalcUtil.subtract(viewCenterX, innerRadius), + NumCalcUtil.subtract(viewCenterY, innerRadius), + NumCalcUtil.add(viewCenterX, innerRadius), NumCalcUtil.add(viewCenterY, innerRadius)); } @Override @@ -49,7 +51,7 @@ public class CircleBuilder extends ZLoadingBuilder { @Override protected void onDraw(Canvas canvas) { canvas.save(); - mInnerCircleArc.setArc(mStartAngle, mEndAngle - mStartAngle, true); + mInnerCircleArc.setArc(mStartAngle, NumCalcUtil.subtract(mEndAngle, mStartAngle), true); canvas.drawArc(mInnerCircleRectF, mInnerCircleArc, mPaint); canvas.restore(); } @@ -72,9 +74,9 @@ public class CircleBuilder extends ZLoadingBuilder { @Override protected void computeUpdateValue(AnimatorValue animation, float animatedValue) { if (mIsFirstState) { - mEndAngle = animatedValue * 360 + DEFAULT_ANGLE; + mEndAngle = NumCalcUtil.add(animatedValue * 360, DEFAULT_ANGLE); } else { - mStartAngle = animatedValue * 360 + DEFAULT_ANGLE; + mStartAngle = NumCalcUtil.add(animatedValue * 360, DEFAULT_ANGLE); } } diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/clock/ClockBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/clock/ClockBuilder.java index 87fbb00..108e114 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/clock/ClockBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/clock/ClockBuilder.java @@ -1,5 +1,6 @@ package com.zyao89.view.zloading.clock; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.render.Canvas; import ohos.agp.render.ColorFilter; import ohos.agp.render.Paint; @@ -32,17 +33,19 @@ public class ClockBuilder extends CircleBuilder { private void initOptions(Context context) { float allSize = getAllSize(); mCircleSpace = 4; - mOuterRadius = allSize - mCircleSpace; + mOuterRadius = NumCalcUtil.subtract(allSize, mCircleSpace); float btnWidth = dip2px(context, 8); float btnHeight = dip2px(context, 3); float bottomBtnWidth = dip2px(context, 3); float bottomBtnHeight = dip2px(context, 2); - mBtnRectF = new RectFloat(getViewCenterX() - btnWidth / 2, getViewCenterY() - allSize - - bottomBtnHeight - btnHeight, getViewCenterX() + btnWidth / 2, - getViewCenterY() - allSize - bottomBtnHeight); - mBottomBtnRectF = new RectFloat(getViewCenterX() - bottomBtnWidth / 2, - getViewCenterY() - allSize - bottomBtnHeight, - getViewCenterX() + bottomBtnWidth / 2, getViewCenterY() - allSize); + mBtnRectF = new RectFloat(NumCalcUtil.subtract(getViewCenterX(), btnWidth / 2), + NumCalcUtil.subtract(NumCalcUtil.subtract(NumCalcUtil.subtract(getViewCenterY(), allSize), bottomBtnHeight), btnHeight), + NumCalcUtil.add(getViewCenterX(), btnWidth / 2), + NumCalcUtil.subtract(NumCalcUtil.subtract(getViewCenterY(), allSize), bottomBtnHeight)); + mBottomBtnRectF = new RectFloat(NumCalcUtil.subtract(getViewCenterX(), bottomBtnWidth / 2), + NumCalcUtil.subtract(NumCalcUtil.subtract(getViewCenterY(), allSize), bottomBtnHeight), + NumCalcUtil.add(getViewCenterX(), bottomBtnWidth / 2), + NumCalcUtil.subtract(getViewCenterY(), allSize)); } private void createStrokePaint(Color color) { diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/path/MusicPathBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/path/MusicPathBuilder.java index 6e1df5c..f9dbe00 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/path/MusicPathBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/path/MusicPathBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.path; import com.zyao89.view.zloading.base.BaseStateBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Canvas; @@ -56,14 +57,14 @@ public class MusicPathBuilder extends BaseStateBuilder { float space = mR * 2 / MUSIC_LINE_COUNT; // 起点 - float startXP = getViewCenterX() - mR; - float startYP = getViewCenterY() + mR; + float startXP = NumCalcUtil.subtract(getViewCenterX(), mR); + float startYP = NumCalcUtil.add(getViewCenterY(), mR); // 五线谱 for (int i = 0; i < MUSIC_LINE_COUNT; i++) { Path path = new Path(); - path.moveTo(startXP, startYP - (i * space)); - path.lineTo(startXP + lineW, startYP - (i * space)); + path.moveTo(startXP, NumCalcUtil.subtract(startYP, i * space)); + path.lineTo(NumCalcUtil.add(startXP, lineW), NumCalcUtil.subtract(startYP, i * space)); mMusicPaths.add(path); } } @@ -85,22 +86,22 @@ public class MusicPathBuilder extends BaseStateBuilder { mMusicParams = new LinkedList<>(); float musicPointHeight = mR * 2 / MUSIC_LINE_COUNT; - float left = getViewCenterX() - musicWidth / 2; - float right = getViewCenterX() + musicWidth / 2; - float top = getViewCenterY() + musicHeight - musicPointHeight * 1.5f; - float bottom = getViewCenterY() + musicHeight - musicPointHeight * 0.5f; + float left = NumCalcUtil.subtract(getViewCenterX(), musicWidth / 2); + float right = NumCalcUtil.add(getViewCenterX(), musicWidth / 2); + float top = NumCalcUtil.subtract(NumCalcUtil.add(getViewCenterY(), musicHeight), musicPointHeight * 1.5f); + float bottom = NumCalcUtil.subtract(NumCalcUtil.add(getViewCenterY(), musicHeight), musicPointHeight * 0.5f); - RectFloat rectF = new RectFloat(left - mR * 0.5f, top, right - mR * 0.5f, bottom); + RectFloat rectF = new RectFloat(NumCalcUtil.subtract(left, mR * 0.5f), top, NumCalcUtil.subtract(right, mR * 0.5f), bottom); float offsetX = (float) (musicWidth * 0.5 * Math.cos(75)); - Point sPointF = new Point(rectF.right + offsetX, rectF.getVerticalCenter()); - Point ePointF = new Point(rectF.right + offsetX, rectF.getVerticalCenter() - musicHeight); + Point sPointF = new Point(NumCalcUtil.add(rectF.right, offsetX), rectF.getVerticalCenter()); + Point ePointF = new Point(NumCalcUtil.add(rectF.right, offsetX), NumCalcUtil.subtract(rectF.getVerticalCenter(), musicHeight)); MusicParam musicParam = new MusicParam(rectF, sPointF, ePointF); mMusicParams.add(musicParam); - rectF = new RectFloat(left + mR * 0.5f, top - musicPointHeight, right + mR * 0.5f, bottom - musicPointHeight); + rectF = new RectFloat(NumCalcUtil.add(left, mR * 0.5f), NumCalcUtil.subtract(top, musicPointHeight), NumCalcUtil.add(right, mR * 0.5f), NumCalcUtil.subtract(bottom, musicPointHeight)); offsetX = (float) (musicWidth * 0.5 * Math.cos(75)); - sPointF = new Point(rectF.right + offsetX, rectF.getVerticalCenter()); - ePointF = new Point(rectF.right + offsetX, rectF.getVerticalCenter() - musicHeight); + sPointF = new Point(NumCalcUtil.add(rectF.right, offsetX), rectF.getVerticalCenter()); + ePointF = new Point(NumCalcUtil.add(rectF.right, offsetX), NumCalcUtil.subtract(rectF.getVerticalCenter(), musicHeight)); musicParam = new MusicParam(rectF, sPointF, ePointF); mMusicParams.add(musicParam); } @@ -119,9 +120,9 @@ public class MusicPathBuilder extends BaseStateBuilder { float start = (float) (stop - ((0.5 - Math.abs(animatedValue - 0.5)) * 200f)); mPathMeasure.getSegment(start, stop, mMusicDrawPaths.get(i), true); } else { - float stop = mPathMeasure.getLength() * (1 - animatedValue); - float start = (float) (stop - ((0.5 - Math.abs((1 - animatedValue) - 0.5)) * 200f)); - mPathMeasure.getSegment(start, stop, mMusicDrawPaths.get(i), true); + double stop = mPathMeasure.getLength() * NumCalcUtil.subtract(1, animatedValue); + float start = (float) (stop - ((0.5 - Math.abs((1 - (double)animatedValue) - 0.5)) * 200f)); + mPathMeasure.getSegment(start, (float) stop, mMusicDrawPaths.get(i), true); } } break; @@ -135,7 +136,7 @@ public class MusicPathBuilder extends BaseStateBuilder { mPathMeasure.getSegment(start, stop, mMusicDrawPaths.get(i), true); } else { float stop = mPathMeasure.getLength(); - float start = mPathMeasure.getLength() * (1 - animatedValue); + float start = mPathMeasure.getLength() * NumCalcUtil.subtract(1, animatedValue); mPathMeasure.getSegment(start, stop, mMusicDrawPaths.get(i), true); } } @@ -151,7 +152,7 @@ public class MusicPathBuilder extends BaseStateBuilder { if (i % 2 == 0) { musicParam.setOffsetY(animatedValue * space); } else { - musicParam.setOffsetY((1 - animatedValue) * space); + musicParam.setOffsetY(NumCalcUtil.subtract(1, animatedValue) * space); } } break; @@ -163,7 +164,7 @@ public class MusicPathBuilder extends BaseStateBuilder { for (int i = 0; i < mMusicParams.size(); i++) { MusicParam musicParam = mMusicParams.get(i); if (i % 2 == 0) { - musicParam.setOffsetY((1 - animatedValue) * space); + musicParam.setOffsetY(NumCalcUtil.subtract(1, animatedValue) * space); } else { musicParam.setOffsetY(animatedValue * space); } @@ -191,7 +192,7 @@ public class MusicPathBuilder extends BaseStateBuilder { RectFloat oldCircleRectF = musicParam.getCircleRectF(); RectFloat circleRectF = new RectFloat(oldCircleRectF); float offsetY = musicParam.getOffsetY(); - circleRectF.fuse(oldCircleRectF.left, oldCircleRectF.top - offsetY, oldCircleRectF.right, oldCircleRectF.bottom - offsetY); + circleRectF.fuse(oldCircleRectF.left, NumCalcUtil.subtract(oldCircleRectF.top, offsetY), oldCircleRectF.right, NumCalcUtil.subtract(oldCircleRectF.bottom, offsetY)); canvas.rotate(75, circleRectF.getHorizontalCenter(), circleRectF.getVerticalCenter()); mPaint.setStyle(Paint.Style.FILLANDSTROKE_STYLE); canvas.drawOval(circleRectF, mPaint); diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/path/SearchPathBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/path/SearchPathBuilder.java index 6fe9d13..865cd75 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/path/SearchPathBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/path/SearchPathBuilder.java @@ -18,6 +18,7 @@ package com.zyao89.view.zloading.path; import com.zyao89.view.zloading.ZLoadingBuilder; import com.zyao89.view.zloading.util.FloatRange; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.*; @@ -70,13 +71,13 @@ public class SearchPathBuilder extends ZLoadingBuilder private void initPaths() { float r = mR * 0.4f; mPath = new Path(); - mPath.addArc(new RectFloat(getViewCenterX() - mR, getViewCenterY() - mR, getViewCenterX() + mR, getViewCenterY() + mR), 45, 359.9f); + mPath.addArc(new RectFloat(NumCalcUtil.subtract(getViewCenterX(), mR), NumCalcUtil.subtract(getViewCenterY(), mR), NumCalcUtil.add(getViewCenterX(), mR), NumCalcUtil.add(getViewCenterY(), mR)), 45, 359.9f); mPathMeasure.setPath(mPath, false); float[] pos = new float[2]; mPathMeasure.getPosTan(0, pos, null); mPathZoom = new Path(); - mPathZoom.addArc(new RectFloat(getViewCenterX() - r, getViewCenterY() - r, getViewCenterX() + r, getViewCenterY() + r), 45, 359.9f); + mPathZoom.addArc(new RectFloat(NumCalcUtil.subtract(getViewCenterX(), r), NumCalcUtil.subtract(getViewCenterY(), r), NumCalcUtil.add(getViewCenterX(), r), NumCalcUtil.add(getViewCenterY(), r)), 45, 359.9f); mPathZoom.lineTo(pos[0], pos[1]); } @@ -128,7 +129,7 @@ public class SearchPathBuilder extends ZLoadingBuilder case 3: mPathMeasure.setPath(mPathZoom, false); stop = mPathMeasure.getLength(); - start = stop * (1 - animatedValue); + start = stop * NumCalcUtil.subtract(1, animatedValue); mPathMeasure.getSegment(start, stop, mDrawPath, true); break; default: diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/path/StairsPathBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/path/StairsPathBuilder.java index 7e88f94..dc56607 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/path/StairsPathBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/path/StairsPathBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.path; import com.zyao89.view.zloading.base.BaseStateBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.components.Component; @@ -41,17 +42,17 @@ public class StairsPathBuilder extends BaseStateBuilder { private void initPaths() { mPath = new Path(); float space = mR * 2 / FLOOR_NUM; - float startXP = getViewCenterX() - mR; - float startYP = getViewCenterY() + mR; + float startXP = NumCalcUtil.subtract(getViewCenterX(), mR); + float startYP = NumCalcUtil.add(getViewCenterY(), mR); mPath.moveTo(startXP, startYP); for (int i = 0; i < FLOOR_NUM; i++) { - mPath.lineTo(i * space + startXP, startYP - space * (i + 1)); - mPath.lineTo((i + 1) * space + startXP, startYP - space * (i + 1)); + mPath.lineTo(NumCalcUtil.add(i * space, startXP), NumCalcUtil.subtract(startYP, space * (i + 1))); + mPath.lineTo(NumCalcUtil.add((i + 1) * space, startXP), NumCalcUtil.subtract(startYP, space * (i + 1))); } mPathFinal = new Path(mPath); - mPathFinal.lineTo((FLOOR_NUM) * space + startXP, startYP); + mPathFinal.lineTo(NumCalcUtil.add(FLOOR_NUM * space, startXP), startYP); mPathFinal.lineTo(startXP, startYP); } @@ -81,7 +82,7 @@ public class StairsPathBuilder extends BaseStateBuilder { case 3: resetDrawPath(); mPathMeasure.setPath(mPathFinal, false); - stop = mPathMeasure.getLength() * (1 - animatedValue); + stop = mPathMeasure.getLength() * NumCalcUtil.subtract(1, animatedValue); start = 0; mPathMeasure.getSegment(start, stop, mDrawPath, true); break; diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/rect/ChartRectBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/rect/ChartRectBuilder.java index 8516d1c..77a7984 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/rect/ChartRectBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/rect/ChartRectBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.rect; import com.zyao89.view.zloading.base.BaseStateBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.AnimatorValue; import ohos.agp.components.Component; import ohos.agp.render.Canvas; @@ -59,8 +60,8 @@ public class ChartRectBuilder extends BaseStateBuilder { float floorHeight = mR * 2 / SUM_NUM; float space = floorHeight * 0.5f; // 起点 - float startXP = getViewCenterX() - mR; - float startYP = getViewCenterY() + mR; + float startXP = NumCalcUtil.subtract(getViewCenterX(), mR); + float startYP = NumCalcUtil.add(getViewCenterY(), mR); // 清 mStairRectF.clear(); @@ -68,16 +69,16 @@ public class ChartRectBuilder extends BaseStateBuilder { if (i > mCurrStateNum) { // 限制层 break; } - float offsetHV = (0.5f - Math.abs(mCurrAnimatedValue - 0.5f)) * floorHeight; + float offsetHV = NumCalcUtil.subtract(0.5f, Math.abs(NumCalcUtil.subtract(mCurrAnimatedValue, 0.5f))) * floorHeight; int j = i % 3; if (i == mCurrStateNum) { // 当前 - mStairRectF.modify(startXP + i * floorHeight, - startYP - (j + 1) * floorHeight * mCurrAnimatedValue, - startXP + (i + 1) * floorHeight - space, startYP); + mStairRectF.modify(NumCalcUtil.add(startXP, i * floorHeight), + NumCalcUtil.subtract(startYP, (j + 1) * floorHeight * mCurrAnimatedValue), + NumCalcUtil.subtract(NumCalcUtil.add(startXP, (i + 1) * floorHeight), space), startYP); } else { - mStairRectF.modify(startXP + i * floorHeight, - startYP - (j + 1) * floorHeight - offsetHV, - startXP + (i + 1) * floorHeight - space, startYP); + mStairRectF.modify(NumCalcUtil.add(startXP, i * floorHeight), + NumCalcUtil.subtract(NumCalcUtil.subtract(startYP, (j + 1) * floorHeight), offsetHV), + NumCalcUtil.subtract(NumCalcUtil.add(startXP, (i + 1) * floorHeight), space), startYP); } canvas.drawRect(mStairRectF, mPaint); } diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/rect/StairsRectBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/rect/StairsRectBuilder.java index 440dcfa..335d638 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/rect/StairsRectBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/rect/StairsRectBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.rect; import com.zyao89.view.zloading.base.BaseStateBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Canvas; @@ -59,8 +60,8 @@ public class StairsRectBuilder extends BaseStateBuilder { float space = floorHeight * 0.5f; // 起点 - float startXP = getViewCenterX() - mR; - float startYP = getViewCenterY() + mR; + float startXP = NumCalcUtil.subtract(getViewCenterX(), mR); + float startYP = NumCalcUtil.add(getViewCenterY(), mR); // 清 mStairRectF.clear(); @@ -69,9 +70,9 @@ public class StairsRectBuilder extends BaseStateBuilder { break; } if (i == mCurrFloorNum) { // 当前台阶 - mStairRectF.modify(startXP, startYP - (i + 1) * floorHeight + space, (startXP + (i + 1) * floorHeight) * mCurrAnimatedValue, startYP - i * floorHeight); + mStairRectF.modify(startXP, NumCalcUtil.add(NumCalcUtil.subtract(startYP, (i + 1) * floorHeight), space), NumCalcUtil.add(startXP, (i + 1) * floorHeight) * mCurrAnimatedValue, NumCalcUtil.subtract(startYP, i * floorHeight)); } else { // 非当前台阶 - mStairRectF.modify(startXP, startYP - (i + 1) * floorHeight + space, startXP + (i + 1) * floorHeight, startYP - i * floorHeight); + mStairRectF.modify(startXP, NumCalcUtil.add(NumCalcUtil.subtract(startYP, (i + 1) * floorHeight), space), NumCalcUtil.add(startXP, (i + 1) * floorHeight), NumCalcUtil.subtract(startYP, i * floorHeight)); } canvas.drawRect(mStairRectF, mPaint); } diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/star/LeafBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/star/LeafBuilder.java index 7cb5476..8b5dc2a 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/star/LeafBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/star/LeafBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.star; import com.zyao89.view.zloading.ZLoadingBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.components.Component; @@ -109,26 +110,26 @@ public class LeafBuilder extends ZLoadingBuilder { int angle = 360 / num; int roundSize = 5; // 圆角弧度 int offsetAngle = angle / 2; - path.moveTo(getViewCenterX() + mStarOutMidR * cos(startAngle - roundSize), - getViewCenterY() + mStarOutMidR * sin(startAngle - roundSize)); + path.moveTo(NumCalcUtil.add(getViewCenterX(), mStarOutMidR * cos(startAngle - roundSize)), + NumCalcUtil.add(getViewCenterY(), mStarOutMidR * sin(startAngle - roundSize))); for (int i = 0; i < num; i++) { int value = angle * i + startAngle; - path.lineTo(getViewCenterX() + mStarOutMidR * cos(value - roundSize), - getViewCenterY() + mStarOutMidR * sin(value - roundSize)); + path.lineTo(NumCalcUtil.add(getViewCenterX(), mStarOutMidR * cos(value - roundSize)), + NumCalcUtil.add(getViewCenterY(), mStarOutMidR * sin(value - roundSize))); // 圆角 - path.quadTo(getViewCenterX() + mStarOutR * cos(value), - getViewCenterY() + mStarOutR * sin(value), - getViewCenterX() + mStarOutMidR * cos(value + roundSize), - getViewCenterY() + mStarOutMidR * sin(value + roundSize)); - path.lineTo(getViewCenterX() + mStarInR * cos(value + offsetAngle - roundSize), - getViewCenterY() + mStarInR * sin(value + offsetAngle - roundSize)); + path.quadTo(NumCalcUtil.add(getViewCenterX(), mStarOutR * cos(value)), + NumCalcUtil.add(getViewCenterY(), mStarOutR * sin(value)), + NumCalcUtil.add(getViewCenterX(), mStarOutMidR * cos(value + roundSize)), + NumCalcUtil.add(getViewCenterY(), mStarOutMidR * sin(value + roundSize))); + path.lineTo(NumCalcUtil.add(getViewCenterX(), mStarInR * cos(value + offsetAngle - roundSize)), + NumCalcUtil.add(getViewCenterY(), mStarInR * sin(value + offsetAngle - roundSize))); // 内圆角 - path.quadTo(getViewCenterX() + mStarInMidR * cos(value + offsetAngle), - getViewCenterY() + mStarInMidR * sin(value + offsetAngle), - getViewCenterX() + mStarInR * cos(value + offsetAngle + roundSize), - getViewCenterY() + mStarInR * sin(value + offsetAngle + roundSize)); + path.quadTo(NumCalcUtil.add(getViewCenterX(), mStarInMidR * cos(value + offsetAngle)), + NumCalcUtil.add(getViewCenterY(), mStarInMidR * sin(value + offsetAngle)), + NumCalcUtil.add(getViewCenterX(), mStarInR * cos(value + offsetAngle + roundSize)), + NumCalcUtil.add(getViewCenterY(), mStarInR * sin(value + offsetAngle + roundSize))); } path.close(); } @@ -156,10 +157,10 @@ public class LeafBuilder extends ZLoadingBuilder { mRotateAngle = (int) (360 * animatedValue); break; case 1: - mRotateAngle = (int) (360 * (1 - animatedValue)); + mRotateAngle = (int) (360 * NumCalcUtil.subtract(1, animatedValue)); break; case 2: - mStarOutMidR = getAllSize() * (1 - animatedValue); + mStarOutMidR = getAllSize() * NumCalcUtil.subtract(1, animatedValue); break; } } diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/star/StarBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/star/StarBuilder.java index 4492650..983fefa 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/star/StarBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/star/StarBuilder.java @@ -1,6 +1,7 @@ package com.zyao89.view.zloading.star; import com.zyao89.view.zloading.ZLoadingBuilder; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.render.Canvas; @@ -32,16 +33,16 @@ public class StarBuilder extends ZLoadingBuilder { // 开始偏移角度 private int mStartAngle; private Path mStarPath; - private float mOffsetTranslateY; + private double mOffsetTranslateY; private RectFloat mOvalRectF; - private float mShadowWidth; + private double mShadowWidth; private AnimatorValue mShadowAnimator; private final AnimatorValue.ValueUpdateListener mAnimatorUpdateListener = new AnimatorValue.ValueUpdateListener() { @Override public void onUpdate(AnimatorValue animatorValue, float v) { mOffsetTranslateY = getViewCenterY() * 0.4f * v; - mShadowWidth = (mOffsetTranslateY + 10) * 0.9f; + mShadowWidth = (mOffsetTranslateY + 10) * (double) 0.9f; } }; @@ -67,8 +68,8 @@ public class StarBuilder extends ZLoadingBuilder { } private void initValue(Context context) { - float allSize = getAllSize(); - mStarOutR = allSize - dip2px(context, 5); + double allSize = getAllSize(); + mStarOutR = (float) (allSize - dip2px(context, 5)); mStarOutMidR = mStarOutR * 0.9f; mStarInR = mStarOutMidR * 0.6f; mStarInMidR = mStarInR * 0.9f; @@ -86,11 +87,11 @@ public class StarBuilder extends ZLoadingBuilder { @Override protected void onDraw(Canvas canvas) { canvas.save(); - canvas.translate(0, mOffsetTranslateY); + canvas.translate(0, (float) mOffsetTranslateY); canvas.rotate(mStartAngle, getViewCenterX(), getViewCenterY()); canvas.drawPath(mStarPath, mFullPaint); canvas.restore(); - mOvalRectF.fuse(getViewCenterX() - mShadowWidth, getIntrinsicHeight() - 20, getViewCenterX() + mShadowWidth, getIntrinsicHeight() - 10); + mOvalRectF.fuse((float)((double)getViewCenterX() - mShadowWidth), (float) ((double)getIntrinsicHeight() - 20), (float)((double)getViewCenterX() + mShadowWidth), (float) ((double)getIntrinsicHeight() - 10)); canvas.drawOval(mOvalRectF, mFullPaint); } @@ -106,26 +107,26 @@ public class StarBuilder extends ZLoadingBuilder { int angle = 360 / num; int roundSize = 5; int offsetAngle = angle / 2; - path.moveTo(getViewCenterX() + mStarOutMidR * cos(startAngle - roundSize), - getViewCenterY() + mStarOutMidR * sin(startAngle - roundSize)); + path.moveTo(NumCalcUtil.add(getViewCenterX(), mStarOutMidR * cos(startAngle - roundSize)), + (float) ((double)getViewCenterY() + mStarOutMidR * sin(startAngle - roundSize))); for (int i = 0; i < num; i++) { int value = angle * i + startAngle; - path.lineTo(getViewCenterX() + mStarOutMidR * cos(value - roundSize), - getViewCenterY() + mStarOutMidR * sin(value - roundSize)); + path.lineTo(NumCalcUtil.add(getViewCenterX(), mStarOutMidR * cos(value - roundSize)), + (float) ((double)getViewCenterY() + mStarOutMidR * sin(value - roundSize))); // 圆角 - path.quadTo(getViewCenterX() + mStarOutR * cos(value), getViewCenterY() - + mStarOutR * sin(value), getViewCenterX() - + mStarOutMidR * cos(value + roundSize), - getViewCenterY() + mStarOutMidR * sin(value + roundSize)); - path.lineTo(getViewCenterX() + mStarInR * cos(value + offsetAngle - roundSize), - getViewCenterY() + mStarInR * sin(value + offsetAngle - roundSize)); + path.quadTo((float) ((double)getViewCenterX() + mStarOutR * cos(value)), (float) ((double)getViewCenterY() + + mStarOutR * sin(value)), (float) ((double)getViewCenterX() + + mStarOutMidR * cos(value + roundSize)), + (float) ((double)getViewCenterY() + mStarOutMidR * sin(value + roundSize))); + path.lineTo((float) ((double)getViewCenterX() + mStarInR * cos(value + offsetAngle - roundSize)), + (float) ((double)getViewCenterY() + mStarInR * sin(value + offsetAngle - roundSize))); // 内圆角 - path.quadTo(getViewCenterX() + mStarInMidR * cos(value + offsetAngle), - getViewCenterY() + mStarInMidR * sin(value + offsetAngle), getViewCenterX() - + mStarInR * cos(value + offsetAngle + roundSize), - getViewCenterY() + mStarInR * sin(value + offsetAngle + roundSize)); + path.quadTo((float) ((double)getViewCenterX() + mStarInMidR * cos(value + offsetAngle)), + (float) ((double)getViewCenterY() + mStarInMidR * sin(value + offsetAngle)), (float) ((double)getViewCenterX() + + mStarInR * cos(value + offsetAngle + roundSize)), + (float) ((double)getViewCenterY() + mStarInR * sin(value + offsetAngle + roundSize))); } path.close(); return path; diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/text/TextBuilder.java b/zloadingview/src/main/java/com/zyao89/view/zloading/text/TextBuilder.java index 0db310c..a00f6c8 100644 --- a/zloadingview/src/main/java/com/zyao89/view/zloading/text/TextBuilder.java +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/text/TextBuilder.java @@ -2,6 +2,7 @@ package com.zyao89.view.zloading.text; import com.zyao89.view.zloading.ZLoadingBuilder; import com.zyao89.view.zloading.util.FloatRange; +import com.zyao89.view.zloading.util.NumCalcUtil; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorValue; import ohos.agp.components.Text; @@ -45,8 +46,8 @@ public class TextBuilder extends ZLoadingBuilder { Paint paint = new Paint(mTextPaint); paint.setColor(color); paint.setAlpha(BASE_ALPHA); - canvas.drawText(mTextPaint, mTextChars.substring(0, mDrawTextCount), getViewCenterX() - measureText / 2, getViewCenterY()); - canvas.drawText(paint, mTextChars, getViewCenterX() - measureText / 2, getViewCenterY()); + canvas.drawText(mTextPaint, mTextChars.substring(0, mDrawTextCount), NumCalcUtil.subtract(getViewCenterX(), measureText / 2), getViewCenterY()); + canvas.drawText(paint, mTextChars, NumCalcUtil.subtract(getViewCenterX(), measureText / 2), getViewCenterY()); } } @@ -69,7 +70,7 @@ public class TextBuilder extends ZLoadingBuilder { @Override protected void computeUpdateValue(AnimatorValue animation, float animatedValue) { - mTextPaint.setAlpha( (animatedValue * 0.6f) + BASE_ALPHA); + mTextPaint.setAlpha( NumCalcUtil.add(animatedValue * 0.6f, BASE_ALPHA)); } @Override diff --git a/zloadingview/src/main/java/com/zyao89/view/zloading/util/NumCalcUtil.java b/zloadingview/src/main/java/com/zyao89/view/zloading/util/NumCalcUtil.java new file mode 100644 index 0000000..c70c8ae --- /dev/null +++ b/zloadingview/src/main/java/com/zyao89/view/zloading/util/NumCalcUtil.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain an copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.zyao89.view.zloading.util; + +import java.math.BigDecimal; + +/** + * 浮点数计算工具类 + * + * @since 2021-05-17 + */ +public class NumCalcUtil { + private NumCalcUtil() { + } + /** + * 加法 + * + * @param num1 + * @param num2 + * @return 结果 + */ + public static float add(float num1, float num2) { + return new BigDecimal(num1).add(new BigDecimal(num2)).floatValue(); + } + + /** + * 减法 + * + * @param num1 + * @param num2 + * @return 结果 + */ + public static float subtract(float num1, float num2) { + return new BigDecimal(num1).subtract(new BigDecimal(num2)).floatValue(); + } + + /** + * 除法 + * + * @param num1 + * @param num2 + * @return 结果 + */ + public static float divide(float num1, float num2) { + return new BigDecimal(num1).divide(new BigDecimal(num2)).floatValue(); + } + + /** + * 乘法 + * + * @param num1 + * @param num2 + * @return 结果 + */ + public static float multiply(float num1, float num2) { + return new BigDecimal(num1).multiply(new BigDecimal(num2)).floatValue(); + } +} -- Gitee