package com.hdl.photovoltaic.widget;
|
|
import android.app.Activity;
|
import android.app.Dialog;
|
import android.content.Context;
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.text.method.HideReturnsTransformationMethod;
|
import android.text.method.PasswordTransformationMethod;
|
import android.view.View;
|
|
import androidx.annotation.NonNull;
|
import androidx.appcompat.content.res.AppCompatResources;
|
import androidx.constraintlayout.widget.ConstraintSet;
|
|
import com.hdl.photovoltaic.R;
|
import com.hdl.photovoltaic.databinding.LoadingConfirmInputBinding;
|
import com.hdl.photovoltaic.utils.KeyboardStateObserverUtils;
|
|
/**
|
* 输入确认框
|
*/
|
public class ConfirmationInputDialog extends Dialog {
|
|
public ConfirmationInputDialog(@NonNull Context context) {
|
super(context, R.style.Custom_AlertDialog);
|
this.mContext = context;
|
}
|
|
private final Context mContext;
|
private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器
|
private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器
|
private LoadingConfirmInputBinding viewBinding;
|
private String titleStr, yesStr, noStr;
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
viewBinding = LoadingConfirmInputBinding.inflate(getLayoutInflater());
|
setContentView(viewBinding.getRoot());
|
// setCancelable(true);//系统后退可以取消
|
//空白处不能取消动画
|
setCanceledOnTouchOutside(false);
|
//初始化界面控件
|
initView();
|
//初始化界面数据
|
initData();
|
//初始化界面控件的事件
|
initEvent();
|
//在界面中使用
|
KeyboardStateObserverUtils.getKeyboardStateObserver((Activity) mContext).setKeyboardVisibilityListener(new KeyboardStateObserverUtils.OnKeyboardVisibilityListener() {
|
@Override
|
public void onKeyboardShow(int h) {
|
//Toast.makeText(MainActivity.this,"键盘弹出",Toast.LENGTH_SHORT).show();
|
ConstraintSet cs = new ConstraintSet();
|
cs.clone(viewBinding.loadingParentCl);
|
// (viewBinding.loadingConfirmationRl.getTop()-dip2px(h))
|
cs.connect(R.id.loading_confirmation_rl, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, px2dip(h));//
|
//应用约束
|
cs.applyTo(viewBinding.loadingParentCl);
|
}
|
|
@Override
|
|
public void onKeyboardHide(int h) {
|
ConstraintSet cs = new ConstraintSet();
|
cs.clone(viewBinding.loadingParentCl);
|
cs.connect(R.id.loading_confirmation_rl, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, px2dip(h));//
|
//应用约束
|
cs.applyTo(viewBinding.loadingParentCl);
|
}
|
|
});
|
|
|
}
|
|
/**
|
* 自定义"标题"文本
|
*
|
* @param title 内容
|
*/
|
public void setTitle(String title) {
|
if (TextUtils.isEmpty(title)) {
|
return;
|
}
|
titleStr = title;
|
if (viewBinding != null) {
|
viewBinding.loadingConfirmationTitleTv.setText(titleStr);
|
}
|
|
}
|
|
/**
|
* 自定义"确认"文本
|
*
|
* @param confirm 内容
|
*/
|
public void setConfirmation(String confirm) {
|
if (TextUtils.isEmpty(confirm)) {
|
return;
|
}
|
yesStr = confirm;
|
|
if (viewBinding != null) {
|
viewBinding.dialogConfirmTv.setText(yesStr);
|
}
|
|
|
}
|
|
/**
|
* 自定义"取消"文本
|
*
|
* @param cancel 内容
|
*/
|
public void setCancel(String cancel) {
|
if (TextUtils.isEmpty(cancel)) {
|
return;
|
}
|
noStr = cancel;
|
|
if (viewBinding != null) {
|
viewBinding.dialogCancelTv.setText(noStr);
|
}
|
}
|
|
|
private void initEvent() {
|
viewBinding.dialogCancelLy.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (noOnclickListener != null) {
|
noOnclickListener.Cancel();
|
}
|
}
|
});
|
viewBinding.dialogConfirmLy.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (yesOnclickListener != null) {
|
yesOnclickListener.Confirm(viewBinding.loadingConfirmationInputEt.getText().toString());
|
}
|
}
|
});
|
|
|
viewBinding.loadingConfirmationClickTv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
v.setSelected(!v.isSelected());
|
if (v.isSelected()) {
|
viewBinding.loadingConfirmationInputEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
|
viewBinding.loadingConfirmationHideIv.setImageDrawable(AppCompatResources.getDrawable(mContext, R.drawable.show));
|
} else {
|
viewBinding.loadingConfirmationInputEt.setTransformationMethod(PasswordTransformationMethod.getInstance());
|
viewBinding.loadingConfirmationHideIv.setImageDrawable(AppCompatResources.getDrawable(mContext, R.drawable.hide));
|
}
|
//设置光标位置
|
viewBinding.loadingConfirmationInputEt.setSelection(viewBinding.loadingConfirmationInputEt.getText().length());
|
|
}
|
});
|
}
|
|
|
/**
|
* 初始化界面控件的显示数据
|
*/
|
private void initData() {
|
if (viewBinding == null) {
|
return;
|
}
|
//如果用户自定了title和message
|
if (!TextUtils.isEmpty(titleStr)) {
|
viewBinding.loadingConfirmationTitleTv.setText(titleStr);
|
}
|
//如果设置按钮文字
|
if (!TextUtils.isEmpty(yesStr)) {
|
viewBinding.dialogConfirmTv.setText(yesStr);
|
}
|
if (!TextUtils.isEmpty(noStr)) {
|
viewBinding.dialogCancelTv.setText(noStr);
|
}
|
}
|
|
private void initView() {
|
|
|
}
|
|
|
/**
|
* 设置取消按钮监听
|
*
|
* @param onNoOnclickListener -
|
*/
|
public void setNoOnclickListener(onNoOnclickListener onNoOnclickListener) {
|
if (onNoOnclickListener != null) {
|
this.noOnclickListener = onNoOnclickListener;
|
}
|
}
|
|
/**
|
* 设置确定按钮监听
|
*
|
* @param yesOnclickListener -
|
*/
|
public void setYesOnclickListener(onYesOnclickListener yesOnclickListener) {
|
if (yesOnclickListener != null) {
|
this.yesOnclickListener = yesOnclickListener;
|
}
|
|
}
|
|
public interface onNoOnclickListener {
|
void Cancel();
|
|
}
|
|
public interface onYesOnclickListener {
|
void Confirm(String str);
|
}
|
|
/**
|
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
|
*/
|
public int dip2px(float dpValue) {
|
if (mContext == null) {
|
return 0;
|
}
|
final float scale = mContext.getResources().getDisplayMetrics().density;
|
return (int) (dpValue * scale + 0.5f);
|
}
|
|
/**
|
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
|
*/
|
public int px2dip(float pxValue) {
|
final float scale = mContext.getResources().getDisplayMetrics().density;
|
return (int) (pxValue / scale + 0.5f);
|
}
|
|
}
|