Dialog.java 14 KB
package com.lotus.town.dialog;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

import com.ad.lib.AdInfo;
import com.ad.lib.AdManager;
import com.ad.lib.AdPlacement;
import com.ad.lib.AdViewGeneral;
import com.ad.lib.IAdCallback;
import com.ad.lib.RequestInfo;
import com.bytedance.sdk.openadsdk.AdSlot;
import com.lotus.town.R;
import com.sdk.Sdk;
import com.sdk.log.LogConstants;
import com.sdk.utils.NetworkUtils;

public class Dialog {
  private static final String TAG = "Dialog";

  private View mRootView;
  private TextView mMainTextTv;
  private TextView mSubTextTv;
  private TextView mCenterTextTv;
  private TextView mExtraHintTextTv;
  private ImageView mCancelIv;
  private Button mLeftBtn;
  private Button mRightBtn;
  private TextView mHideBtn;
  private FrameLayout mAdGeneral;
  private View.OnClickListener onBackPressListener = null;
  public Dialog() {

  }

  public boolean isShowing() {
    return mRootView != null;
  }

  public void showCenter(Activity activity,
                         String text,
                         View.OnClickListener onCancelClickListener,
                         String rightBtnText,
                         View.OnClickListener onRightBtnClickListener) {
    show(true, activity, text, null, onCancelClickListener, null, null, rightBtnText, onRightBtnClickListener, null, false, null, null);
  }

  public void show(Activity activity,
                   String mainText,
                   View.OnClickListener onCancelClickListener,
                   String rightBtnText,
                   View.OnClickListener onRightBtnClickListener) {
    show(activity, mainText, null, onCancelClickListener, null, null, rightBtnText, onRightBtnClickListener);
  }

  public void show(Activity activity,
                   String mainText,
                   String subText,
                   View.OnClickListener onCancelClickListener,
                   String rightBtnText,
                   View.OnClickListener onRightBtnClickListener) {
    show(activity, mainText, subText, onCancelClickListener, null, null, rightBtnText, onRightBtnClickListener);
  }

  public void show(Activity activity,
                   String mainText,
                   String subText,
                   View.OnClickListener onCancelClickListener,
                   String leftBtnText,
                   View.OnClickListener onLeftBtnClickListener,
                   String rightBtnText,
                   View.OnClickListener onRightBtnClickListener) {
    show(false, activity, mainText, subText, onCancelClickListener, leftBtnText, onLeftBtnClickListener, rightBtnText, onRightBtnClickListener, null, false, null, null);
  }

  public void showReward(Activity activity,
                   String mainText,
                   String subText,
                   View.OnClickListener onCancelClickListener,
                   String leftBtnText,
                   View.OnClickListener onLeftBtnClickListener,
                   String rightBtnText,
                   View.OnClickListener onRightBtnClickListener) {
    show(false, activity, mainText, subText, onCancelClickListener, leftBtnText, onLeftBtnClickListener, rightBtnText, onRightBtnClickListener, null,true, null, null);
  }

  public void showReward(Activity activity,
                   String mainText,
                   String subText,
                   View.OnClickListener onCancelClickListener,
                   String leftBtnText,
                   View.OnClickListener onLeftBtnClickListener,
                   String rightBtnText,
                   View.OnClickListener onRightBtnClickListener,
                   String extraHint) {
    show(false, activity, mainText, subText, onCancelClickListener, leftBtnText, onLeftBtnClickListener, rightBtnText, onRightBtnClickListener, extraHint, true, null, null);
  }

  public void showReward(Activity activity,
                   String mainText,
                   String subText,
                   View.OnClickListener onCancelClickListener,
                   String leftBtnText,
                   View.OnClickListener onLeftBtnClickListener,
                   String rightBtnText,
                   View.OnClickListener onRightBtnClickListener,
                   String extraHint,
                   String hideBtnText,
                   View.OnClickListener onHideBtnClickListener) {
    show(false, activity, mainText, subText, onCancelClickListener, leftBtnText, onLeftBtnClickListener, rightBtnText, onRightBtnClickListener, null, true, hideBtnText, onHideBtnClickListener);
  }

