添加左侧提示框回调

This commit is contained in:
tongchenfei
2020-10-28 16:21:46 +08:00
parent 3fb3fe93fd
commit 11177a7e99
4 changed files with 86 additions and 0 deletions

View File

@@ -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 ) {

View File

@@ -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<IMogoEntranceViewListener> listeners = new ArrayList<>();
public void addEntranceViewListener(IMogoEntranceViewListener listener) {
listeners.add(listener);
}
public void removeEntranceViewListener(IMogoEntranceViewListener listener) {
listeners.remove(listener);
}
public void release(){
rootViewGroup = null;
}

View File

@@ -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);
}

View File

@@ -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);
}