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">
-
-
+
+
+
+
-
+
-
+
-
+
-
-
\ No newline at end of file