  public void show(Activity activity,
                   String mainText,
                   String subText,
                   View.OnClickListener onCancelClickListener,
                   String leftBtnText,
                   View.OnClickListener onLeftBtnClickListener,
                   String rightBtnText,
                   View.OnClickListener onRightBtnClickListener,
                   String extraHint,
                   String hideBtnText,
                   View.OnClickListener onHideBtnClickListener) {
      show(false, activity, mainText, subText, onCancelClickListener, leftBtnText, onLeftBtnClickListener, rightBtnText, onRightBtnClickListener, null, false, hideBtnText, onHideBtnClickListener);
  }

  private void show(boolean center,
                    Activity activity,
                    String mainText,
                    String subText,
                    View.OnClickListener onCancelClickListener,
                    String leftBtnText,
                    View.OnClickListener onLeftBtnClickListener,
                    String rightBtnText,
                    View.OnClickListener onRightBtnClickListener,
                    String extraHint,
                    boolean showVideo,
                    String hideBtnText,
                    View.OnClickListener onHideBtnClickListener) {
    if (activity == null || activity.isFinishing()) {
      Log.e(TAG, "show: failed, activity is not existed");
      return;
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
      if (activity.isDestroyed()) {
        Log.e(TAG, "show: failed, activity is not existed");
        return;
      }
    }
    onBackPressListener = onCancelClickListener;

    if (mRootView != null) {
      Log.e(TAG, "show: is showing");
      updateView(mRootView, mainText, subText, onCancelClickListener, leftBtnText, onLeftBtnClickListener, rightBtnText, onRightBtnClickListener);
      return;
    }
    Sdk.logger().logEvent(activity, LogConstants.LOG_DIALOG_SHOW);
    try {
      mRootView = activity.getLayoutInflater().inflate(R.layout.dialog, null);
      mAdGeneral = mRootView.findViewById(R.id.dialog_ad);
      initView(center, mRootView, mainText, subText, onCancelClickListener, leftBtnText, onLeftBtnClickListener, rightBtnText, onRightBtnClickListener, extraHint, showVideo, hideBtnText, onHideBtnClickListener);

      WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
      layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION;
      layoutParams.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
      layoutParams.gravity = Gravity.CENTER;
      layoutParams.dimAmount = 0.3f;
      layoutParams.format = PixelFormat.RGBA_8888;
      layoutParams.width = activity.getResources().getDimensionPixelSize(R.dimen.dialog_width);
      layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;

      WindowManager windowManager = activity.getWindowManager();
      windowManager.addView(mRootView, layoutParams);
      if (NetworkUtils.isNetworkConnected(Sdk.app())) {
        initAd(activity);
      }
    } catch (Exception e){

    }
  }

  private void initAd(final Activity activity){
    int adType = 0;
    RequestInfo info = new RequestInfo();
    info.setId(AdPlacement.getDialogId());
    info.setWidth(1080);
    info.setHeight(1920);
    info.setType(AdSlot.TYPE_INTERACTION_AD);
    AdManager.getInstance().getAdController(activity,adType).loadNativeAd(info, new IAdCallback() {
      @Override
      public void onADLoaded(AdInfo info) {
        mAdGeneral.setVisibility(View.VISIBLE);
        View view = AdViewGeneral.getAdBannerView(activity,info);
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        view.setLayoutParams(params);
        mAdGeneral.addView(view);
      }

      @Override
      public void onADError() {
        mAdGeneral.setVisibility(View.GONE);
      }

      @Override
      public void onShow() {
        Sdk.logger().logEvent(activity, LogConstants.LOG_DIALOG_AD_SHOW);
      }

      @Override
      public void onClicked() {
        Sdk.logger().logEvent(activity, LogConstants.LOG_DIALOG_AD_CLICK);
      }
    });
  }

