package com.basic.security.widget; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.basic.security.count.R; import com.basic.security.activity.MainActivity; import com.basic.security.base.BaseApplication; import com.basic.security.manager.SettingManager; import com.basic.security.utils.ToastUtil; public class AuthDialog extends Dialog { private Context context; private ClickListenerInterface clickListenerInterface; public EditText password; public interface ClickListenerInterface { void doConfirm(); void doCancel(); } public AuthDialog(Context context) { super(context, R.style.ConfirmDialogStyle); this.context = context; this.setCanceledOnTouchOutside(false); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); } public void init() { LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.auth_dialog, null); setContentView(view); TextView tvTitle = view.findViewById(R.id.title); Button tvConfirm = view.findViewById(R.id.ok); Button cancel = view.findViewById(R.id.cancel); password = view.findViewById(R.id.password); tvConfirm.setOnClickListener(new clickListener()); cancel.setOnClickListener(new clickListener()); Window dialogWindow = getWindow(); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); DisplayMetrics d = context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用 //lp.width = (int) (d.widthPixels * 0.8); // 高度设置为屏幕的0.6 //dialogWindow.setAttributes(lp); hideSystemUI(); initSystemUIListener(); } private void initSystemUIListener() { if (getWindow() != null) { getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int visibility) { hideSystemUI(); } }); } } private void hideSystemUI() { if (getWindow() != null) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_IMMERSIVE); } } @Override public void show() { try { hideSystemUI(); super.show(); } catch (Exception e) { e.printStackTrace(); } } public void setClickListener(ClickListenerInterface clickListenerInterface) { this.clickListenerInterface = clickListenerInterface; } private class clickListener implements View.OnClickListener { @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.ok: String passwordStr = password.getText().toString(); String dbPassword = SettingManager.oldPassword(); if (passwordStr.length() == 0) { ToastUtil.show("密码不能为空"); return; } if (!dbPassword.equals(passwordStr)) { ToastUtil.show("密码不正确"); return; } AuthDialog.this.dismiss(); ((MainActivity) BaseApplication.getApplication().activity).do_goto_setting(); break; case R.id.cancel: AuthDialog.this.dismiss(); break; } } } @Override public boolean onTouchEvent(@NonNull MotionEvent event) { InputMethodManager imm = (InputMethodManager) BaseApplication.getApplication().getSystemService(context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(password.getWindowToken(), 0); return super.onTouchEvent(event); } }