From 593303fa91fd541844b204ec913c462d7855a31e Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期五, 01 十二月 2023 18:24:44 +0800 Subject: [PATCH] 2023年12月01日18:24:35 --- app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java | 186 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 130 insertions(+), 56 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 230b631..cd25868 100644 --- a/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java +++ b/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java @@ -2,22 +2,46 @@ import android.app.Dialog; import android.content.Context; +import android.content.Intent; 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 androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.R; +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 Dialog { - private onNoListener onNoOnclickListener; - private onHDLChinaListener onHDLChinaListener; - private onHDLBahrainListener onHDLBahrainListener; private DialogListBinding viewBinding; + private ListDialogAdapter listDialogAdapter; + private final Context mContext; + private List<ListDialogAdapter.DialogItemData> list; + + private ListDialogAdapter.OnclickListener itemOnclickListener;//鐐瑰嚮浜嗙殑鐩戝惉鍣� + public ListDialog(@NonNull Context context) { - super(context, R.style.Custom_Dialog); + super(context, R.style.Custom_List_Dialog); + this.mContext = context; } @Override @@ -25,72 +49,122 @@ super.onCreate(savedInstanceState); viewBinding = DialogListBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); - initEvent(); - - } - - public String geHDLChinaText(){ - return viewBinding.hdlChinaTv.getText().toString(); - }; - public String getHDLBahrainText(){ - return viewBinding.hdlBahrainTv.getText().toString(); - - } - private void initEvent() { - - viewBinding.hdlCancelLl.setOnClickListener(new View.OnClickListener() { + 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(View v) { - if (onNoOnclickListener != null) { - onNoOnclickListener.Cancel(); + public void onClick(int position, ListDialogAdapter.DialogItemData itemData) { + for (int i = 0; i < list.size(); i++) { + ListDialogAdapter.DialogItemData data = list.get(i); + data.setState(false); } - dismiss(); - } - }); - viewBinding.hdlChinaLl.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (onHDLChinaListener != null) { - onHDLChinaListener.HDLChina(); - } - dismiss(); - } - }); - viewBinding.hdlBahrainLl.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (onHDLBahrainListener != null) { - onHDLBahrainListener.HDLBahrain(); - } - dismiss(); + list.get(position).setState(true); + listDialogAdapter.notifyDataSetChanged(); + languageSelectionDialog(position, itemData); } }); - } - public void setNoOnListener(onNoListener onclickListener) { - this.onNoOnclickListener = onclickListener; + public void setItemOnclickListener(ListDialogAdapter.OnclickListener onclickListener) { + this.itemOnclickListener = onclickListener; } - public void setOnHDLChinaOnListener(onHDLChinaListener onHDLChinaListener) { - this.onHDLChinaListener = onHDLChinaListener; + 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); + + for (int i = 0; i < list.size(); i++) { + ListDialogAdapter.DialogItemData itemData = list.get(i); + if (itemData.getLanguage().equals(UserConfigManage.getInstance().getCurrentAppLanguage())) { + //鍒濆鍖栦箣鍓嶇姸鎬� + itemData.setState(true); + } + } } - public void setOnHDLBahrainListener(onHDLBahrainListener onHDLBahrainListener) { - this.onHDLBahrainListener = onHDLBahrainListener; + /** + * 浜屾纭鎻愮ず妗� + * + * @param position 绱㈠紩鍊� + * @param itemData 閫変腑鏁版嵁 + */ + private void languageSelectionDialog(int position, ListDialogAdapter.DialogItemData 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 interface onNoListener { - void Cancel(); - } + //瑙e喅dialog.setCanceledOnTouchOutside(true) 涓嶇敓鏁堥棶棰� + 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) { - public interface onHDLChinaListener { - void HDLChina(); - } + } else { + dismiss(); + } - public interface onHDLBahrainListener { - void HDLBahrain(); - } + 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); + } } -- Gitblit v1.8.0