FlowTooBigDialog.java 3.31 KB
package com.wd.common.dialog;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.KeyEvent;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.wd.fastcoding.base.R;


/**
 * created by wxl and 2022/8/2
 */
public class FlowTooBigDialog extends Dialog {

    private final OnCloseClickListener mOnCloseClickListener;
    private boolean isflowtoobig = true;
    private Runnable runnable;
    private Context context;

    public boolean isIsflowtoobig() {
        return isflowtoobig;
    }

    public void setIsflowtoobig(boolean isflowtoobig) {
        this.isflowtoobig = isflowtoobig;
    }

    public FlowTooBigDialog(@NonNull Context context, OnCloseClickListener onCloseClickListener) {
        super(context, R.style.AlertDialogStyle);
        this.context = context;
        mOnCloseClickListener = onCloseClickListener;
    }

    int secnum = -100;
    TextView titlt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_flowbig_layout);
        titlt = findViewById(R.id.titlt);
        runnable = new Runnable() {
            @Override
            public void run() {
                if (secnum != -100) {
                    if (secnum < 0) {
                        secnum = -100;
                        dismiss();
                        mOnCloseClickListener.back();
                        return;
                    }
//                    Log.e("!!!!", "secnum " + secnum);
                    titlt.setText(secnum-- + "");
                    handler.postDelayed(this, 1100);
                }
            }

        };
        setCancelable(false);
    }

    private Handler handler = new Handler(Looper.getMainLooper());

    @Override
    public void show() {
        if(getContext() != null){
            if(getContext() instanceof Activity){
                Activity activity = (Activity) getContext();
                if(!activity.isDestroyed() && !activity.isFinishing()){
                    super.show();
                    if (secnum == -100) {
                        secnum = 10;
                        handler.post(runnable);
                    }
                }
            }else{
                super.show();
                if (secnum == -100) {
                    secnum = 10;
                    handler.post(runnable);
                }
            }
        }
    }

    @Override
    public void dismiss() {
        try{
            if(context != null && isShowing()){
                if(context instanceof Activity){
                    Activity activity = (Activity) context;
                    if(!activity.isDestroyed() && !activity.isFinishing()){
                        super.dismiss();
                    }
                }else{
                    super.dismiss();
                }
            }
        }catch (Exception e){
        }

        secnum = -100;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    public interface OnCloseClickListener {

        void back();
    }
}