package com.hdl.photovoltaic.widget;
|
|
import android.app.Dialog;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.graphics.Color;
|
import android.graphics.drawable.ColorDrawable;
|
import android.os.Bundle;
|
import android.view.Gravity;
|
import android.view.MotionEvent;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.widget.LinearLayout;
|
|
import androidx.annotation.NonNull;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
import com.hdl.photovoltaic.HDLApp;
|
import com.hdl.photovoltaic.R;
|
import com.hdl.photovoltaic.base.BaseDialog;
|
import com.hdl.photovoltaic.config.UserConfigManage;
|
import com.hdl.photovoltaic.databinding.DialogListBinding;
|
import com.hdl.photovoltaic.ui.StartActivity;
|
import com.hdl.photovoltaic.ui.adapter.LanguageAdapter;
|
import com.hdl.photovoltaic.utils.AppManagerUtils;
|
import com.hdl.photovoltaic.utils.LocalManageUtil;
|
import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 动态列表弹窗
|
*/
|
public class ListDialog extends BaseDialog {
|
private DialogListBinding viewBinding;
|
|
private ListDialogAdapter listDialogAdapter;
|
private final Context mContext;
|
private List<LanguageAdapter.ItemData> list;
|
|
private ListDialogAdapter.OnclickListener itemOnclickListener;//点击了的监听器
|
|
public ListDialog(@NonNull Context context) {
|
super(context, R.style.Custom_List_Dialog);
|
this.mContext = context;
|
}
|
|
@Override
|
protected void onStart() {
|
super.onStart();
|
// 获取窗口对象
|
Window dialogWindow = this.getWindow();
|
if (dialogWindow != null) {
|
// 获取对话框当前的参数值
|
WindowManager.LayoutParams p = dialogWindow.getAttributes();
|
p.width = LinearLayout.LayoutParams.MATCH_PARENT;
|
p.height = LinearLayout.LayoutParams.WRAP_CONTENT;
|
p.gravity = Gravity.TOP;
|
// 设置到属性配置中
|
dialogWindow.setAttributes(p);
|
}
|
}
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
viewBinding = DialogListBinding.inflate(getLayoutInflater());
|
setContentView(viewBinding.getRoot());
|
this.setCanceledOnTouchOutside(true);
|
// setDialogTouchOutsideCloseable(this);
|
initData();
|
LinearLayoutManager linearLayout = new LinearLayoutManager(mContext);
|
listDialogAdapter = new ListDialogAdapter(this.list, mContext);
|
viewBinding.logicRcv.setLayoutManager(linearLayout);
|
viewBinding.logicRcv.setAdapter(listDialogAdapter);
|
listDialogAdapter.setItemOnclickListener(new ListDialogAdapter.OnclickListener() {
|
@Override
|
public void onClick(int position, LanguageAdapter.ItemData itemData) {
|
for (int i = 0; i < list.size(); i++) {
|
LanguageAdapter.ItemData data = list.get(i);
|
data.setState(false);
|
}
|
list.get(position).setState(true);
|
listDialogAdapter.notifyDataSetChanged();
|
if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(itemData.getLanguage())) {
|
//同一个不执行弹窗
|
return;
|
}
|
languageSelectionDialog(position, itemData);
|
}
|
});
|
|
}
|
|
public void setItemOnclickListener(ListDialogAdapter.OnclickListener onclickListener) {
|
this.itemOnclickListener = onclickListener;
|
}
|
|
private void initData() {
|
list = LocalManageUtil.getLanguageList();
|
for (int i = 0; i < list.size(); i++) {
|
LanguageAdapter.ItemData itemData = list.get(i);
|
if (itemData.getLanguage().equals(UserConfigManage.getInstance().getCurrentAppLanguage())) {
|
//初始化之前状态
|
itemData.setState(true);
|
}
|
}
|
}
|
|
/**
|
* 二次确认提示框
|
*
|
* @param position 索引值
|
* @param itemData 选中数据
|
*/
|
private void languageSelectionDialog(int position, LanguageAdapter.ItemData itemData) {
|
ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this.mContext);
|
dialog.setTitle(this.mContext.getString(R.string.loading_title_tip));
|
dialog.setContent(this.mContext.getString(R.string.loading_app_restart));
|
dialog.show();
|
dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
|
@Override
|
public void Confirm() {
|
if (itemOnclickListener != null) {
|
itemOnclickListener.onClick(position, itemData);
|
}
|
dismiss();
|
UserConfigManage.getInstance().setCurrentAppLanguage(itemData.getLanguage());
|
UserConfigManage.getInstance().Save();
|
AppManagerUtils.getAppManager().finishAllActivity();
|
Intent intent = new Intent();
|
intent.setClass(HDLApp.getInstance(), StartActivity.class);
|
mContext.startActivity(intent);
|
}
|
});
|
dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
|
@Override
|
public void Cancel() {
|
dialog.dismiss();
|
}
|
});
|
}
|
|
|
public void setDialogTouchOutsideCloseable(Dialog dialog) {
|
viewBinding.getRoot().setOnTouchListener(new View.OnTouchListener() {
|
@Override
|
public boolean onTouch(View v, MotionEvent event) {
|
int top = viewBinding.dialogParent.getTop();
|
int left = viewBinding.dialogParent.getLeft();
|
int bottom = viewBinding.dialogParent.getBottom();
|
int right = viewBinding.dialogParent.getRight();
|
int y = (int) event.getY();
|
int x = (int) event.getX();
|
if (event.getAction() == MotionEvent.ACTION_UP) {
|
if (top < y && y < bottom) {
|
|
} else {
|
dismiss();
|
}
|
|
if (left < x && x < right) {
|
|
} else {
|
dismiss();
|
}
|
|
|
}
|
return true;
|
}
|
});
|
// Window window = dialog.getWindow();
|
// WindowManager.LayoutParams params = window.getAttributes();
|
// params.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
// params.height = ViewGroup.LayoutParams.MATCH_PARENT;
|
// window.setAttributes(params);
|
// //空白处不能取消动画
|
// setCanceledOnTouchOutside(true);
|
}
|
}
|