ToastAlertDialog.java 3.16 KB
package com.sunvote.xpadapp.dialog;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;

import com.sunvote.xpadapp.MainActivity;
import com.sunvote.xpadapp.R;

public class ToastAlertDialog {

    private AlertDialog dialog;
    private AlertDialog.Builder builder;
    private TextView messageView ;
    private Handler handler;
    private Context context;

    public ToastAlertDialog setMessage(CharSequence message) {
        messageView.setText(message);
        return this;
    }

    public ToastAlertDialog(Context context){
        this.context = context;
        builder = new AlertDialog.Builder(context);
        handler = new Handler(Looper.getMainLooper());
        builder.setCancelable(true);
        builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface d) {
                handler.postDelayed(hideMenu,10);
            }
        });
        View rootView = LayoutInflater.from(context).inflate(R.layout.toast_dialog,null);
        messageView = rootView.findViewById(R.id.message);
        rootView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(dialog != null){
                    dialog.dismiss();
                }
            }
        });
        builder.setView(rootView);
    }

    Runnable close = new Runnable() {
        @Override
        public void run() {
            if(dialog != null){
                dialog.dismiss();
            }
        }
    };

    public void show(){
        if(dialog == null){
            dialog = builder.create();
        }
        WindowManager.LayoutParams  lp= dialog.getWindow().getAttributes();
        lp.width=750;
        lp.height=380;
        lp.alpha = 0.6f;
        dialog.getWindow().setAttributes(lp);
        dialog.show();
        hideBottomUIMenu();
        handler.postDelayed(close,2000);
    }

    public static ToastAlertDialog makeText(Context context, CharSequence text){
        return new ToastAlertDialog(context).setMessage(text);
    }

    private Runnable hideMenu = new Runnable() {
        @Override
        public void run() {
            hideBottomUIMenu();
        }
    };

    public void hideBottomUIMenu(){
        if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower
            View v = dialog.getWindow().getDecorView();
            v.setSystemUiVisibility(View.GONE);
        } else if (Build.VERSION.SDK_INT >= 19) {
            View decorView = dialog.getWindow().getDecorView();
            if(context instanceof MainActivity){
                MainActivity mainActivity = (MainActivity)context;
                decorView = mainActivity.getWindow().getDecorView();
            }
            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | 0x00002000;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }
}