From a3d4a39c9e04fb69cc1f961743873c56e079dab8 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期四, 24 十月 2024 05:54:15 +0800 Subject: [PATCH] 2024年10月24日05:54:12 --- app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java | 119 ++++++++++++++++++++++++++--------------------------------- 1 files changed, 53 insertions(+), 66 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java index cd25868..5f3d0fa 100644 --- a/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java +++ b/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java @@ -1,11 +1,11 @@ package com.hdl.photovoltaic.widget; +import android.annotation.SuppressLint; import android.app.Dialog; import android.content.Context; -import android.content.Intent; +import android.content.DialogInterface; import android.os.Bundle; import android.view.Gravity; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.Window; @@ -14,28 +14,27 @@ 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.utils.UnitConversionUtils; import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter; -import java.util.ArrayList; import java.util.List; + /** * 鍔ㄦ�佸垪琛ㄥ脊绐� */ -public class ListDialog extends Dialog { +public class ListDialog extends BaseDialog { private DialogListBinding viewBinding; private ListDialogAdapter listDialogAdapter; private final Context mContext; - private List<ListDialogAdapter.DialogItemData> list; + private List<LanguageAdapter.ItemData> list; private ListDialogAdapter.OnclickListener itemOnclickListener;//鐐瑰嚮浜嗙殑鐩戝惉鍣� @@ -44,12 +43,24 @@ this.mContext = context; } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + Window window = getWindow(); + if (window != null) { + window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + WindowManager.LayoutParams layoutParams = window.getAttributes(); + layoutParams.gravity = Gravity.START | Gravity.TOP; + layoutParams.width = (int) UnitConversionUtils.dpToPx(mContext, 140); + layoutParams.x = (int) UnitConversionUtils.dpToPx(mContext, 20); + layoutParams.y = (int) UnitConversionUtils.dpToPx(mContext, 89); + window.setAttributes(layoutParams); + } + viewBinding = DialogListBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); - setDialogTouchOutsideCloseable(this); initData(); LinearLayoutManager linearLayout = new LinearLayoutManager(mContext); listDialogAdapter = new ListDialogAdapter(this.list, mContext); @@ -57,13 +68,17 @@ viewBinding.logicRcv.setAdapter(listDialogAdapter); listDialogAdapter.setItemOnclickListener(new ListDialogAdapter.OnclickListener() { @Override - public void onClick(int position, ListDialogAdapter.DialogItemData itemData) { + public void onClick(int position, LanguageAdapter.ItemData itemData) { for (int i = 0; i < list.size(); i++) { - ListDialogAdapter.DialogItemData data = list.get(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); } }); @@ -75,20 +90,9 @@ } private void initData() { - list = new ArrayList<>(); - ListDialogAdapter.DialogItemData zh = new ListDialogAdapter.DialogItemData(); - zh.setState(false); - zh.setTitle("绠�浣撲腑鏂�"); - zh.setLanguage(LocalManageUtil.zh); - list.add(zh); - ListDialogAdapter.DialogItemData en = new ListDialogAdapter.DialogItemData(); - en.setState(false); - en.setTitle("English"); - en.setLanguage(LocalManageUtil.en); - list.add(en); - + list = LocalManageUtil.getLanguageList(); for (int i = 0; i < list.size(); i++) { - ListDialogAdapter.DialogItemData itemData = list.get(i); + LanguageAdapter.ItemData itemData = list.get(i); if (itemData.getLanguage().equals(UserConfigManage.getInstance().getCurrentAppLanguage())) { //鍒濆鍖栦箣鍓嶇姸鎬� itemData.setState(true); @@ -102,69 +106,52 @@ * @param position 绱㈠紩鍊� * @param itemData 閫変腑鏁版嵁 */ - private void languageSelectionDialog(int position, ListDialogAdapter.DialogItemData 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.isHideTitle(true); dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { @Override public void Confirm() { + dialog.dismiss(); 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() { + //鍙栨秷涔嬪悗杩樺師涔嬪墠鐘舵�� + for (int i = 0; i < list.size(); i++) { + LanguageAdapter.ItemData data = list.get(i); + data.setState(false); + if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(data.getLanguage())) { + data.setState(true); + } + } + listDialogAdapter.notifyDataSetChanged(); dialog.dismiss(); } }); - } - - //瑙e喅dialog.setCanceledOnTouchOutside(true) 涓嶇敓鏁堥棶棰� - public void setDialogTouchOutsideCloseable(Dialog dialog) { - viewBinding.getRoot().setOnTouchListener(new View.OnTouchListener() { + dialog.setOnDismissListener(new OnDismissListener() { @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(); + public void onDismiss(DialogInterface dialog) { + //鍙栨秷涔嬪悗杩樺師涔嬪墠鐘舵�� + for (int i = 0; i < list.size(); i++) { + LanguageAdapter.ItemData data = list.get(i); + data.setState(false); + if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(data.getLanguage())) { + data.setState(true); } - - if (left < x && x < right) { - - } else { - dismiss(); - } - - } - return true; + listDialogAdapter.notifyDataSetChanged(); } }); -// 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); + } + + } -- Gitblit v1.8.0