| | |
| | | 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.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; |
| | |
| | | /** |
| | | * 动态列表弹窗 |
| | | */ |
| | | 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;//点击了的监听器 |
| | | |
| | |
| | | } |
| | | |
| | | @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()); |
| | | setDialogTouchOutsideCloseable(this); |
| | | this.setCanceledOnTouchOutside(true); |
| | | // setDialogTouchOutsideCloseable(this); |
| | | initData(); |
| | | LinearLayoutManager linearLayout = new LinearLayoutManager(mContext); |
| | | listDialogAdapter = new ListDialogAdapter(this.list, mContext); |
| | |
| | | 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); |
| | | } |
| | | }); |
| | |
| | | } |
| | | |
| | | 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); |
| | |
| | | * @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.setCanceledOnTouchOutside(true) 不生效问题 |
| | | |
| | | public void setDialogTouchOutsideCloseable(Dialog dialog) { |
| | | viewBinding.getRoot().setOnTouchListener(new View.OnTouchListener() { |
| | | @Override |