package safeluck.drive.evaluation.widget;
|
|
import android.app.Dialog;
|
import android.content.res.Configuration;
|
import android.graphics.Color;
|
import android.graphics.drawable.ColorDrawable;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.view.Gravity;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.Window;
|
import android.view.WindowManager;
|
|
import androidx.annotation.LayoutRes;
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import androidx.annotation.StyleRes;
|
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.fragment.app.DialogFragment;
|
|
|
/**
|
* DriveJudge
|
* Created by lzw on 2020/9/15. 10:49:12
|
* 邮箱:632393724@qq.com
|
* All Rights Saved! Chongqing AnYun Tech co. LTD
|
*/
|
public class MyWidgetDialog extends DialogFragment {
|
|
|
protected DialogParams mDialogParams;
|
|
@Override
|
public void onStart() {
|
super.onStart();
|
Window window = getDialog().getWindow();
|
WindowManager.LayoutParams params = window.getAttributes();
|
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
|
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
|
hideBottomUIMenu();
|
window.setAttributes(params);
|
}
|
|
protected void show(AppCompatActivity activity,String tag){
|
if (!TextUtils.isEmpty(tag)){
|
show(activity.getSupportFragmentManager(),tag);
|
}else{
|
show(activity.getSupportFragmentManager(),activity.getClass().getSimpleName());
|
}
|
}
|
/**
|
* 隐藏虚拟按键,并且全屏
|
*/
|
protected void hideBottomUIMenu() { //隐藏虚拟按键,并且全屏
|
if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
|
View v = getDialog().getWindow().getDecorView();
|
v.setSystemUiVisibility(View.GONE);
|
} else if (Build.VERSION.SDK_INT >= 19) { //for new api versions.
|
View decorView =getDialog().getWindow().getDecorView();
|
int uiOptions = (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN);
|
decorView.setSystemUiVisibility(uiOptions);
|
}
|
}
|
protected boolean isNonEmpty(String content) {
|
return !TextUtils.isEmpty(content);
|
}
|
|
@Override
|
public void onConfigurationChanged(Configuration newConfig) {
|
dismiss();
|
super.onConfigurationChanged(newConfig);
|
}
|
|
@NonNull
|
@Override
|
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
View dialogLayout = LayoutInflater.from(getContext()).inflate(setLayoutRes(),null);
|
builder.setView(dialogLayout);
|
onViewCreated(dialogLayout, null);
|
return builder.create();
|
}
|
|
public class DialogParams {
|
AppCompatActivity activity;
|
int style;
|
int animations;
|
int contentView;
|
String tag;
|
boolean isCancelable;
|
String prompt;
|
int type = -1;
|
}
|
protected int setLayoutRes() {
|
return mDialogParams.contentView;
|
}
|
@StyleRes
|
protected int setAnimations() {
|
return mDialogParams.animations;
|
}
|
|
|
@Nullable
|
@Override
|
public final View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
getDialog().setCanceledOnTouchOutside(setCancelable());
|
Window window = getDialog().getWindow();
|
int animationsRes = setAnimations();
|
if (animationsRes != 0 && animationsRes != -1) {
|
window.setWindowAnimations(animationsRes);
|
}
|
setCancelable(setCancelable());
|
//设置背景透明
|
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
int gravity = setGravity();
|
|
//即未设置
|
if (gravity != -1 && gravity != 0) {
|
window.setGravity(gravity);
|
}
|
return super.onCreateView(inflater, container, savedInstanceState);
|
}
|
|
private int setGravity() {
|
|
return Gravity.CENTER;
|
}
|
|
|
private boolean setCancelable() {
|
return mDialogParams.isCancelable;
|
}
|
public MyWidgetDialog() {
|
this.mDialogParams = new DialogParams();
|
}
|
protected static class Builder{
|
private MyWidgetDialog dialog;
|
private DialogParams params;
|
|
|
public Builder(AppCompatActivity activity){
|
dialog = new MyWidgetDialog();
|
params = dialog.mDialogParams;
|
params.activity = activity;
|
}
|
|
|
|
public Builder setStyle(int val){
|
params.style = val;
|
return this;
|
}
|
public Builder setAnimations(int val) {
|
params.animations = val;
|
return this;
|
}
|
|
public Builder setContentView(@LayoutRes int val) {
|
params.contentView = val;
|
return this;
|
}
|
|
public Builder setCancelable(boolean val) {
|
params.isCancelable = val;
|
return this;
|
}
|
|
public MyWidgetDialog build() {
|
if (params.contentView == -1) {
|
throw new IllegalArgumentException("Please set setContentView");
|
}
|
dialog.show(params.activity, params.tag);
|
return dialog;
|
}
|
|
}
|
|
protected void show(AppCompatActivity activity) {
|
show(activity.getSupportFragmentManager(), activity.getClass().getSimpleName());
|
}
|
|
}
|