修复活动banner快速点击会多次打开的问题

This commit is contained in:
zlzw 2022-10-27 16:52:06 +08:00
parent cccde7a3f8
commit 92ec8a3044
3 changed files with 64 additions and 34 deletions

View File

@ -4,6 +4,7 @@ import static com.yunbao.common.CommonAppContext.logger;
import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics;
import static com.yunbao.common.utils.RouteUtil.PATH_COIN; import static com.yunbao.common.utils.RouteUtil.PATH_COIN;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
@ -69,6 +70,7 @@ public class LiveGameDialogFragment extends AbsDialogFragment {
private int activityId = -1; private int activityId = -1;
private LinearLayout layout; private LinearLayout layout;
private boolean isFullWindow = false; private boolean isFullWindow = false;
private DialogInterface.OnShowListener listener;
public LiveGameDialogFragment() { public LiveGameDialogFragment() {
@ -89,6 +91,10 @@ public class LiveGameDialogFragment extends AbsDialogFragment {
this.activityId = activityId; this.activityId = activityId;
} }
public void setShowListener(DialogInterface.OnShowListener listener) {
this.listener = listener;
}
@Override @Override
protected int getLayoutId() { protected int getLayoutId() {
return R.layout.dialog_live_game; return R.layout.dialog_live_game;
@ -167,6 +173,9 @@ public class LiveGameDialogFragment extends AbsDialogFragment {
@Override @Override
public void onPageFinished(WebView view, String url) { public void onPageFinished(WebView view, String url) {
// view.loadUrl("javascript:window.androidObject.setHeight(document.body.clientHeight,document.body.clientWidth)"); // view.loadUrl("javascript:window.androidObject.setHeight(document.body.clientHeight,document.body.clientWidth)");
if (listener != null) {
listener.onShow(LiveGameDialogFragment.this.getDialog());
}
} }
}); });
initData(); initData();
@ -224,7 +233,7 @@ public class LiveGameDialogFragment extends AbsDialogFragment {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
ActiveModel model = (ActiveModel) tabLayout.getTabAt(i).getTag(); ActiveModel model = (ActiveModel) tabLayout.getTabAt(i).getTag();
if ((activityId + "").equals(model.getActiveId())) { if ((activityId + "").equals(model.getActiveId())) {
tabIndex=i; tabIndex = i;
return; return;
} }
} }
@ -270,6 +279,7 @@ public class LiveGameDialogFragment extends AbsDialogFragment {
this.roomId = roomId; this.roomId = roomId;
} }
//js调用原生 //js调用原生
public class JsInteration { public class JsInteration {
@JavascriptInterface @JavascriptInterface

View File

@ -4,6 +4,7 @@ import static com.yunbao.common.CommonAppContext.logger;
import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics; import static com.yunbao.common.CommonAppContext.mFirebaseAnalytics;
import static com.yunbao.common.utils.RouteUtil.PATH_COIN; import static com.yunbao.common.utils.RouteUtil.PATH_COIN;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
@ -57,6 +58,7 @@ public class LiveHDDialogFragment extends AbsDialogFragment {
private int showType = 0; private int showType = 0;
private boolean isFullWindow = false; private boolean isFullWindow = false;
private String roomId; private String roomId;
private DialogInterface.OnShowListener listener;
public LiveHDDialogFragment() { public LiveHDDialogFragment() {
@ -86,6 +88,10 @@ public class LiveHDDialogFragment extends AbsDialogFragment {
return true; return true;
} }
public void setShowListener(DialogInterface.OnShowListener listener) {
this.listener = listener;
}
@Override @Override
protected void setWindowAttributes(Window window) { protected void setWindowAttributes(Window window) {
@ -172,6 +178,9 @@ public class LiveHDDialogFragment extends AbsDialogFragment {
@Override @Override
public void onPageFinished(WebView view, String url) { public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:window.androidObject.setHeight(document.body.clientHeight,document.body.clientWidth)"); view.loadUrl("javascript:window.androidObject.setHeight(document.body.clientHeight,document.body.clientWidth)");
if (listener != null) {
listener.onShow(LiveHDDialogFragment.this.getDialog());
}
} }
}); });
if (bundle.getBoolean("banScrollY", false)) { if (bundle.getBoolean("banScrollY", false)) {
@ -280,12 +289,12 @@ public class LiveHDDialogFragment extends AbsDialogFragment {
@JavascriptInterface @JavascriptInterface
public void androidSignGift(String json) { public void androidSignGift(String json) {
JSONObject data=JSONObject.parseObject(json); JSONObject data = JSONObject.parseObject(json);
if(data!=null) { if (data != null) {
// 恭喜您第一天簽到成功 // 恭喜您第一天簽到成功
((LiveAudienceActivity) mContext).openSignWindow(data.getString("icon"), ((LiveAudienceActivity) mContext).openSignWindow(data.getString("icon"),
data.getString("name"), data.getString("name"),
"恭喜您" +data.getString("desc")+"簽到成功!" "恭喜您" + data.getString("desc") + "簽到成功!"
); );
} }
@ -294,13 +303,13 @@ public class LiveHDDialogFragment extends AbsDialogFragment {
@JavascriptInterface @JavascriptInterface
public void setHeight(String height, String width) { public void setHeight(String height, String width) {
if("0".equals(height)){ if ("0".equals(height)) {
return; return;
} }
Handler handler=new Handler(Looper.getMainLooper()); Handler handler = new Handler(Looper.getMainLooper());
handler.post(()->{ handler.post(() -> {
ViewGroup.LayoutParams params = mWebView.getLayoutParams(); ViewGroup.LayoutParams params = mWebView.getLayoutParams();
params.height=DpUtil.dp2px(Integer.parseInt(height)); params.height = DpUtil.dp2px(Integer.parseInt(height));
mWebView.setLayoutParams(params); mWebView.setLayoutParams(params);
mWebView.setVisibility(View.VISIBLE); mWebView.setVisibility(View.VISIBLE);
}); });

View File

@ -7,10 +7,12 @@ import static com.yunbao.live.bean.LiveChatBean.RECOMMEND_CARD_NOTIFY;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Outline; import android.graphics.Outline;
import android.os.Bundle; import android.os.Bundle;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.os.Handler; import android.os.Handler;
import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.SystemClock; import android.os.SystemClock;
import android.text.TextUtils; import android.text.TextUtils;
@ -3002,28 +3004,34 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
public void onBannerClick(List datas, int p) { public void onBannerClick(List datas, int p) {
Log.i("debug", "onBannerClick: " + mBannerList4.get(p).toString()); Log.i("debug", "onBannerClick: " + mBannerList4.get(p).toString());
BannerBean bean = mBannerList4.get(p); BannerBean bean = mBannerList4.get(p);
loadingDialog = DialogUitl.loadingDialog(mContext); if (loadingDialog == null) {
loadingDialog.show(); loadingDialog = DialogUitl.loadingDialog(mContext, WordUtil.getString(R.string.login_wait));
if (bean.getActivityId() == -1) {//-1写死跳活动弹窗
Bus.get().post(new LiveAudienceEvent()
.setActivity(true)
.setType(LiveAudienceEvent.LiveAudienceType.BOTTOM_COLLECTION));
if (loadingDialog != null && loadingDialog.isShowing()) {
loadingDialog.dismiss();
loadingDialog = null;
}
} else if (bean.getActivityId() == 0) {
openWebDialog(bean.getLink());
} else {
LiveGameDialogFragment fragment = new LiveGameDialogFragment("1".equals(bean.getShow_type()));
fragment.setActivityId(bean.getActivityId());
fragment.setRoomId(mLiveUid);
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGameDialogFragment");
if (loadingDialog != null && loadingDialog.isShowing()) {
loadingDialog.dismiss();
loadingDialog = null;
}
} }
loadingDialog.setOnShowListener(dialog -> {
if (bean.getActivityId() == -1) {//-1写死跳活动弹窗
Bus.get().post(new LiveAudienceEvent()
.setActivity(true)
.setType(LiveAudienceEvent.LiveAudienceType.BOTTOM_COLLECTION));
new Handler(Looper.getMainLooper()).postDelayed(() -> {
loadingDialog.dismiss();
loadingDialog = null;
}, 300);
} else if (bean.getActivityId() == 0) {
openWebDialog(bean.getLink());
} else {
LiveGameDialogFragment fragment = new LiveGameDialogFragment("1".equals(bean.getShow_type()));
fragment.setActivityId(bean.getActivityId());
fragment.setRoomId(mLiveUid);
fragment.setShowListener(dialog1 -> {
new Handler(Looper.getMainLooper()).postDelayed(() -> {
loadingDialog.dismiss();
loadingDialog = null;
}, 300);
});
fragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveGameDialogFragment");
}
});
loadingDialog.show();
} }
@ -3047,11 +3055,14 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
bundle1.putString("url", url); bundle1.putString("url", url);
LiveHDDialogFragment liveHDDialogFragment = new LiveHDDialogFragment(); LiveHDDialogFragment liveHDDialogFragment = new LiveHDDialogFragment();
liveHDDialogFragment.setArguments(bundle1); liveHDDialogFragment.setArguments(bundle1);
liveHDDialogFragment.setShowListener(dialog1 -> {
new Handler(Looper.getMainLooper()).postDelayed(() -> {
loadingDialog.dismiss();
loadingDialog = null;
}, 300);
});
liveHDDialogFragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment"); liveHDDialogFragment.show(((LiveAudienceActivity) mContext).getSupportFragmentManager(), "LiveHDDialogFragment");
if (loadingDialog != null && loadingDialog.isShowing()) {
loadingDialog.dismiss();
loadingDialog = null;
}
} }
}) })
.start(); .start();