diff --git a/README.md b/README.md index cedcff94dce165b6cb6c545909bd70a90bfa26ac..b947d6d95fe62eb27842f52d71b73fcba920251e 100644 --- a/README.md +++ b/README.md @@ -16,14 +16,14 @@ Material intro screen 的设计灵感来自于 [Material Intro] , 为了使简 ## 用法 ### 第1步-使用: -#### 方法1-直接使用har包 +#### 方法1-使用har包 ``` 通过library生成har包,添加har包到要集成的libs文件夹内 在entry的gradle内添加如下代码 implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) ``` -#### 方法2-gradle依赖 +#### 方法2-使用implementation依赖 ``` allprojects{ repositories{ @@ -47,7 +47,7 @@ implementation 'io.openharmony.tpc.thirdlib:material-intro-screen:1.0.1' public class IntroSlice extends MaterialIntroSlice ``` ### 第3步: -#### 添加 IntroAbility 到 [config][config] 并设置主题等: +#### 在 [config][config] 里面设置沉浸式主题等: ```json { "orientation": "unspecified", @@ -86,7 +86,7 @@ public class IntroSlice extends MaterialIntroSlice } } ``` -#### SlideView用法的说明: +#### SlideComponet用法的说明: - ```possiblePermissions``` ⇾ 不强制要求需要授予的权限 - ```neededPersmissions``` ⇾ 需要获得许可才能从该幻灯片进一步移动的权限 - ```MessageButtonBehaviour``` ⇾ 仅仅在你需要自定义操作或者button显示文字才会创建新的实例 @@ -111,20 +111,20 @@ public class IntroSlice extends MaterialIntroSlice - ```getSkipButtonTranslationWrapper()``` ## 定制幻灯片 -#### 您只需要扩展SlideFragment并覆盖以下功能就可以实现完全自定义的幻灯片: +#### 您只需要扩展SlideComponet并覆盖以下功能就可以实现完全自定义的幻灯片: - ```backgroundColor()``` - ```buttonsColor()``` - ```canMoveFurther()``` (仅当您要阻止用户在执行某些操作之前就无法进一步移动时才需要实现这个方法) - ```cantMoveFurtherErrorMessage()``` (同上) #### 如果要在自定义控件中使用视差,请使用以下视图之一: - - [ParallaxFrameLayout][ParallaxFrame] - - [ParallaxLinearLayout][ParallaxLinear] - - [ParallaxRelativeLayout][ParallaxRelative] + - [ParallaxStackLayout][ParallaxStack] + - [ParallaxDirectionalLayout][ParallaxDirectiona] + - [ParallaxDependentLayout][ParallaxDependent] #### 并在XML中设置 [zdy:layout_parallaxFactor][ParallaxFactor] 属性: ```xml - @@ -134,7 +134,7 @@ public class IntroSlice extends MaterialIntroSlice /> ``` - 此处显示了简单SlideView中没有的所有功能: [Custom Slide] + 此处显示了简单SlideComponet中没有的所有功能: [Custom Slide] ## License @@ -183,9 +183,9 @@ public class IntroSlice extends MaterialIntroSlice [PermissionSlide]: [FinishSlide]: [SimpleSlide]: -[ParallaxFrame]: -[ParallaxLinear]: -[ParallaxRelative]: +[ParallaxStack]: +[ParallaxDirectiona]: +[ParallaxDependent]: [ParallaxFactor]: [config]: [TranslationWrapper]: diff --git a/build.gradle b/build.gradle index ef3f57778829a3a3db8f688a13cdf9f686af29cb..d1cd2d3fae545d9f4efdd6a9bf518f18e465b31a 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/entry/src/main/config.json b/entry/src/main/config.json index 44d9c889874f8987ae7452e4bbd1b1fe9d3f264b..c778423c977a7f60bb4e960fbd31ce0e6de5d4d6 100644 --- a/entry/src/main/config.json +++ b/entry/src/main/config.json @@ -41,7 +41,7 @@ "label": "$string:app_name", "type": "page", "visible": false, - "launchType": "singleton" + "launchType": "standard" }, { "orientation": "unspecified", diff --git a/entry/src/main/java/agency/tango/materialintro/slice/IntroSlice.java b/entry/src/main/java/agency/tango/materialintro/slice/IntroSlice.java index 28a970339a386cfdbd24f475add7138d0a2d0451..3398e4cbf44b3b1c8e07de1b6fb7ffaa40204d83 100644 --- a/entry/src/main/java/agency/tango/materialintro/slice/IntroSlice.java +++ b/entry/src/main/java/agency/tango/materialintro/slice/IntroSlice.java @@ -1,14 +1,14 @@ package agency.tango.materialintro.slice; - import ohos.aafwk.content.Intent; +import ohos.aafwk.content.Operation; import ohos.agp.components.Component; import ohos.security.SystemPermission; import agency.tango.materialintro.ResourceTable; import agency.tango.materialintroscreen.MessageButtonBehaviour; import agency.tango.materialintroscreen.SlideViewBuilder; -import agency.tango.materialintroscreen.SlideView; +import agency.tango.materialintroscreen.SlideComponet; import agency.tango.materialintroscreen.slice.MaterialIntroSlice; import agency.tango.materialintroscreen.utils.ToastUtil; @@ -47,7 +47,7 @@ public class IntroSlice extends MaterialIntroSlice { } private void addEndPage() { - SlideView endView = new SlideViewBuilder() + SlideComponet endView = new SlideViewBuilder() .backgroundColor(ResourceTable.Color_fourth_slide_background) .buttonsColor(ResourceTable.Color_fourth_slide_buttons) .title(getContext().getString(ResourceTable.String_end_title)) @@ -62,7 +62,7 @@ public class IntroSlice extends MaterialIntroSlice { String[] neededPermissions = {SystemPermission.CAMERA, SystemPermission.LOCATION, SystemPermission.WRITE_CALENDAR}; - SlideView permissionView = new SlideViewBuilder() + SlideComponet permissionView = new SlideViewBuilder() .backgroundColor(ResourceTable.Color_third_slide_background) .buttonsColor(ResourceTable.Color_third_slide_buttons) .possiblePermissions(possiblePermissions) @@ -79,7 +79,7 @@ public class IntroSlice extends MaterialIntroSlice { } private void addGoOnPage() { - SlideView goOnView = new SlideViewBuilder() + SlideComponet goOnView = new SlideViewBuilder() .backgroundColor(ResourceTable.Color_second_slide_background) .buttonsColor(ResourceTable.Color_second_slide_buttons) .title(getContext().getString(ResourceTable.String_go_on_title)) @@ -89,7 +89,7 @@ public class IntroSlice extends MaterialIntroSlice { } private void addOrganizePage() { - SlideView organizeView = new SlideViewBuilder() + SlideComponet organizeView = new SlideViewBuilder() .backgroundColor(ResourceTable.Color_first_slide_background) .buttonsColor(ResourceTable.Color_first_slide_buttons) .image(ResourceTable.Media_img_office) @@ -107,6 +107,14 @@ public class IntroSlice extends MaterialIntroSlice { public void onFinish() { super.onFinish(); ToastUtil.showToast(this, getContext().getString(ResourceTable.String_close_text)); - + Intent secondIntent = new Intent(); + // 指定待启动FA的bundleName和abilityName + Operation operation = new Intent.OperationBuilder() + .withDeviceId("") + .withBundleName("agency.tango.materialintro") + .withAbilityName("agency.tango.materialintro.MainAbility") + .build(); + secondIntent.setOperation(operation); + startAbility(secondIntent); // 通过AbilitySlice的startAbility接口实现启动另一个页面 } } diff --git a/entry/src/main/java/agency/tango/materialintro/slice/MainAbilitySlice.java b/entry/src/main/java/agency/tango/materialintro/slice/MainAbilitySlice.java index 8d3e8e00f6220b91629288553a7ff43b64d8da5c..25daedbd2c3d164f05daf8396250b1b861f34cfd 100644 --- a/entry/src/main/java/agency/tango/materialintro/slice/MainAbilitySlice.java +++ b/entry/src/main/java/agency/tango/materialintro/slice/MainAbilitySlice.java @@ -1,18 +1,3 @@ -/* - * 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 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. - */ - package agency.tango.materialintro.slice; import agency.tango.materialintro.MaterialIntro; diff --git a/entry/src/main/java/agency/tango/materialintro/slice/SplashAbilitySlice.java b/entry/src/main/java/agency/tango/materialintro/slice/SplashAbilitySlice.java index 32ea1ef1137498d1cd37008b80734ce5936881bd..f64683c43624e981e504143bf649653b15ba4a01 100644 --- a/entry/src/main/java/agency/tango/materialintro/slice/SplashAbilitySlice.java +++ b/entry/src/main/java/agency/tango/materialintro/slice/SplashAbilitySlice.java @@ -1,6 +1,5 @@ package agency.tango.materialintro.slice; - import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.aafwk.content.Operation; diff --git a/entry/src/main/resources/base/layout/slide_custom.xml b/entry/src/main/resources/base/layout/slide_custom.xml index 8c8d03a43b82c815d86b3b4b9c124f61ee6c0f3a..93e3801f25d8609d3fabfe1eb101d243cdb0e266 100644 --- a/entry/src/main/resources/base/layout/slide_custom.xml +++ b/entry/src/main/resources/base/layout/slide_custom.xml @@ -1,5 +1,5 @@ - - + diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/AttrString.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/AttrString.java index 8383dcacbc2210cfdb2095d860b6176e7630f27d..376e58bc13d438649c60f7474642cea056f9baf4 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/AttrString.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/AttrString.java @@ -31,44 +31,44 @@ public class AttrString { /** * 控件在随着pageslider滑动时的偏移比例 */ - public static String PARALlAX_LAYOUT_FACTOR = "layout_parallaxFactor"; + public static final String PARALlAX_LAYOUT_FACTOR = "layout_parallaxFactor"; /** * pageslider指示器小圆点直径 */ - public static String INKPAGEINDICATOR_DOTDIAMETER = "dotDiameter"; + public static final String INKPAGEINDICATOR_DOTDIAMETER = "dotDiameter"; /** * pageslider指示器小圆点之间的间隔 */ - public static String INKPAGEINDICATOR_DOTGAP = "dotGap"; + public static final String INKPAGEINDICATOR_DOTGAP = "dotGap"; /** * pageslider指示器动画时间 */ - public static String INKPAGEINDICATOR_ANIMATIONDURATION = + public static final String INKPAGEINDICATOR_ANIMATIONDURATION = "animationDuration"; /** * pageslider指示器未选中小圆点颜色 */ - public static String INKPAGEINDICATOR_PAGEINDICATORCOLOR = + public static final String INKPAGEINDICATOR_PAGEINDICATORCOLOR = "pageIndicatorColor"; /** * pageslider指示器选中小圆点颜色 */ - public static String INKPAGEINDICATOR_CURRENTPAGEINDICATORCOLOR = + public static final String INKPAGEINDICATOR_CURRENTPAGEINDICATORCOLOR = "currentPageIndicatorColor"; /** * 加速插值器变化系数 */ - public static String IACCELERATEINTERPOLATOR_FACTOR = + public static final String IACCELERATEINTERPOLATOR_FACTOR = "accelerateInterpolatorFactor"; /** * 循环插值器循环次数 */ - public static String CYCLEINTERPOLATORCYCLES = "cycleInterpolatorCycles"; + public static final String CYCLEINTERPOLATORCYCLES = "cycleInterpolatorCycles"; } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/Constants.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/Constants.java index 11c03d4504a26e1159741cb6db29ec03998cfc4d..4734403e5812aa94ad6d836096f802a965a91c10 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/Constants.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/Constants.java @@ -31,22 +31,22 @@ public class Constants{ /** * 请求权限码 */ - public static String REQUEST_PERMISSION_CODE= "request_permission_code"; + public static final String REQUEST_PERMISSION_CODE= "request_permission_code"; /** * 权限集合 */ - public static String PERMISSION_RESULT = "permission_result"; + public static final String PERMISSION_RESULT = "permission_result"; /** * 权限申请结果 */ - public static String GRANT_RESULT= "grant_result"; + public static final String GRANT_RESULT= "grant_result"; /** * 权限申请action */ - public static String PERMISSION_ACTION = "agency.tango.materialintroscreen.permission"; + public static final String PERMISSION_ACTION = "agency.tango.materialintroscreen.permission"; } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideView.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideComponet.java similarity index 95% rename from material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideView.java rename to material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideComponet.java index a1b10730a85f14f1a4fa60f177edbca98d0efb80..2ece3c600f661ac535f3d19df6799f1de47f36fb 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideView.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideComponet.java @@ -13,19 +13,18 @@ import ohos.app.Context; import ohos.bundle.IBundleManager; import ohos.global.resource.NotExistException; import ohos.global.resource.WrongTypeException; -import ohos.security.permission.Permission; import ohos.utils.PacMap; import org.jetbrains.annotations.NotNull; -import agency.tango.materialintroscreen.parallax.ParallaxView; +import agency.tango.materialintroscreen.parallax.ParallaxComponet; import agency.tango.materialintroscreen.utils.LogUtil; /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen - * @ClassName: SlideView + * @ClassName: SlideComponet * @Description: pageslider的item基类 * 封装了背景色的获取及设置 title的文字获取及设置 * messagebutton的背景色获取及设置 description的文字获取及设置 权限的申请及判断 @@ -34,7 +33,7 @@ import agency.tango.materialintroscreen.utils.LogUtil; * @UpdateRemark: 暂无 * @Version: 1.0 */ -public class SlideView extends ParallaxView { +public class SlideComponet extends ParallaxComponet { private static final String BACKGROUND_COLOR = "background_color"; private static final String BUTTONS_COLOR = "buttons_color"; private static final String TITLE = "title"; @@ -61,18 +60,18 @@ public class SlideView extends ParallaxView { return title; } - public SlideView(Context context) { + public SlideComponet(Context context) { super(context); } /** * 控件初始化 * - * @param builder SlideView属性builder + * @param builder SlideComponet属性builder * @param context 上下文 - * @return SlideView + * @return SlideComponet */ - public static SlideView createInstance(SlideViewBuilder builder, Context context) { + public static SlideComponet createInstance(SlideViewBuilder builder, Context context) { BUNDLE.putIntValue(BACKGROUND_COLOR, builder.getBackgroundColor()); BUNDLE.putIntValue(BUTTONS_COLOR, builder.getButtonsColor()); BUNDLE.putIntValue(IMAGE, builder.getImage()); @@ -82,7 +81,7 @@ public class SlideView extends ParallaxView { builder.getNeededPermissions()); BUNDLE.putStringArray(POSSIBLE_PERMISSIONS, builder.getPossiblePermissions()); - return new SlideView(context); + return new SlideComponet(context); } private static boolean isNotNullOrEmpty(String string) { diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideViewBuilder.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideViewBuilder.java index c05afd664e02dc5cb36c4420fbccda5bf00c430a..6fd1a61466a9a5a2ba6d543ad990808c5bde0b3d 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideViewBuilder.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/SlideViewBuilder.java @@ -22,7 +22,7 @@ public class SlideViewBuilder { int image; /** - * 获取SlideView的背景颜色 + * 获取SlideComponet的背景颜色 * * @return 背景颜色 */ @@ -31,7 +31,7 @@ public class SlideViewBuilder { } /** - * 获取SlideView的按钮颜色 + * 获取SlideComponet的按钮颜色 * * @return 按钮颜色 */ @@ -40,7 +40,7 @@ public class SlideViewBuilder { } /** - * 获取SlideView的标题 + * 获取SlideComponet的标题 * * @return 标题 */ @@ -49,7 +49,7 @@ public class SlideViewBuilder { } /** - * 获取SlideView的描述 + * 获取SlideComponet的描述 * * @return 描述 */ @@ -58,7 +58,7 @@ public class SlideViewBuilder { } /** - * 获取SlideView的必要的权限 + * 获取SlideComponet的必要的权限 * * @return 必要的权限 */ @@ -67,7 +67,7 @@ public class SlideViewBuilder { } /** - * 获取SlideView的可能需要的权限 + * 获取SlideComponet的可能需要的权限 * * @return 可能需要的权限 */ @@ -76,7 +76,7 @@ public class SlideViewBuilder { } /** - * 获取SlideView的图片资源id + * 获取SlideComponet的图片资源id * * @return 图片资源id */ @@ -85,7 +85,7 @@ public class SlideViewBuilder { } /** - * 设置SlideView的背景色 + * 设置SlideComponet的背景色 * * @param backgroundColor 背景色 * @return SlideViewBuilder @@ -96,7 +96,7 @@ public class SlideViewBuilder { } /** - * 设置SlideView的按钮颜色 + * 设置SlideComponet的按钮颜色 * * @param buttonsColor 按钮颜色 * @return SlideViewBuilder @@ -107,7 +107,7 @@ public class SlideViewBuilder { } /** - * 设置SlideView的标题 + * 设置SlideComponet的标题 * * @param title 标题 * @return SlideViewBuilder @@ -118,7 +118,7 @@ public class SlideViewBuilder { } /** - * 设置SlideView的描述 + * 设置SlideComponet的描述 * * @param description 描述 * @return SlideViewBuilder @@ -129,7 +129,7 @@ public class SlideViewBuilder { } /** - * 设置SlideView的必要的权限 + * 设置SlideComponet的必要的权限 * * @param neededPermissions 必要的权限 * @return SlideViewBuilder @@ -140,7 +140,7 @@ public class SlideViewBuilder { } /** - * 设置SlideView的可能需要的权限 + * 设置SlideComponet的可能需要的权限 * * @param possiblePermissions 可能需要的权限 * @return SlideViewBuilder @@ -151,7 +151,7 @@ public class SlideViewBuilder { } /** - * 设置SlideView的图片 + * 设置SlideComponet的图片 * * @param image 图片 * @return SlideViewBuilder @@ -162,13 +162,13 @@ public class SlideViewBuilder { } /** - * 构造SlideView + * 构造SlideComponet * * @param context 上下文 - * @return SlideView + * @return SlideComponet */ - public SlideView build(Context context) { - return SlideView.createInstance(this, context); + public SlideComponet build(Context context) { + return SlideComponet.createInstance(this, context); } } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/adapter/SlidesAdapter.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/adapter/SlidesAdapter.java index dc9919eb26f0685b9c384893e0c357f7a33eeea7..094c0616482b0987f6299fa737d402cd6375215f 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/adapter/SlidesAdapter.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/adapter/SlidesAdapter.java @@ -1,29 +1,14 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.adapter; import java.util.ArrayList; +import agency.tango.materialintroscreen.SlideComponet; import ohos.agp.components.Component; import ohos.agp.components.ComponentContainer; import ohos.agp.components.PageSliderProvider; import ohos.data.rdb.DataObservable; import ohos.data.rdb.DataObserver; -import agency.tango.materialintroscreen.SlideView; import agency.tango.materialintroscreen.SlideViewBuilder; /** @@ -39,7 +24,7 @@ import agency.tango.materialintroscreen.SlideViewBuilder; public class SlidesAdapter extends PageSliderProvider { private final DataObservable mObservable = new DataObservable(); private DataObserver mViewPagerObserver; - private ArrayList views = new ArrayList<>(); + private ArrayList views = new ArrayList<>(); /** * 构造器 @@ -56,7 +41,7 @@ public class SlidesAdapter extends PageSliderProvider { this.mViewPagerObserver = mViewPagerObserver; } - public void setViews(ArrayList views) { + public void setViews(ArrayList views) { this.views = views; } @@ -67,30 +52,30 @@ public class SlidesAdapter extends PageSliderProvider { @Override public Object createPageInContainer(ComponentContainer componentContainer, int position) { - SlideView slideView; + SlideComponet slideComponet; ComponentContainer.LayoutConfig layoutParams = new ComponentContainer.LayoutConfig( ComponentContainer.LayoutConfig.MATCH_PARENT, ComponentContainer.LayoutConfig.MATCH_PARENT); if (this.views.size() > position) { - slideView = this.views.get(position); - if (slideView != null && slideView.getRootView() != null) { - componentContainer.addComponent(slideView.getRootView(), + slideComponet = this.views.get(position); + if (slideComponet != null && slideComponet.getRootView() != null) { + componentContainer.addComponent(slideComponet.getRootView(), layoutParams); - views.set(position, slideView); - return slideView.getRootView(); + views.set(position, slideComponet); + return slideComponet.getRootView(); } } - slideView = this.getItem(position); + slideComponet = this.getItem(position); while (this.views.size() <= position) { this.views.add(null); } - this.views.set(position, slideView); - if (slideView != null && slideView.getRootView() != null) { - componentContainer.addComponent(slideView.getRootView(), + this.views.set(position, slideComponet); + if (slideComponet != null && slideComponet.getRootView() != null) { + componentContainer.addComponent(slideComponet.getRootView(), layoutParams); - views.set(position, slideView); - return slideView.getRootView(); + views.set(position, slideComponet); + return slideComponet.getRootView(); } else { return new Component(componentContainer.getContext()); } @@ -141,8 +126,8 @@ public class SlidesAdapter extends PageSliderProvider { * @return 是否应该锁定页面 */ public boolean shouldLockSlide(int position) { - SlideView slideView = getItem(position); - return !slideView.canMoveFurther() || slideView.hasNeededPermissionsToGrant(); + SlideComponet slideComponet = getItem(position); + return !slideComponet.canMoveFurther() || slideComponet.hasNeededPermissionsToGrant(); } /** @@ -151,7 +136,7 @@ public class SlidesAdapter extends PageSliderProvider { * @param var1 pageslider子控件位置 * @return 某个位置的子控件 */ - public SlideView getItem(int var1) { + public SlideComponet getItem(int var1) { if (views == null || var1 < 0 || var1 >= views.size() || views.get(var1) == null) { return new SlideViewBuilder().build(null); } @@ -164,7 +149,7 @@ public class SlidesAdapter extends PageSliderProvider { * * @param view 子控件 */ - public void addItem(SlideView view) { + public void addItem(SlideComponet view) { views.add(getCount(), view); notifyDataChanged(); } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/AlphaTranslation.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/AlphaTranslation.java index 8ac506022e4f0a6c51eaefd7aa0f537185e1598b..c1891ea52fed1a77f828623b88e6b21434265c25 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/AlphaTranslation.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/AlphaTranslation.java @@ -1,18 +1,3 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.animations.translations; import ohos.agp.components.Component; diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/DefaultAlphaTranslation.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/DefaultAlphaTranslation.java index 8d695bd10344860fb99da92505fd124175d1cd2c..d74b34d330d8cb9eac4401f45b943a49187b93ba 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/DefaultAlphaTranslation.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/DefaultAlphaTranslation.java @@ -1,18 +1,3 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.animations.translations; import ohos.agp.components.Component; diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/DefaultPositionTranslation.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/DefaultPositionTranslation.java index 009b2defcf8b321225261554b5bd5622542e5512..94beb0d32ac6734c58cb9a392a91e0ed504d4724 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/DefaultPositionTranslation.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/DefaultPositionTranslation.java @@ -1,18 +1,3 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.animations.translations; import ohos.agp.components.Component; diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/EnterDefaultTranslation.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/EnterDefaultTranslation.java index 332cec4309902daf81ed182434f32a9b83a585c8..b194a88e7ba5c34dd471954f1730459f2f3d5251 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/EnterDefaultTranslation.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/EnterDefaultTranslation.java @@ -1,18 +1,3 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.animations.translations; import java.io.IOException; @@ -31,9 +16,7 @@ import agency.tango.materialintroscreen.ResourceTable; * @Package: agency.tango.materialintroscreen.animations.translations * @ClassName: EnterDefaultTranslation * @Description: pageslider随着滑动 传入的控件的竖直方向位移动态改变实现类---页面滑入 - * @CreateDate: 2021/4/12 15:43 - * @UpdateDate: 2021/4/12 15:43 * @UpdateRemark: 暂无 * @Version: 1.0 diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/ExitDefaultTranslation.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/ExitDefaultTranslation.java index 93493ec61c38b18d430eef6dde4790f854913717..f31e9c213ae68098e13599ba75977cd2491a713a 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/ExitDefaultTranslation.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/ExitDefaultTranslation.java @@ -1,18 +1,3 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.animations.translations; import java.io.IOException; diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/NoTranslation.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/NoTranslation.java index 04d2e031e13cf48cf5d89a22dd076feec307f26e..73701aae1f3ea580ecc6d3b3709448887e7a0de4 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/NoTranslation.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/translations/NoTranslation.java @@ -1,18 +1,3 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.animations.translations; import ohos.agp.components.Component; @@ -24,9 +9,7 @@ import agency.tango.materialintroscreen.animations.IViewTranslation; * @Package: agency.tango.materialintroscreen.animations.translations * @ClassName: NoTranslation * @Description: pageslider随着滑动 位移动态改变实现类---无位移 - * @CreateDate: 2021/4/12 15:43 - * @UpdateDate: 2021/4/12 15:43 * @UpdateRemark: 暂无 * @Version: 1.0 diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/BackButtonTranslationWrapper.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/BackButtonTranslationWrapper.java index ad413a60127f8c28a083d7ef5ae9b32abb5556db..751d7919a2f3ecedc70ca39d0df1cda93445232f 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/BackButtonTranslationWrapper.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/BackButtonTranslationWrapper.java @@ -1,18 +1,3 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.animations.wrappers; import ohos.agp.components.Component; @@ -22,15 +7,12 @@ import agency.tango.materialintroscreen.animations.translations.DefaultPositionT import agency.tango.materialintroscreen.animations.translations.EnterDefaultTranslation; import agency.tango.materialintroscreen.animations.translations.ExitDefaultTranslation; - /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.animations.wrappers * @ClassName: BackButtonTranslationWrapper * @Description: 返回按键滑动行为动画设置类(进入动画 默认动画 退出动画) - * @CreateDate: 2021/4/12 15:57 - * @UpdateDate: 2021/4/12 15:57 * @UpdateRemark: 暂无 * @Version: 1.0 diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/NextButtonTranslationWrapper.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/NextButtonTranslationWrapper.java index 99b17904705ff071f4e2899a5d4c633f9828f9e7..2f03fc466caa6d13098bf073af3a71f8a120e625 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/NextButtonTranslationWrapper.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/NextButtonTranslationWrapper.java @@ -1,18 +1,3 @@ -/* - 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 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. - */ - package agency.tango.materialintroscreen.animations.wrappers; import ohos.agp.animation.AnimatorProperty; @@ -23,15 +8,12 @@ import agency.tango.materialintroscreen.animations.translations.DefaultPositionT import agency.tango.materialintroscreen.animations.translations.ExitDefaultTranslation; import agency.tango.materialintroscreen.interceptor.CycleInterpolator; - /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.animations.wrappers * @ClassName: NextButtonTranslationWrapper * @Description: 下一步按键滑动行为动画设置类(错误动画 默认动画 退出动画) - * @CreateDate: 2021/4/12 15:57 - * @UpdateDate: 2021/4/12 15:57 * @UpdateRemark: 暂无 * @Version: 1.0 diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/PageIndicatorTranslationWrapper.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/PageIndicatorTranslationWrapper.java index b8d97421ed38870f87e71dc7a4029b736896b9b9..fea9a4d65eb6aa0815b1d1a1ca65ff2fa3d3dce5 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/PageIndicatorTranslationWrapper.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/PageIndicatorTranslationWrapper.java @@ -6,15 +6,12 @@ import agency.tango.materialintroscreen.animations.ViewTranslationWrapper; import agency.tango.materialintroscreen.animations.translations.DefaultPositionTranslation; import agency.tango.materialintroscreen.animations.translations.ExitDefaultTranslation; - /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.animations.wrappers * @ClassName: PageIndicatorTranslationWrapper * @Description: pageslider指示器滑动行为动画设置类(默认动画 退出动画) - * @CreateDate: 2021/4/12 15:57 - * @UpdateDate: 2021/4/12 15:57 * @UpdateRemark: 暂无 * @Version: 1.0 diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/SkipButtonTranslationWrapper.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/SkipButtonTranslationWrapper.java index ad40aeb10a16d5f769628e530d9b9912aab233c0..ead58205d4f15b24f87138641d0116bfc6b714bc 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/SkipButtonTranslationWrapper.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/SkipButtonTranslationWrapper.java @@ -7,15 +7,12 @@ import agency.tango.materialintroscreen.animations.translations.DefaultPositionT import agency.tango.materialintroscreen.animations.translations.EnterDefaultTranslation; import agency.tango.materialintroscreen.animations.translations.ExitDefaultTranslation; - /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.animations.wrappers * @ClassName: SkipButtonTranslationWrapper * @Description: 跳过按钮滑动行为动画设置类(进入动画 默认动画 退出动画) - * @CreateDate: 2021/4/12 15:57 - * @UpdateDate: 2021/4/12 15:57 * @UpdateRemark: 暂无 * @Version: 1.0 diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/ViewPagerTranslationWrapper.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/ViewPagerTranslationWrapper.java index 102116904e21977543108e998dd5cccc2082838f..8d89cdae93fc936a164a0ff68afae689b57184bb 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/ViewPagerTranslationWrapper.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/wrappers/ViewPagerTranslationWrapper.java @@ -6,7 +6,6 @@ import agency.tango.materialintroscreen.animations.ViewTranslationWrapper; import agency.tango.materialintroscreen.animations.translations.AlphaTranslation; import agency.tango.materialintroscreen.animations.translations.DefaultAlphaTranslation; - /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.animations.wrappers diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/listeners/MessageButtonBehaviourOnPageSelected.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/listeners/MessageButtonBehaviourOnPageSelected.java index 8f5d8f7cefe804430124f9eb827d1c874eabe009..2906023478cbe0045ae3b19526ec2bee2461e5a0 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/listeners/MessageButtonBehaviourOnPageSelected.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/listeners/MessageButtonBehaviourOnPageSelected.java @@ -2,6 +2,7 @@ package agency.tango.materialintroscreen.listeners; import java.io.IOException; +import agency.tango.materialintroscreen.SlideComponet; import ohos.agp.animation.Animator; import ohos.agp.animation.AnimatorProperty; import ohos.agp.components.Button; @@ -12,7 +13,6 @@ import ohos.global.resource.WrongTypeException; import ohos.utils.LongPlainArray; import agency.tango.materialintroscreen.MessageButtonBehaviour; -import agency.tango.materialintroscreen.SlideView; import agency.tango.materialintroscreen.adapter.SlidesAdapter; import agency.tango.materialintroscreen.utils.LogUtil; import agency.tango.materialintroscreen.ResourceTable; @@ -49,16 +49,16 @@ public class MessageButtonBehaviourOnPageSelected implements IPageSelectedListen if (messageButton == null || adapter.getItem(position) == null) { return; } - final SlideView slideView = adapter.getItem(position); - if (slideView.hasAnyPermissionsToGrant()) { + final SlideComponet slideComponet = adapter.getItem(position); + if (slideComponet.hasAnyPermissionsToGrant()) { showMessageButton(); try { - messageButton.setText(slideView.getContext() + messageButton.setText(slideComponet.getContext() .getResourceManager().getElement(ResourceTable.String_grant_permissions).getString()); } catch (IOException | NotExistException | WrongTypeException e) { LogUtil.error(this.getClass().getSimpleName(), e.toString()); } - messageButton.setClickedListener(component -> slideView.askForPermissions()); + messageButton.setClickedListener(component -> slideComponet.askForPermissions()); } else if (checkIfMessageButtonHasBehaviour(position)) { showMessageButton(); if (messageButtonBehaviours == null ) { diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/listeners/scrollListeners/ParallaxScrollListener.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/listeners/scrollListeners/ParallaxScrollListener.java index dd009493075dff46cbab1ec9eaba95515483957d..60a6586f020f4d082eda36eced887395faee1b4d 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/listeners/scrollListeners/ParallaxScrollListener.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/listeners/scrollListeners/ParallaxScrollListener.java @@ -1,8 +1,8 @@ package agency.tango.materialintroscreen.listeners.scrollListeners; +import agency.tango.materialintroscreen.SlideComponet; import org.jetbrains.annotations.Nullable; -import agency.tango.materialintroscreen.SlideView; import agency.tango.materialintroscreen.adapter.SlidesAdapter; import agency.tango.materialintroscreen.listeners.IPageScrolledListener; import agency.tango.materialintroscreen.parallax.Parallaxable; @@ -31,8 +31,8 @@ public class ParallaxScrollListener implements IPageScrolledListener { return; } if (position != adapter.getCount()) { - SlideView view = adapter.getItem(position); - SlideView fragmentNext = getNextFragment(position); + SlideComponet view = adapter.getItem(position); + SlideComponet fragmentNext = getNextFragment(position); if (view instanceof Parallaxable) { ((Parallaxable) view).setOffset(offset); } @@ -43,7 +43,7 @@ public class ParallaxScrollListener implements IPageScrolledListener { } @Nullable - private SlideView getNextFragment(int position) { + private SlideComponet getNextFragment(int position) { if (adapter == null) { return new SlideViewBuilder().build(null); } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxView.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxComponet.java similarity index 90% rename from material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxView.java rename to material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxComponet.java index 8155d5f01a6204c9220e093b4eb6a2782dd16450..cdec2450192f4889b7d656eb5843a1bd466de57e 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxView.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxComponet.java @@ -15,14 +15,14 @@ import agency.tango.materialintroscreen.utils.LogUtil; /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.parallax - * @ClassName: ParallaxRelativeLayout + * @ClassName: ParallaxDependentLayout * @Description: 可偏移DependentLayout 根据容器内各个子控件在水平方向的位置 随着滑动按比例偏移子控件 * @CreateDate: 2021/4/12 17:12 * @UpdateDate: 2021/4/12 17:12 * @UpdateRemark: 暂无 * @Version: 1.0 */ -public abstract class ParallaxView implements Parallaxable { +public abstract class ParallaxComponet implements Parallaxable { /** * 上下文弱引用 */ @@ -36,7 +36,7 @@ public abstract class ParallaxView implements Parallaxable { */ protected Parallaxable parallaxLayout; - public ParallaxView(Context context) { + public ParallaxComponet(Context context) { this.mContext = new WeakReference<>(context); initView(); parallaxLayout = findParallaxLayout(getRootView()); @@ -80,10 +80,10 @@ public abstract class ParallaxView implements Parallaxable { queue.add(viewGroup.getComponentAt(i)); } } else { - LogUtil.info("ParallaxView", "findParallaxLayout"); + LogUtil.info("ParallaxComponet", "findParallaxLayout"); } } - return new ParallaxLinearLayout(null); + return new ParallaxDirectionalLayout(null); } @Override diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxRelativeLayout.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxDependentLayout.java similarity index 82% rename from material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxRelativeLayout.java rename to material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxDependentLayout.java index a9e844b17c26d4165877c37544f43e70923c469e..fcc500ff4abb5625e6c75f674bcb2a613bf459dc 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxRelativeLayout.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxDependentLayout.java @@ -11,23 +11,23 @@ import agency.tango.materialintroscreen.AttrString; /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.parallax - * @ClassName: ParallaxRelativeLayout + * @ClassName: ParallaxDependentLayout * @Description: 可偏移DependentLayout 根据容器内各个子控件在水平方向的位置 随着滑动按比例偏移子控件 * @CreateDate: 2021/4/12 17:12 * @UpdateDate: 2021/4/12 17:12 * @UpdateRemark: 暂无 * @Version: 1.0 */ -public class ParallaxRelativeLayout extends DependentLayout implements Parallaxable { - public ParallaxRelativeLayout(Context context) { +public class ParallaxDependentLayout extends DependentLayout implements Parallaxable { + public ParallaxDependentLayout(Context context) { super(context); } - public ParallaxRelativeLayout(Context context, AttrSet attrs) { + public ParallaxDependentLayout(Context context, AttrSet attrs) { super(context, attrs); } - public ParallaxRelativeLayout(Context context, AttrSet attrSet, String styleName) { + public ParallaxDependentLayout(Context context, AttrSet attrSet, String styleName) { super(context, attrSet, styleName); } @@ -40,7 +40,7 @@ public class ParallaxRelativeLayout extends DependentLayout implements Parallaxa public void setOffset(float offset) { for (int i = getChildCount() - 1; i >= 0; i--) { Component child = getComponentAt(i); - ParallaxRelativeLayout.LayoutConfig param = (LayoutConfig) child.getLayoutConfig(); + ParallaxDependentLayout.LayoutConfig param = (LayoutConfig) child.getLayoutConfig(); if (param.parallaxFactor == 0) { continue; } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxLinearLayout.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxDirectionalLayout.java similarity index 82% rename from material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxLinearLayout.java rename to material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxDirectionalLayout.java index 2e7e73c124dceb94e043477dc8bd381e8afa1b9a..19717fa668eb1cc1adbc70dfcd5958ec96249e98 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxLinearLayout.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxDirectionalLayout.java @@ -11,23 +11,23 @@ import agency.tango.materialintroscreen.AttrString; /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.parallax - * @ClassName: ParallaxLinearLayout + * @ClassName: ParallaxDirectionalLayout * @Description: 可偏移DirectionalLayout 根据容器内各个子控件在水平方向的位置 随着滑动按比例偏移子控件 * @CreateDate: 2021/4/12 17:12 * @UpdateDate: 2021/4/12 17:12 * @UpdateRemark: 暂无 * @Version: 1.0 */ -public class ParallaxLinearLayout extends DirectionalLayout implements Parallaxable { - public ParallaxLinearLayout(Context context) { +public class ParallaxDirectionalLayout extends DirectionalLayout implements Parallaxable { + public ParallaxDirectionalLayout(Context context) { super(context); } - public ParallaxLinearLayout(Context context, AttrSet attrs) { + public ParallaxDirectionalLayout(Context context, AttrSet attrs) { super(context, attrs); } - public ParallaxLinearLayout(Context context, AttrSet attrSet, String styleName) { + public ParallaxDirectionalLayout(Context context, AttrSet attrSet, String styleName) { super(context, attrSet, styleName); } @@ -40,7 +40,7 @@ public class ParallaxLinearLayout extends DirectionalLayout implements Parallaxa public void setOffset(float offset) { for (int i = getChildCount() - 1; i >= 0; i--) { Component child = getComponentAt(i); - ParallaxLinearLayout.LayoutConfig param = (LayoutConfig) child.getLayoutConfig(); + ParallaxDirectionalLayout.LayoutConfig param = (LayoutConfig) child.getLayoutConfig(); if (param.parallaxFactor == 0) { continue; } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxFrameLayout.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxStackLayout.java similarity index 88% rename from material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxFrameLayout.java rename to material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxStackLayout.java index 93f5d823c0cf72150956c1c8bd4c7ab896bd336a..d7817376363d0a0ba1eec438987e24b40edbf1e9 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxFrameLayout.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxStackLayout.java @@ -12,19 +12,19 @@ import agency.tango.materialintroscreen.AttrString; /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.parallax - * @ClassName: ParallaxFrameLayout + * @ClassName: ParallaxStackLayout * @Description: 可偏移StackLayout 根据容器内各个子控件在水平方向的位置 随着滑动按比例偏移子控件 * @CreateDate: 2021/4/12 17:12 * @UpdateDate: 2021/4/12 17:12 * @UpdateRemark: 暂无 * @Version: 1.0 */ -public class ParallaxFrameLayout extends StackLayout implements Parallaxable { - public ParallaxFrameLayout(Context context) { +public class ParallaxStackLayout extends StackLayout implements Parallaxable { + public ParallaxStackLayout(Context context) { super(context); } - public ParallaxFrameLayout(Context context, AttrSet attrs) { + public ParallaxStackLayout(Context context, AttrSet attrs) { super(context, attrs); } @@ -37,7 +37,7 @@ public class ParallaxFrameLayout extends StackLayout implements Parallaxable { public void setOffset(float offset) { for (int i = getChildCount() - 1; i >= 0; i--) { Component child = getComponentAt(i); - ParallaxFrameLayout.LayoutConfig layoutParams = (LayoutConfig) child.getLayoutConfig(); + ParallaxStackLayout.LayoutConfig layoutParams = (LayoutConfig) child.getLayoutConfig(); if (layoutParams.parallaxFactor == 0) { continue; } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/slice/MaterialIntroSlice.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/slice/MaterialIntroSlice.java index d2e2e8fe62cc0456fa9f7b4a3f00b04f65f2861d..e32368fb4f9a03554605f5d47930dacd1be571c7 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/slice/MaterialIntroSlice.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/slice/MaterialIntroSlice.java @@ -5,6 +5,7 @@ import java.util.concurrent.ConcurrentLinkedDeque; import static ohos.agp.components.Component.VISIBLE; +import agency.tango.materialintroscreen.SlideComponet; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.colors.RgbColor; @@ -26,7 +27,6 @@ import ohos.rpc.RemoteException; import ohos.utils.LongPlainArray; import agency.tango.materialintroscreen.MessageButtonBehaviour; -import agency.tango.materialintroscreen.SlideView; import agency.tango.materialintroscreen.adapter.SlidesAdapter; import agency.tango.materialintroscreen.animations.ViewTranslationWrapper; import agency.tango.materialintroscreen.animations.wrappers.BackButtonTranslationWrapper; @@ -281,7 +281,7 @@ public class MaterialIntroSlice extends AbilitySlice { * * @param slideFragment Fragment to add */ - public void addSlide(SlideView slideFragment) { + public void addSlide(SlideComponet slideFragment) { adapter.addItem(slideFragment); } @@ -291,7 +291,7 @@ public class MaterialIntroSlice extends AbilitySlice { * @param slideFragment Fragment to add * @param messageButtonBehaviour Add behaviour for message button */ - public void addSlide(SlideView slideFragment, MessageButtonBehaviour messageButtonBehaviour) { + public void addSlide(SlideComponet slideFragment, MessageButtonBehaviour messageButtonBehaviour) { adapter.addItem(slideFragment); messageButtonBehaviours.put(adapter.getLastItemPosition(), messageButtonBehaviour); @@ -376,8 +376,8 @@ public class MaterialIntroSlice extends AbilitySlice { } } - private void nextButtonBehaviour(final int position, final SlideView slideView) { - boolean hasPermissionToGrant = slideView.hasNeededPermissionsToGrant(); + private void nextButtonBehaviour(final int position, final SlideComponet slideComponet) { + boolean hasPermissionToGrant = slideComponet.hasNeededPermissionsToGrant(); if (hasPermissionToGrant) { nextButton.setImageElement(new VectorElement(getContext(), ResourceTable.Graphic_ic_next)); @@ -390,19 +390,19 @@ public class MaterialIntroSlice extends AbilitySlice { nextButton.setImageElement(new VectorElement(this, ResourceTable.Graphic_ic_next)); nextButton.setClickedListener(view -> { - doNextButtonClick(slideView); + doNextButtonClick(slideComponet); }); } } - private void doNextButtonClick(final SlideView slideView) { - if (slideView.canMoveFurther() == false) { + private void doNextButtonClick(final SlideComponet slideComponet) { + if (slideComponet.canMoveFurther() == false) { if (System.currentTimeMillis() - nextClickTime <= SNACKBAR_DURATION || (snackBar != null && snackBar.isShow())) { return; } nextClickTime = System.currentTimeMillis(); - errorOccurred(slideView); + errorOccurred(slideComponet); } else { viewPager.moveToNextPage(); } @@ -419,7 +419,7 @@ public class MaterialIntroSlice extends AbilitySlice { return; } clickTime = System.currentTimeMillis(); - SlideView slideFragment = + SlideComponet slideFragment = adapter.getItem(adapter.getLastItemPosition()); if (!slideFragment.canMoveFurther()) { errorOccurred(slideFragment); @@ -445,7 +445,7 @@ public class MaterialIntroSlice extends AbilitySlice { return ElementUtil.getColor(getContext(), color); } - private void errorOccurred(SlideView slideFragment) { + private void errorOccurred(SlideComponet slideFragment) { nextButtonTranslationWrapper.error(); showError(slideFragment.cantMoveFurtherErrorMessage()); } @@ -543,7 +543,7 @@ public class MaterialIntroSlice extends AbilitySlice { subscriber = new MyCommonEventSubscriber(subscribeInfo); CommonEventManager.subscribeCommonEvent(subscriber); } catch (RemoteException e) { - LogUtil.error("SlideView", e.toString()); + LogUtil.error("SlideComponet", e.toString()); } } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/BottomSnackBar.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/BottomSnackBar.java index 69b1c6caa9879ebdad7205d1c1fe96686e2f5c7b..8cd85250161f5e507aa277a7256a547716418439 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/BottomSnackBar.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/BottomSnackBar.java @@ -54,6 +54,7 @@ public class BottomSnackBar extends DirectionalLayout { private ComponentContainer mRootView; // 当前显示BottomSnackBar页面的最顶层控件 private EventHandler handler; private boolean isShow = false; + private int defaultTransY = DEFAULT_TRANS_Y; private BottomSnackBar(Context context, @NotNull Builder builder) { super(context); @@ -118,9 +119,9 @@ public class BottomSnackBar extends DirectionalLayout { if (DisplayManager.getInstance().getDefaultDisplay(mContext.get()).get().getAttributes() == null) { return; } - DEFAULT_TRANS_Y = DisplayManager.getInstance().getDefaultDisplay(mContext.get()).get().getAttributes().height; - if (DEFAULT_TRANS_Y < 0) { - DEFAULT_TRANS_Y = 0; + defaultTransY = DisplayManager.getInstance().getDefaultDisplay(mContext.get()).get().getAttributes().height; + if (defaultTransY < 0) { + defaultTransY = 0; } } @@ -150,8 +151,8 @@ public class BottomSnackBar extends DirectionalLayout { (ComponentContainer.LayoutConfig.MATCH_PARENT, ComponentContainer.LayoutConfig.MATCH_CONTENT); mRootView.addComponent(this, config1); - DEFAULT_TRANS_Y = mRootView.getHeight() > 0 ? mRootView.getHeight() : DEFAULT_TRANS_Y; - this.setTranslationY(DEFAULT_TRANS_Y); + defaultTransY = mRootView.getHeight() > 0 ? mRootView.getHeight() : DEFAULT_TRANS_Y; + this.setTranslationY(defaultTransY); beginAnimation(clickView); } @@ -162,7 +163,7 @@ public class BottomSnackBar extends DirectionalLayout { property.setValueUpdateListener((animatorValue, value) -> { float v1 = Math.abs(value / BOTTOM_SNACKBAR_HEIGHT); BottomSnackBar.this.setAlpha(v1); - float v2 = DEFAULT_TRANS_Y + value; + float v2 = defaultTransY + value; BottomSnackBar.this.setTranslationY((int) v2); clickView.setTranslationY((int) value); }); @@ -197,7 +198,7 @@ public class BottomSnackBar extends DirectionalLayout { propertyReverse.setValueUpdateListener((animatorValue, value) -> { float v1 = 1 - Math.abs(value / BOTTOM_SNACKBAR_HEIGHT); BottomSnackBar.this.setAlpha(v1); - float v2 = DEFAULT_TRANS_Y + value; + float v2 = defaultTransY + value; BottomSnackBar.this.setTranslationY((int) v2); clickView.setTranslationY((int) value); }); diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/InkPageIndicator.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/InkPageIndicator.java index e7a059317beab5c9abe89c35e620489efbb97daa..b7d1b0a568593a2c8cc1ea43dd21a7bd1642c360 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/InkPageIndicator.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/InkPageIndicator.java @@ -88,10 +88,6 @@ public class InkPageIndicator extends Component implements PageSlider.PageChange private PendingRevealAnimator[] revealAnimations; private SwipeableViewPager viewPager; - public InkPageIndicator(Context context) { - this(context, null, 0); - } - public InkPageIndicator(Context context, AttrSet attrs) { this(context, attrs, 0); } @@ -433,7 +429,7 @@ public class InkPageIndicator extends Component implements PageSlider.PageChange * @return 未选中小圆点路径 */ private Path getUnselectedPath(int page, float centerX, float nextCenterX, - float joiningFraction, float dotRevealFraction) { + float joiningFraction, float dotRevealFraction) { unselectedDotPath.rewind(); if (isDotNotJoining(page, joiningFraction, dotRevealFraction)) { unselectedDotPath.addCircle(dotCenterX[page], dotCenterY, @@ -766,7 +762,7 @@ public class InkPageIndicator extends Component implements PageSlider.PageChange // they're hidden while the // reveal animation runs final int[] dotsToHide = new int[steps]; - if (initialX1 != finalX1) { + if (Float.compare(initialX1, finalX1) != 0) { setFloatValues(initialX1, finalX1); for (int i = 0; i < steps; i++) { revealAnimations[i] = new PendingRevealAnimator(was + i, diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/SwipeableViewPager.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/SwipeableViewPager.java index 02ebe68dc2d4486c88bb1631d561f6a06b7d6c78..f1fe1e270b0a38f710ffd27904214d8ea3e5c970 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/SwipeableViewPager.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/SwipeableViewPager.java @@ -164,7 +164,7 @@ public class SwipeableViewPager extends PageSlider implements Component.DraggedL case (TouchEvent.PRIMARY_POINT_UP): float moveUpX = startPos - event.getPointerScreenPosition(0).getX(); float moveUpY = startPosY - event.getPointerScreenPosition(0).getY(); - if (getAdapter() != null && listener != null && moveUpX > 0 && getAdapter().isLastSlide(currentIt)) { + if (checkLastSlide(moveUpX)) { listener.onTouchUp(component, event); return false; } @@ -184,6 +184,10 @@ public class SwipeableViewPager extends PageSlider implements Component.DraggedL return false; } + private boolean checkLastSlide(float moveUpX) { + return getAdapter() != null && listener != null && moveUpX > 0 && getAdapter().isLastSlide(currentIt); + } + public void doTouchDown(Component component, TouchEvent event) { startPos = event.getPointerScreenPosition(0).getX(); diff --git a/material-intro-screen/src/main/resources/base/layout/fragment_slide.xml b/material-intro-screen/src/main/resources/base/layout/fragment_slide.xml index 32982a07e9cfb5fc1e3865e91380862ebd10482d..acdc1b009137bcba65e7dabf51190a58c28e6276 100644 --- a/material-intro-screen/src/main/resources/base/layout/fragment_slide.xml +++ b/material-intro-screen/src/main/resources/base/layout/fragment_slide.xml @@ -1,5 +1,5 @@ - - +