diff --git a/.gitignore b/.gitignore index 37a4eb8b43d978ea05b2c6e3fb934f9b40dddd4d..d55a146eeb0ea4bd8c36b11f649e0f3959c62312 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ .externalNativeBuild /entry/.preview .cxx +upload.gradle \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 73753e891a2f2f4207562f76ed67b24f2ac60c10..7f965d63e37a44ebd2b3799cf63d6eee8f1cf30a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,48 @@ -Change Log -========== ## Version 0.0.1-SNAPSHOT -* refactor: For module library Android-to-OpenHarmony \ No newline at end of file +* refactor: For module library Android-to-OpenHarmony + +## MaterialStepperView 0.2.5 +* @fython fython released this on 12 Feb 2020 +* Update to AndroidX + +## MaterialStepperView 0.2.4.2 +* @fython fython released this on 22 Mar 2018 + +## MaterialStepperView 0.2.4 +* @fython fython released this on 3 Mar 2018 +* Support Kotlin (Add some nullability annotations & Add kotlin demo) +* Fix instance state cannot restore (Issues #16) +* Fix icon truncated in last step when summary doesn't exist (Issues #12 & #15 ) +* Update Android Support library (only RecyclerView required by library module) to 27.1.0 + +## MaterialStepperView 0.2.3 +* @fython fython released this on 3 Nov 2017 +* Update Android Support libraries to 27.0.0 +* Update Android Gradle Plugin to 3.0.0 (With Gradle 4.3) + +## MaterialStepperView 0.2.2 +* @fython fython released this on 17 Sep 2017 +* Update Android Support Libraries to 26.1.0 +* Use CharSequence instead of String in title / summary / error text. +* New attribute: step_show_summary_always + +## MaterialStepperView 0.2.1 +* @fython fython released this on 17 Aug 2017 +* Fix crashes by unsupported method ObjectAnimator.ofArgb in pre-Lollipop devices. f21bd30 +* New attributes: step_summary_done + +## MaterialStepperView 0.2.0 +* @fython fython released this on 14 Aug 2017 +* Support set error text +* Support Pre-lollipop Android +* Remove AppCompat dependecy +* New attributes step_line_color and step_error_highlight_color + +## MaterialStepperView 0.1.1 +* @fython fython released this on 10 Aug 2017 +* 根据规范修正标题及线条样式 + +## MaterialStepperView 0.1.0 +* @fython fython released this on 10 Aug 2017 diff --git a/README.md b/README.md index 02b0dccbf1e4c8e377c9b18fdcfe6b2bac0d58f1..0df926d41f3a3413a6b6aea3404abe55f68fc2be 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MaterialStepperView -本项目是基于开源项目MaterialStepperView进行OpenHarmony的移植和开发的,可以通过项目标签以及gitHub地址()追踪到原安卓项目版本 +本项目是基于开源项目MaterialStepperView进行OpenHarmony的移植和开发的,可以通过项目标签以及gitHub地址()追踪到原项目版本 #### 项目介绍 - 项目名称:MaterialStepperView @@ -15,8 +15,8 @@ - 基线版本:MaterialStepperView组件Tags 0.2.5 #### 效果演示 - - + + #### 使用说明 - 目前我们只做了竖直样式的 Stepper 组件。未来将会加入更多的样式。 @@ -76,11 +76,11 @@ allprojects { 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 #### 测试用例 -CodeCheck代码测试无异常 -CloudTest代码测试无异常 -火绒安全病毒安全检测通过 -当前版本demo功能与安卓原组件基本无差异 -测试员:李仲 +- CodeCheck代码测试无异常 +- CloudTest代码测试无异常 +- 火绒安全病毒安全检测通过 +- 当前版本demo功能与原组件基本无差异 +- 测试员:李仲 #### 版本迭代 v0.0.1-SNAPSHOT diff --git a/entry/build.gradle b/entry/build.gradle index e84d30a775e7dad18e2007cc900f6c4c54993506..543500c805e37ed31eaa275617ffdcf323e2b499 100644 --- a/entry/build.gradle +++ b/entry/build.gradle @@ -20,6 +20,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) testImplementation 'junit:junit:4.13' ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100' + implementation 'io.openharmony.tpc.thirdlib:triangle-view:1.0.1' compile project(":library") } decc { diff --git a/entry/src/main/java/moe/feng/common/stepperview/demo/MainAbility.java b/entry/src/main/java/moe/feng/common/stepperview/demo/MainAbility.java index b57a0fe8b1262580da31fcc7dd065e1d7c6a4d35..d0a453124727c8aafd2dd4717b7a7d99118d40dc 100644 --- a/entry/src/main/java/moe/feng/common/stepperview/demo/MainAbility.java +++ b/entry/src/main/java/moe/feng/common/stepperview/demo/MainAbility.java @@ -3,7 +3,21 @@ package moe.feng.common.stepperview.demo; import moe.feng.common.stepperview.demo.slice.MainAbilitySlice; import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Intent; - +/* + * Copyright (C) 2021 The Chinese Software International 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 a 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. + * + */ public class MainAbility extends Ability { @Override public void onStart(Intent intent) { diff --git a/entry/src/main/java/moe/feng/common/stepperview/demo/MaterialRippleLayout.java b/entry/src/main/java/moe/feng/common/stepperview/demo/MaterialRippleLayout.java index f9dadb1a1b388e98c1d3b99bf2c4b42d5d4dfe15..fe5dda36cb418e6a3967078c21b31f8a44bbf0f2 100644 --- a/entry/src/main/java/moe/feng/common/stepperview/demo/MaterialRippleLayout.java +++ b/entry/src/main/java/moe/feng/common/stepperview/demo/MaterialRippleLayout.java @@ -24,7 +24,21 @@ import ohos.hiviewdfx.HiLog; import ohos.hiviewdfx.HiLogLabel; import ohos.multimodalinput.event.MmiPoint; import ohos.multimodalinput.event.TouchEvent; - +/* + * Copyright (C) 2021 The Chinese Software International 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 a 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. + * + */ public class MaterialRippleLayout extends StackLayout implements Component.TouchEventListener, Component.DrawTask, Component.ClickedListener { private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MaterialRippleLayout"); diff --git a/entry/src/main/java/moe/feng/common/stepperview/demo/MyApplication.java b/entry/src/main/java/moe/feng/common/stepperview/demo/MyApplication.java index 93e81171aa7543779423b21c7ea6e0b2c12bc289..ef7fcb7980b5aff7bf5767cd7d011e086141dffe 100644 --- a/entry/src/main/java/moe/feng/common/stepperview/demo/MyApplication.java +++ b/entry/src/main/java/moe/feng/common/stepperview/demo/MyApplication.java @@ -1,7 +1,21 @@ package moe.feng.common.stepperview.demo; import ohos.aafwk.ability.AbilityPackage; - +/* + * Copyright (C) 2021 The Chinese Software International 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 a 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. + * + */ public class MyApplication extends AbilityPackage { @Override public void onInitialize() { diff --git a/entry/src/main/java/moe/feng/common/stepperview/demo/ViewUtils.java b/entry/src/main/java/moe/feng/common/stepperview/demo/ViewUtils.java index eaaf0715d1cd6b40a6d38c83c3b0b1da1e79c865..ff994be33fa3dc495a668201002cbb3849d489d0 100644 --- a/entry/src/main/java/moe/feng/common/stepperview/demo/ViewUtils.java +++ b/entry/src/main/java/moe/feng/common/stepperview/demo/ViewUtils.java @@ -7,7 +7,21 @@ import ohos.agp.components.Component; import ohos.agp.components.Text; import ohos.agp.components.element.ShapeElement; import ohos.agp.utils.Color; - +/* + * Copyright (C) 2021 The Chinese Software International 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 a 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. + * + */ public class ViewUtils { /** @@ -30,14 +44,6 @@ public class ViewUtils { return RgbColor.fromArgbInt(color); } - /** - * Get color attribute from current theme - * - * @param - * @param - * @return Result - */ - public static AnimatorValue createArgbAnimator(Component view, String propertyName, int startColor, int endColor) { AnimatorValue animation = new AnimatorValue(); @@ -162,15 +168,6 @@ public class ViewUtils { return animation; } - - /** - * Get color attribute from current theme - * - * @param - * @param - * @return Result - */ - public static AnimatorValue createShowAnimator(Component showview, int startColor,String propertyName, Component hideview) { AnimatorValue animation = new AnimatorValue(); diff --git a/entry/src/main/java/moe/feng/common/stepperview/demo/slice/MainAbilitySlice.java b/entry/src/main/java/moe/feng/common/stepperview/demo/slice/MainAbilitySlice.java index dd3f4dee245530d971c1d9349093d8ea15544a11..8064c1e6d488c31c902d636af0c43effc88f7c17 100644 --- a/entry/src/main/java/moe/feng/common/stepperview/demo/slice/MainAbilitySlice.java +++ b/entry/src/main/java/moe/feng/common/stepperview/demo/slice/MainAbilitySlice.java @@ -1,5 +1,4 @@ package moe.feng.common.stepperview.demo.slice; - import moe.feng.common.stepperview.IStepperAdapter; import moe.feng.common.stepperview.VerticalStepperItemView; import moe.feng.common.stepperview.VerticalStepperView; @@ -17,12 +16,25 @@ import ohos.agp.utils.Color; import ohos.agp.utils.LayoutAlignment; import ohos.agp.utils.TextAlignment; import ohos.agp.window.dialog.CommonDialog; -import ohos.agp.window.dialog.DisplayDialog; import ohos.agp.window.dialog.ToastDialog; import ohos.app.Context; import ohos.utils.IntentConstants; import ohos.utils.net.Uri; - +/* + * Copyright (C) 2021 The Chinese Software International 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 a 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. + * + */ public class MainAbilitySlice extends AbilitySlice implements IStepperAdapter { private VerticalStepperView mVerticalStepperView; private DirectionalLayout itemlayout; @@ -49,7 +61,7 @@ public class MainAbilitySlice extends AbilitySlice implements IStepperAdapter { initLeft(); initCommont(); mVerticalStepperView = (VerticalStepperView) findComponentById(ResourceTable.Id_vertical_stepper_view); - mVerticalStepperView.setStepperAdapter(this); + mVerticalStepperView.setStepperAdapter(this,MainAbilitySlice.this); } @@ -247,97 +259,108 @@ public class MainAbilitySlice extends AbilitySlice implements IStepperAdapter { Component inflateView0 = LayoutScatter.getInstance(this).parse(ResourceTable.Layout_step_0_layout, null, false); Component inflateView1 = LayoutScatter.getInstance(this).parse(ResourceTable.Layout_step_1_layout, null, false); Component inflateView2 = LayoutScatter.getInstance(this).parse(ResourceTable.Layout_step_2_layout, null, false); - mSteppers[0].addCustomViewComponet(inflateView0); - mSteppers[1].addCustomViewComponet(inflateView1); - mSteppers[2].addCustomViewComponet(inflateView2); - VerticalStepperItemView.bindSteppers(mSteppers); - mNextBtn0 = (Button) inflateView0.findComponentById(ResourceTable.Id_button_next_0); - startAnimator(this, mNextBtn0, "#007DFF"); - mNextBtn0.setClickedListener(new Component.ClickedListener() { - @Override - public void onClick(Component view) { - mSteppers[0].nextStep(); - } - }); + if(null!=mSteppers[0]&&null!=mSteppers[1]&&null!=mSteppers[2]&&null!=inflateView0&&null!=inflateView1&&null!=inflateView2) { + mSteppers[0].addCustomViewComponet(inflateView0); + mSteppers[1].addCustomViewComponet(inflateView1); + mSteppers[2].addCustomViewComponet(inflateView2); + VerticalStepperItemView.bindSteppers(mSteppers); + mNextBtn0 = (Button) inflateView0.findComponentById(ResourceTable.Id_button_next_0); + startAnimator(this, mNextBtn0, "#007DFF"); + mNextBtn0.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { + mSteppers[0].nextStep(); + } + }); + + Button mErrorButton = (Button) inflateView1.findComponentById(ResourceTable.Id_button_test_error); + startAnimator(this, mErrorButton, "#F44336"); + mErrorButton.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { + if (mSteppers[0].getErrorText() != null) { + mSteppers[0].setErrorText(0, null); + } else { + mSteppers[0].setErrorText("Test error!"); + } + } + }); - Button mErrorButton = (Button) inflateView1.findComponentById(ResourceTable.Id_button_test_error); - startAnimator(this, mErrorButton, "#F44336"); - mErrorButton.setClickedListener(new Component.ClickedListener() { - @Override - public void onClick(Component view) { - if (mSteppers[0].getErrorText() != null) { - mSteppers[0].setErrorText(0, null); - } else { - mSteppers[0].setErrorText("Test error!"); + Button mPrevBtn0 = (Button) inflateView0.findComponentById(ResourceTable.Id_button_pre_0); + startAnimator(this, mPrevBtn0, "#ECECEC"); + mPrevBtn0.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { } - } - }); - mPrevBtn1 = (Button) inflateView1.findComponentById(ResourceTable.Id_button_prev_1); - startAnimator(this, mPrevBtn1, "#ECECEC"); - mPrevBtn1.setClickedListener(new Component.ClickedListener() { - @Override - public void onClick(Component view) { - mSteppers[1].prevStep(); - } - }); - mNextBtn1 = (Button) inflateView1.findComponentById(ResourceTable.Id_button_next_1); - startAnimator(this, mNextBtn1, "#007DFF"); - mNextBtn1.setClickedListener(new Component.ClickedListener() { - @Override - public void onClick(Component view) { - mSteppers[1].nextStep(); - } - }); - mPrevBtn2 = (Button) inflateView2.findComponentById(ResourceTable.Id_button_prev_2); - startAnimator(this, mPrevBtn2, "#ECECEC"); - mPrevBtn2.setClickedListener(new Component.ClickedListener() { - @Override - public void onClick(Component view) { - mSteppers[2].prevStep(); - } - }); - mNextBtn2 = (Button) inflateView2.findComponentById(ResourceTable.Id_button_next_2); - startAnimator(this, mNextBtn2, "#007DFF"); - mNextBtn2.setClickedListener(new Component.ClickedListener() { - @Override - public void onClick(Component view) { - toast(MainAbilitySlice.this, "Finish!"); - } - }); - Button chahge = (Button) findComponentById(ResourceTable.Id_btn_change_point_color); - startAnimator(this, chahge, "#ECECEC"); - chahge.setClickedListener(new Component.ClickedListener() { - @Override - public void onClick(Component view) { - if (mActivatedColorRes.equals("#2196F3")) { - mActivatedColorRes = "#673AB7"; - } else { - mActivatedColorRes = "#2196F3"; + }); + + mPrevBtn1 = (Button) inflateView1.findComponentById(ResourceTable.Id_button_prev_1); + startAnimator(this, mPrevBtn1, "#ECECEC"); + mPrevBtn1.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { + mSteppers[1].prevStep(); } - for (VerticalStepperItemView stepper : mSteppers) { - stepper.setActivatedColor(Color.getIntColor(mActivatedColorRes)); + }); + mNextBtn1 = (Button) inflateView1.findComponentById(ResourceTable.Id_button_next_1); + startAnimator(this, mNextBtn1, "#007DFF"); + mNextBtn1.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { + mSteppers[1].nextStep(); } - } - }); - Button chahge1 = (Button) findComponentById(ResourceTable.Id_btn_change_done_icon); - startAnimator(this, chahge1, "#ECECEC"); - chahge1.setClickedListener(new Component.ClickedListener() { - @Override - public void onClick(Component view) { - if (mDoneIconRes == ResourceTable.Graphic_ic_done_white_16dp) { - mDoneIconRes = ResourceTable.Graphic_ic_save_white_16dp; - } else { - if (mDoneIconRes == 0) { - mDoneIconRes = ResourceTable.Graphic_ic_save_white_16dp; + }); + mPrevBtn2 = (Button) inflateView2.findComponentById(ResourceTable.Id_button_prev_2); + startAnimator(this, mPrevBtn2, "#ECECEC"); + mPrevBtn2.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { + mSteppers[2].prevStep(); + } + }); + mNextBtn2 = (Button) inflateView2.findComponentById(ResourceTable.Id_button_next_2); + startAnimator(this, mNextBtn2, "#007DFF"); + mNextBtn2.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { + toast(MainAbilitySlice.this, "Finish!"); + } + }); + Button chahge = (Button) findComponentById(ResourceTable.Id_btn_change_point_color); + startAnimator(this, chahge, "#ECECEC"); + chahge.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { + if (mActivatedColorRes.equals("#2196F3")) { + mActivatedColorRes = "#673AB7"; } else { - mDoneIconRes = ResourceTable.Graphic_ic_done_white_16dp; + mActivatedColorRes = "#2196F3"; + } + for (VerticalStepperItemView stepper : mSteppers) { + stepper.setActivatedColor(Color.getIntColor(mActivatedColorRes)); } } - for (VerticalStepperItemView stepper : mSteppers) { - stepper.setDoneIconResource(mDoneIconRes); + }); + Button chahge1 = (Button) findComponentById(ResourceTable.Id_btn_change_done_icon); + startAnimator(this, chahge1, "#ECECEC"); + chahge1.setClickedListener(new Component.ClickedListener() { + @Override + public void onClick(Component view) { + if (mDoneIconRes == ResourceTable.Graphic_ic_done_white_16dp) { + mDoneIconRes = ResourceTable.Graphic_ic_save_white_16dp; + } else { + if (mDoneIconRes == 0) { + mDoneIconRes = ResourceTable.Graphic_ic_save_white_16dp; + } else { + mDoneIconRes = ResourceTable.Graphic_ic_done_white_16dp; + } + } + for (VerticalStepperItemView stepper : mSteppers) { + stepper.setDoneIconResource(mDoneIconRes); + } } - } - }); + }); + } } @Override diff --git a/entry/src/main/resources/base/layout/ability_main.xml b/entry/src/main/resources/base/layout/ability_main.xml index 411e22f39a38631bd67adccf1325e486a60b052d..c2c4c6a03782198c1ea05283ead22fb484bc2556 100644 --- a/entry/src/main/resources/base/layout/ability_main.xml +++ b/entry/src/main/resources/base/layout/ability_main.xml @@ -48,76 +48,80 @@ ohos:width="match_parent" ohos:orientation="vertical"> - - - - - + ohos:width="match_parent"> - - - - - - - - - - -