  private int count = 3;
  private Handler refreshHandler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
      if(count == 3){
        count = 2;
        mCancelIv.setBackgroundResource(R.drawable.cancel_3);
        refreshHandler.sendEmptyMessageDelayed(0,1000);
        mCancelIv.setClickable(false);
      } else if(count == 2){
        mCancelIv.setClickable(false);
        count = 1;
        mCancelIv.setBackgroundResource(R.drawable.cancel_2);
        refreshHandler.sendEmptyMessageDelayed(0,1000);
      } else if(count == 1){
        mCancelIv.setClickable(false);
        count = 0;
        mCancelIv.setBackgroundResource(R.drawable.cancel_1);
        refreshHandler.sendEmptyMessageDelayed(0,1000);
      } else {
        count = 3;
        mCancelIv.setClickable(true);
        mCancelIv.setBackgroundResource(R.drawable.dialog_chahao);
      }
    }
  };

  private void initView(boolean center,
                        View view,
                        String mainText,
                        String subText,
                        View.OnClickListener onCancelClickListener,
                        String leftBtnText,
                        View.OnClickListener onLeftBtnClickListener,
                        String rightBtnText,
                        View.OnClickListener onRightBtnClickListener,
                        String extraHint,
                        boolean showVideo,
                        String hideBtnText,
                        View.OnClickListener onHideBtnClickListener) {
    mMainTextTv = view.findViewById(R.id.tv_main_text);
    mSubTextTv = view.findViewById(R.id.tv_sub_text);
    mCenterTextTv = view.findViewById(R.id.tv_center_text);
    mCancelIv = view.findViewById(R.id.iv_cancel);
    mLeftBtn = view.findViewById(R.id.btn_left);
    mRightBtn = view.findViewById(R.id.btn_right);
    mHideBtn = view.findViewById(R.id.hide_btn);
    mExtraHintTextTv = view.findViewById(R.id.tv_hint_text);
    mMainTextTv.setText(mainText);
    mSubTextTv.setText(subText);
    mCenterTextTv.setText(mainText);
    refreshHandler.sendEmptyMessage(0);
    mCancelIv.setOnClickListener(onCancelClickListener);
    if (TextUtils.isEmpty(extraHint)) {
      mExtraHintTextTv.setVisibility(View.GONE);
    } else {
      mExtraHintTextTv.setVisibility(View.VISIBLE);
      mExtraHintTextTv.setText(extraHint);
    }
    if (TextUtils.isEmpty(hideBtnText)) {
      mHideBtn.setVisibility(View.GONE);
    } else {
      mHideBtn.setVisibility(View.VISIBLE);
      mHideBtn.setText(hideBtnText);
      mHideBtn.setOnClickListener(onHideBtnClickListener);
    }
    if (center) {
      mMainTextTv.setVisibility(View.GONE);
      mSubTextTv.setVisibility(View.GONE);
      mCenterTextTv.setVisibility(View.VISIBLE);
    } else {
      mMainTextTv.setVisibility(View.VISIBLE);
      mSubTextTv.setVisibility(View.VISIBLE);
      mCenterTextTv.setVisibility(View.GONE);
    }
    if (TextUtils.isEmpty(leftBtnText)) {
      mLeftBtn.setVisibility(View.GONE);
      if(!showVideo) {
        mRightBtn.setCompoundDrawables(null, null, null, null);
      }
    } else {
      mLeftBtn.setText(leftBtnText);
      mLeftBtn.setOnClickListener(onLeftBtnClickListener);
    }
    if (TextUtils.isEmpty(rightBtnText)) {
      mRightBtn.setVisibility(View.GONE);
    } else {
      mRightBtn.setText(rightBtnText);
      mRightBtn.setOnClickListener(onRightBtnClickListener);
    }
  }

  private void updateView(View view,
                          String mainText,
                        String subText,
                        View.OnClickListener onCancelClickListener,
                        String leftBtnText,
                        View.OnClickListener onLeftBtnClickListener,
                        String rightBtnText,
                        View.OnClickListener onRightBtnClickListener) {
    mMainTextTv.setText(mainText);
    mSubTextTv.setText(subText);
    mCancelIv.setOnClickListener(onCancelClickListener);
    if (TextUtils.isEmpty(leftBtnText)) {
      mLeftBtn.setVisibility(View.GONE);
    } else {
      mLeftBtn.setText(leftBtnText);
      mLeftBtn.setOnClickListener(onLeftBtnClickListener);
    }
    if (TextUtils.isEmpty(rightBtnText)) {
      mRightBtn.setVisibility(View.GONE);
    } else {
      mRightBtn.setText(rightBtnText);
      mRightBtn.setOnClickListener(onRightBtnClickListener);
    }
  }

  public void onBackPress(){
    if(onBackPressListener != null) {
      onBackPressListener.onClick(null);
    }
  }

  public void dismiss(Activity activity) {
    if (activity == null || activity.isFinishing()) {
      Log.e(TAG, "dismiss: ignore, activity is not existed");
      return;
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
      if (activity.isDestroyed()) {
        Log.e(TAG, "dismiss: ignore, activity is not existed");
        return;
      }
    }

    if (mRootView != null) {
      WindowManager windowManager = activity.getWindowManager();
      windowManager.removeView(mRootView);
      mRootView = null;
    }
  }
}