From 54605f1af1181c257fb7a8e8e7bac1d0f26533b4 Mon Sep 17 00:00:00 2001 From: tanjunshui Date: Wed, 8 Sep 2021 15:00:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9setWaves=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 46 +++++++++++++++++-- app/src/main/config.json | 1 - build.gradle | 4 +- .../java/com/scwang/wave/MultiWaveHeader.java | 27 +++++++---- 4 files changed, 63 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index b136aa2..eea49c8 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ fork地址:https://github.com/scwang90/MultiWaveHeader fork版本号/日期:release / 2020/6/7 -# MultiWaveHeader_HarmonyOS +# MultiWaveHeader -MultiWaveHeader_HarmonyOS 是一个可以高度定制每个波形的水波控件。 +MultiWaveHeader 是一个可以高度定制每个波形的水波控件。 原项目Readme地址:https://github.com/scwang90/MultiWaveHeader/blob/release/README.md @@ -49,7 +49,11 @@ allprojects{ } implementation 'io.openharmony.tpc.thirdlib:MultiWaveHeader:1.0.1' ``` +注意: +在sdk6,DevEco Studio 2.2 Beta1下项目可直接运行 +如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, +并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 ## 使用方法 ##### XML @@ -113,7 +117,43 @@ multiWaveHeader.getCloseColor(); //获取水波纹是否正在运行 multiWaveHeader.isRunning(); ``` - + +#### 可以高度定制每一条水波. + +###### java +```java + MultiWaveHeader waveHeader = findViewById(R.id.waveHeader); + + String[] waves = new String[]{ + "70,25,1.4,1.4,-26",//wave-1:offsetX(dp),offsetY(dp),scaleX,scaleY,velocity(dp/s) + "100,5,1.4,1.2,15", + "420,0,1.15,1,-10",//wave-3:水平偏移(dp),竖直偏移(dp),水平拉伸,竖直拉伸,速度(dp/s) + "520,10,1.7,1.5,20", + "220,0,1,1,-15", + }; + waveHeader.setWaves(String.join(" ", Arrays.asList(waves)));// custom + waveHeader.setWaves("PairWave");// default two waves + waveHeader.setWaves("MultiWave");// default five waves + +``` + +###### xml +```xml + +``` +注意:mwhWaves的值要设置对,不然组件会渲染不成功 + License -- ```Copyright 2017 scwang90 diff --git a/app/src/main/config.json b/app/src/main/config.json index 92ec45b..977c9c3 100644 --- a/app/src/main/config.json +++ b/app/src/main/config.json @@ -40,7 +40,6 @@ "name": "com.scwang.wave.app.MainAbility", "icon": "$media:icon", "description": "$string:mainability_description", - "label": "MultiWaveHeader_HarmonyOS", "type": "page", "launchType": "standard" } diff --git a/build.gradle b/build.gradle index 6cffe32..2ac7b7a 100644 --- a/build.gradle +++ b/build.gradle @@ -19,8 +19,8 @@ buildscript { jcenter() } dependencies { - classpath 'com.huawei.ohos:hap:2.4.2.5' - classpath 'com.huawei.ohos:decctest:1.0.0.6' + classpath 'com.huawei.ohos:hap:2.4.5.0' + classpath 'com.huawei.ohos:decctest:1.2.4.1' } } diff --git a/library/src/main/java/com/scwang/wave/MultiWaveHeader.java b/library/src/main/java/com/scwang/wave/MultiWaveHeader.java index 1490ced..b97e4c0 100644 --- a/library/src/main/java/com/scwang/wave/MultiWaveHeader.java +++ b/library/src/main/java/com/scwang/wave/MultiWaveHeader.java @@ -11,6 +11,8 @@ import ohos.agp.utils.Matrix; import ohos.agp.utils.Point; import ohos.agp.utils.RectFloat; import ohos.app.Context; +import ohos.eventhandler.EventHandler; +import ohos.eventhandler.EventRunner; import java.util.ArrayList; import java.util.List; @@ -144,6 +146,11 @@ public class MultiWaveHeader extends ComponentContainer implements Component.Lay */ protected ValueAnimator reboundAnimator; + /** + * The constant Event handler + */ + private EventHandler eventHandler; + /** * Multi wave header * @@ -185,7 +192,7 @@ public class MultiWaveHeader extends ComponentContainer implements Component.Lay mCornerRadius = getDimensionFromAttr(attrs, MultiWaveHeader_mwhCornerRadius, Util.dp2px(getContext(),25)); mShape = ShapeType.getShapeType(AttrUtils.getIntFromAttr(attrs, MultiWaveHeader_mwhShape, mShape.ordinal())); mProgress = mCurProgress = AttrUtils.getFloatFromAttr(attrs, MultiWaveHeader_mwhProgress, 1f); - + eventHandler = new EventHandler(EventRunner.getMainEventRunner()); setTag(AttrUtils.getStringFromAttr(attrs, MultiWaveHeader_mwhWaves, "70,25,1.4,1.4,-26\n100,5,1.4,1.2,15\n420,0,1.15,1,-10\n520,10,1.7,1.5,20\n220,0,1,1,-15")); setLayoutRefreshedListener(this); @@ -335,9 +342,9 @@ public class MultiWaveHeader extends ComponentContainer implements Component.Lay mltWave.clear(); if (getTag() instanceof String) { String[] waves = getTag().toString().split("\\s+"); - if ("-1".equals(getTag())) { + if ("MultiWave".equals(getTag())) { waves = "70,25,1.4,1.4,-26\n100,5,1.4,1.2,15\n420,0,1.15,1,-10\n520,10,1.7,1.5,20\n220,0,1,1,-15".split("\\s+"); - } else if ("-2".equals(getTag())) { + } else if ("PairWave".equals(getTag())) { waves = "0,0,1,0.5,90\n90,0,1,0.5,90".split("\\s+"); } for (String wave : waves) { @@ -447,12 +454,14 @@ public class MultiWaveHeader extends ComponentContainer implements Component.Lay */ public void setWaves(String waves) { setTag(waves); - if (mLastTime > 0) { - Component thisView = this; - updateWavePath(); - updateWavePath(thisView.getWidth(), thisView.getHeight()); - } - invalidate(); + eventHandler.postTask(() -> { + if (mLastTime > 0) { + updateWavePath(); + updateWavePath(getWidth(), getHeight()); + } + invalidate(); + },100); + } /** -- Gitee