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 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); } }