From 11177a7e99bbffc60c71be3c4ec48603ecd455ad Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 28 Oct 2020 16:21:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B7=A6=E4=BE=A7=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E6=A1=86=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MogoEntranceButtonControllerImpl.java | 11 +++++ .../extensions/utils/EntranceViewHolder.java | 22 ++++++++++ .../IMogoEntranceButtonController.java | 13 ++++++ .../windowview/IMogoEntranceViewListener.java | 40 +++++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoEntranceViewListener.java diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java index 0f046fc48f..dedc8a8994 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java @@ -9,6 +9,7 @@ import com.mogo.module.extensions.utils.EntranceViewHolder; import com.mogo.service.MogoServicePaths; import com.mogo.service.entrance.ButtonIndex; import com.mogo.service.entrance.IMogoEntranceButtonController; +import com.mogo.service.windowview.IMogoEntranceViewListener; /** * @author congtaowang @@ -59,6 +60,16 @@ public class MogoEntranceButtonControllerImpl implements IMogoEntranceButtonCont EntranceViewHolder.getInstance().hideLeftNoticeByType(noticeType); } + @Override + public void addEntranceViewListener(IMogoEntranceViewListener listener) { + EntranceViewHolder.getInstance().addEntranceViewListener(listener); + } + + @Override + public void removeEntranceViewListener(IMogoEntranceViewListener listener) { + EntranceViewHolder.getInstance().removeEntranceViewListener(listener); + } + @Override public void init( Context context ) { diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java index bb89540f36..b8c31f56a3 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/EntranceViewHolder.java @@ -11,6 +11,7 @@ import android.widget.TextView; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.extensions.R; import com.mogo.module.extensions.bean.BottomLayerViewWrapper; +import com.mogo.service.windowview.IMogoEntranceViewListener; import com.mogo.utils.logger.Logger; import java.util.ArrayList; @@ -146,6 +147,9 @@ public class EntranceViewHolder { } public void forceHideNoticeView(){ + for (IMogoEntranceViewListener listener : listeners) { + listener.onViewRemoved(currentShowNoticeType); + } preAddLeftNoticeView = null; currentShowNoticeType = 0; if (leftNoticeContainer != null) { @@ -156,6 +160,11 @@ public class EntranceViewHolder { private int currentShowNoticeType = 0; public void showLeftNoticeByType(int noticeType, int iconRes, String content){ if(MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + if (currentShowNoticeType != noticeType && currentShowNoticeType != 0) { + for (IMogoEntranceViewListener listener : listeners) { + listener.onViewRemoved(currentShowNoticeType); + } + } currentShowNoticeType = noticeType; if (leftNoticeContainer != null) { realShowLeftNoticeView(generateNoticeViewByType(noticeType, iconRes, content)); @@ -196,6 +205,9 @@ public class EntranceViewHolder { leftNoticeContainer.removeAllViews(); leftNoticeContainer.addView(view); preAddLeftNoticeView = null; + for (IMogoEntranceViewListener listener : listeners) { + listener.onViewAdded(currentShowNoticeType); + } } private void realHideLeftNoticeView(View view) { @@ -203,6 +215,16 @@ public class EntranceViewHolder { leftNoticeContainer.setVisibility(View.GONE); } + private List listeners = new ArrayList<>(); + + public void addEntranceViewListener(IMogoEntranceViewListener listener) { + listeners.add(listener); + } + + public void removeEntranceViewListener(IMogoEntranceViewListener listener) { + listeners.remove(listener); + } + public void release(){ rootViewGroup = null; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java index 83a191c64c..d1e55e8f06 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java @@ -4,6 +4,7 @@ import android.view.View; import android.widget.TextView; import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.service.windowview.IMogoEntranceViewListener; /** * @author congtaowang @@ -110,4 +111,16 @@ public interface IMogoEntranceButtonController extends IProvider { * @param noticeType {@link #NOTICE_TYPE_SUDDENLY_BREAK}... */ void hideLeftNoticeByType(int noticeType); + + /** + * 添加view状态回调监听 + * @param listener 回调监听 + */ + void addEntranceViewListener(IMogoEntranceViewListener listener); + + /** + * 移除view状态回调监听 + * @param listener 回调监听 + */ + void removeEntranceViewListener(IMogoEntranceViewListener listener); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoEntranceViewListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoEntranceViewListener.java new file mode 100644 index 0000000000..65ec76d6ad --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoEntranceViewListener.java @@ -0,0 +1,40 @@ +package com.mogo.service.windowview; + +import android.view.View; + +/** + * EntranceView状态监听 + * + * @author tongchenfei + */ +public interface IMogoEntranceViewListener { + /** + * 新view展示 + * 只针对左侧提示(LeftNotice) + * @param type 展示的类型 + */ + void onViewAdded(int type); + + /** + * view移除 + * 只针对左侧提示(LeftNotice) + * @param type 移除的type + */ + void onViewRemoved(int type); + + /** + * view添加动画开始之前 + * @param view 添加的view + * @deprecated 暂时没用 + */ + @Deprecated + void beforeViewAddAnim(View view); + + /** + * view 移除动画开始之前 + * @param view 移除的view + * @deprecated 暂时没用 + */ + @Deprecated + void beforeViewRemoveAnim(View view); +}