diff --git a/entry/src/main/config.json b/entry/src/main/config.json index 76c529714c69404d4d300eb377f02963bc048ee2..44d9c889874f8987ae7452e4bbd1b1fe9d3f264b 100644 --- a/entry/src/main/config.json +++ b/entry/src/main/config.json @@ -8,8 +8,7 @@ }, "apiVersion": { "compatible": 5, - "target": 5, - "releaseType": "Beta1" + "target": 5 } }, "deviceConfig": {}, @@ -42,7 +41,7 @@ "label": "$string:app_name", "type": "page", "visible": false, - "launchType": "standard" + "launchType": "singleton" }, { "orientation": "unspecified", @@ -89,7 +88,6 @@ "description": "$string:splashability_description", "label": "$string:app_name", "type": "page", - "visible": false, "launchType": "standard" } ], @@ -135,7 +133,7 @@ } }, { - "name": "ohos.permission.LOCATION_IN_BACKGROUND", + "name": "ohos.permission.WRITE_CALENDAR", "reason": "location background", "usedScene": { "when": "always", 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 f0580eece173d382a32b13811d65e8ffccbbd494..28a970339a386cfdbd24f475add7138d0a2d0451 100644 --- a/entry/src/main/java/agency/tango/materialintro/slice/IntroSlice.java +++ b/entry/src/main/java/agency/tango/materialintro/slice/IntroSlice.java @@ -61,7 +61,7 @@ public class IntroSlice extends MaterialIntroSlice { SystemPermission.GET_WIFI_INFO}; String[] neededPermissions = {SystemPermission.CAMERA, SystemPermission.LOCATION, - SystemPermission.LOCATION_IN_BACKGROUND}; + SystemPermission.WRITE_CALENDAR}; SlideView permissionView = new SlideViewBuilder() .backgroundColor(ResourceTable.Color_third_slide_background) .buttonsColor(ResourceTable.Color_third_slide_buttons) 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 8a358a3a88df810d74833d25aa48a30fa9b5e691..8d3e8e00f6220b91629288553a7ff43b64d8da5c 100644 --- a/entry/src/main/java/agency/tango/materialintro/slice/MainAbilitySlice.java +++ b/entry/src/main/java/agency/tango/materialintro/slice/MainAbilitySlice.java @@ -15,6 +15,7 @@ package agency.tango.materialintro.slice; +import agency.tango.materialintro.MaterialIntro; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.aafwk.content.Operation; @@ -38,6 +39,7 @@ public class MainAbilitySlice extends AbilitySlice { @Override public void onStart(Intent intent) { super.onStart(intent); + MaterialIntro.setIsFirstOpen(false); super.setUIContent(ResourceTable.Layout_ability_main); } 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 05de06396ed056ebc3cc1c7c1bb61d4e72099428..32ea1ef1137498d1cd37008b80734ce5936881bd 100644 --- a/entry/src/main/java/agency/tango/materialintro/slice/SplashAbilitySlice.java +++ b/entry/src/main/java/agency/tango/materialintro/slice/SplashAbilitySlice.java @@ -60,7 +60,6 @@ public class SplashAbilitySlice extends AbilitySlice { .build(); secondIntent.setOperation(operation); startAbility(secondIntent); // 通过AbilitySlice的startAbility接口实现启动另一个页面 - MaterialIntro.setIsFirstOpen(false); } else { Intent secondIntent = new Intent(); // 指定待启动FA的bundleName和abilityName diff --git a/material-intro-screen/src/main/config.json b/material-intro-screen/src/main/config.json index 6e4a7990d2e4584fa0d12b4d88a361ad2da2dfda..9005609bacf81c9e66b4cb574ca7abd16d290b6e 100644 --- a/material-intro-screen/src/main/config.json +++ b/material-intro-screen/src/main/config.json @@ -8,8 +8,7 @@ }, "apiVersion": { "compatible": 5, - "target": 5, - "releaseType": "Beta1" + "target": 5 } }, "deviceConfig": {}, 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 61c97fbbb31b3717dd51202de836c3cb4eec9a8f..69b1c6caa9879ebdad7205d1c1fe96686e2f5c7b 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 @@ -53,7 +53,7 @@ public class BottomSnackBar extends DirectionalLayout { private Text mTvSnackBar; // 默认BottomSnackBar显示文字控件 private ComponentContainer mRootView; // 当前显示BottomSnackBar页面的最顶层控件 private EventHandler handler; - private boolean isShow=false; + private boolean isShow = false; private BottomSnackBar(Context context, @NotNull Builder builder) { super(context); @@ -62,7 +62,7 @@ public class BottomSnackBar extends DirectionalLayout { } public boolean isShow() { - return isShow; + return isShow; } /** @@ -133,7 +133,7 @@ public class BottomSnackBar extends DirectionalLayout { if (mContext == null || mContext.get() == null || clickView == null) { return; } - if (builder == null || !builder.isNeedShowBar) { + if (builder == null || !builder.isNeedShowBar || isShow) { return; } if (mTvSnackBar != null) { @@ -182,7 +182,7 @@ public class BottomSnackBar extends DirectionalLayout { if (mRootView != null && BottomSnackBar.this.getComponentParent() != null) { mRootView.removeComponent(BottomSnackBar.this); } - isShow=false; + isShow = false; } /** @@ -209,9 +209,9 @@ public class BottomSnackBar extends DirectionalLayout { propertyReverse.setStateChangedListener(new Animator.StateChangedListener() { @Override public void onStart(Animator animator) { - if(!isReverse){ - isShow=true; - } + if (!isReverse) { + isShow = true; + } } @Override @@ -327,6 +327,7 @@ public class BottomSnackBar extends DirectionalLayout { this.duration = duration; return this; } + public long getDuration() { return duration; } diff --git a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/OverScrollViewPager.java b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/OverScrollViewPager.java index 3ed84e316d700b2331962e4089743421cc7fab2d..e39a8b5c98c3c61e3c965de8484e674bace636f5 100644 --- a/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/OverScrollViewPager.java +++ b/material-intro-screen/src/main/java/agency/tango/materialintroscreen/widgets/OverScrollViewPager.java @@ -1,6 +1,11 @@ package agency.tango.materialintroscreen.widgets; +import agency.tango.materialintroscreen.ResourceTable; +import agency.tango.materialintroscreen.adapter.SlidesAdapter; +import agency.tango.materialintroscreen.interceptor.AccelerateInterpolator; +import agency.tango.materialintroscreen.interceptor.Interpolator; import agency.tango.materialintroscreen.listeners.GiveTouchToParentListener; +import agency.tango.materialintroscreen.listeners.IFinishListener; import ohos.agp.components.AttrSet; import ohos.agp.components.Component; import ohos.agp.components.DependentLayout; @@ -10,12 +15,6 @@ import ohos.eventhandler.EventHandler; import ohos.eventhandler.EventRunner; import ohos.multimodalinput.event.TouchEvent; -import agency.tango.materialintroscreen.adapter.SlidesAdapter; -import agency.tango.materialintroscreen.interceptor.AccelerateInterpolator; -import agency.tango.materialintroscreen.interceptor.Interpolator; -import agency.tango.materialintroscreen.listeners.IFinishListener; -import agency.tango.materialintroscreen.ResourceTable; - /** * @ProjectName: material-intro-screen-master * @Package: agency.tango.materialintroscreen.widgets @@ -88,9 +87,6 @@ public class OverScrollViewPager extends DependentLayout implements Component.To setAlpha(1 - positionOffset); requestChildSliding(); } - if (positionOffset > 0.5f) { - finishListener.doOnFinish(); - } } @Override @@ -99,8 +95,6 @@ public class OverScrollViewPager extends DependentLayout implements Component.To if (positionOffset > 0.5f) { finishOverScrollViewWithAnimation(moveOffset); } else { - setTranslationX(0); - setAlpha(1); resetOverScrollViewWithAnimation(moveOffset); } } @@ -148,6 +142,22 @@ public class OverScrollViewPager extends DependentLayout implements Component.To return false; } + /** + * 将容器的TranslationX回归到初始值 + * 以及alpha同步回归到初始值1 + * + * @param transX 移动偏移量 + * @return 是否可以滑动 + */ + private void transOverScrollView(float transX, float alpha) { + setTranslationX(transX); + if (0 <= alpha && alpha <= 1) { + setAlpha(alpha); + } else { + setAlpha(alpha); + } + } + private void requestChildSliding() { if (swipeableViewPager != null && swipeableViewPager.getOnPageChangeListeners() != null) { for (int i = 0; i < swipeableViewPager.getOnPageChangeListeners().size(); i++) { @@ -198,8 +208,11 @@ public class OverScrollViewPager extends DependentLayout implements Component.To private void resetOverScrollViewWithAnimation(final float currentX) { EventHandler current = new EventHandler(EventRunner.getMainEventRunner()); - current.postTask(new SmoothScrollRunnable((int) currentX, 0, 300, - new AccelerateInterpolator())); + SmoothScrollRunnable task = new SmoothScrollRunnable((int) currentX, 0, 300, + new AccelerateInterpolator()); + task.setFinish(false); + task.setStartTransX(getTranslationX(), 0, getAlpha(), 1); + current.postTask(task); } /** @@ -210,8 +223,10 @@ public class OverScrollViewPager extends DependentLayout implements Component.To private void finishOverScrollViewWithAnimation(float currentX) { EventHandler current = new EventHandler(EventRunner.getMainEventRunner()); - current.postTask(new SmoothScrollRunnable((int) currentX, -getWidth(), 300, - new AccelerateInterpolator())); + SmoothScrollRunnable task = new SmoothScrollRunnable((int) currentX, -getWidth(), 300, + new AccelerateInterpolator()); + task.setFinish(true); + current.postTask(task); } /** @@ -253,6 +268,12 @@ public class OverScrollViewPager extends DependentLayout implements Component.To private long startTime = -1; private int currentPosition = -1; + private float startTransX = -1; + private float endTransX = -1; + private float startAlpha = -1; + private float endAlpha = -1; + private boolean isFinish = false; + SmoothScrollRunnable(int fromPosition, int toPosition, long duration, Interpolator interpolator) { scrollFromPosition = fromPosition; @@ -261,6 +282,31 @@ public class OverScrollViewPager extends DependentLayout implements Component.To this.duration = duration; } + /** + * 设置是否需要关闭页面 + * + * @param finish 是否需要关闭页面 + */ + public void setFinish(boolean finish) { + isFinish = finish; + } + + /** + * 设置回弹的时候TranslationX的初始值 最终值 + * alpha的初始值 最终值,用于将父容器回弹 + * + * @param startTransX TranslationX的初始值 + * @param endTransX TranslationX的最终值 + * @param startAlpha alpha的初始值 + * @param endAlpha alpha的最终值 + */ + public void setStartTransX(float startTransX, float endTransX, float startAlpha, float endAlpha) { + this.startTransX = startTransX; + this.endTransX = endTransX; + this.startAlpha = startAlpha; + this.endAlpha = endAlpha; + } + @Override public void run() { if (startTime == -1) { @@ -269,7 +315,11 @@ public class OverScrollViewPager extends DependentLayout implements Component.To long normalizedTime = (1000 * (System.currentTimeMillis() - startTime)) / duration; normalizedTime = Math.max(Math.min(normalizedTime, 1000), 0); - + if (!isFinish) { + final float delTranX = (endTransX - startTransX) * interpolator.getInterpolation(normalizedTime / 1000f) + startTransX; + final float dealAlpha = (endAlpha - startAlpha) * interpolator.getInterpolation(normalizedTime / 1000f) + startAlpha; + transOverScrollView(delTranX, dealAlpha); + } final int deltaY = Math.round((scrollFromPosition - scrollToPosition) * interpolator.getInterpolation(normalizedTime / 1000f)); diff --git a/material-intro-screen/src/main/resources/base/graphic/message_button_background.xml b/material-intro-screen/src/main/resources/base/graphic/message_button_background.xml new file mode 100644 index 0000000000000000000000000000000000000000..71995243e75a81e1d4d7db0c12f1235ee5354cf8 --- /dev/null +++ b/material-intro-screen/src/main/resources/base/graphic/message_button_background.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/material-intro-screen/src/main/resources/base/layout/slice_material_intro_slice.xml b/material-intro-screen/src/main/resources/base/layout/slice_material_intro_slice.xml index 2b7a9c622877eed79fb5a8419b32f7e08aefb951..b59d2a1d342f571c582705db21efe384176b6240 100644 --- a/material-intro-screen/src/main/resources/base/layout/slice_material_intro_slice.xml +++ b/material-intro-screen/src/main/resources/base/layout/slice_material_intro_slice.xml @@ -21,14 +21,14 @@ ohos:alignment="horizontal_center" ohos:layout_alignment="bottom" ohos:orientation="vertical" - ohos:top_padding="32vp"> + ohos:bottom_padding="10vp">