package com.hdl.photovoltaic.widget; import android.annotation.SuppressLint; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.content.res.AppCompatResources; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.BaseDialog; import com.hdl.photovoltaic.databinding.DialogDefaultFilteringBinding; import com.hdl.photovoltaic.enums.GridType; import com.hdl.photovoltaic.enums.UnitType; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlDeviceLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; public class DefaultFilteringDialog extends BaseDialog { private final Context mContext; DialogDefaultFilteringBinding viewBinding; OnClickListener mOnClickListener; final String text1 = "0-5"; final String text2 = "5-10"; final String text3 = "10-15"; final String text4 = "15-30"; final String text5 = "30-100"; final String text6 = "100-300"; final String text7 = "300-500"; final String text8 = "500+"; private String mStateValue = GridType.All; public DefaultFilteringDialog(@NonNull Context context) { super(context, R.style.Custom_Dialog); 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); window.setGravity(Gravity.BOTTOM); } viewBinding = DialogDefaultFilteringBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); //初始化界面控件 initView(); //初始化界面数据 // initData(mMinValue, mMaxValue, mStateValue); //初始化界面控件的事件 initEvent(); } private void initEvent() { viewBinding.clickRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); viewBinding.affirmLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String minValue = viewBinding.minEt.getText().toString(); String maxValue = viewBinding.maxEt.getText().toString(); if (!TextUtils.isEmpty(minValue) && !TextUtils.isEmpty(maxValue)) { try { if (Integer.parseInt(minValue) > Integer.parseInt(maxValue)) { //最小值在前面 if (mOnClickListener != null) { mOnClickListener.confirm(maxValue, minValue, mStateValue); } } else { if (mOnClickListener != null) { mOnClickListener.confirm(minValue, maxValue, mStateValue); } } } catch (Exception e) { //强制转换因输入值超出int值域范围报出异常 int maxValueInt = Integer.MAX_VALUE; HdlThreadLogic.toast(mContext, mContext.getString(R.string.the_input_value_has_been_exceeded) + "(" + maxValueInt + ")."); return; } } else { if (mOnClickListener != null) { mOnClickListener.confirm(minValue, maxValue, mStateValue); } } dismiss(); } }); viewBinding.cancelLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); viewBinding.resetRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(null, TitleType.string_capacity); setSelectedText(""); setBackgroundColor(viewBinding.allTv, TitleType.GridConnectedState); mStateValue = GridType.All; } }); viewBinding.text1Tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.text1Tv, TitleType.string_capacity); setSelectedText(viewBinding.text1Tv.getTag().toString()); } }); viewBinding.text2Tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.text2Tv, TitleType.string_capacity); setSelectedText(viewBinding.text2Tv.getTag().toString()); } }); viewBinding.text3Tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.text3Tv, TitleType.string_capacity); setSelectedText(viewBinding.text3Tv.getTag().toString()); } }); viewBinding.text4Tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.text4Tv, TitleType.string_capacity); setSelectedText(viewBinding.text4Tv.getTag().toString()); } }); viewBinding.text5Tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.text5Tv, TitleType.string_capacity); setSelectedText(viewBinding.text5Tv.getTag().toString()); } }); viewBinding.text6Tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.text6Tv, TitleType.string_capacity); setSelectedText(viewBinding.text6Tv.getTag().toString()); } }); viewBinding.text7Tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.text7Tv, TitleType.string_capacity); setSelectedText(viewBinding.text7Tv.getTag().toString()); } }); viewBinding.text8Tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.text8Tv, TitleType.string_capacity); setSelectedText(viewBinding.text8Tv.getTag().toString()); } }); viewBinding.allTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.allTv, TitleType.GridConnectedState); mStateValue = GridType.All; } }); viewBinding.gridConnectedTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.gridConnectedTv, TitleType.GridConnectedState); mStateValue = GridType.FULL_GRID; } }); viewBinding.offNetworkTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setBackgroundColor(viewBinding.offNetworkTv, TitleType.GridConnectedState); mStateValue = GridType.OFFLINE; } }); } /** * @param value 选中的值 */ private void setSelectedText(String value) { String minValue = "", maxValue = ""; if (TextUtils.isEmpty(value)) { minValue = ""; maxValue = ""; } else if (value.contains("+")) { minValue = "500"; maxValue = ""; } else if (value.contains("-")) { String[] min_max = value.split("-"); if (min_max.length == 2) { minValue = min_max[0]; maxValue = min_max[1]; } } viewBinding.minEt.setText(minValue); viewBinding.maxEt.setText(maxValue); } /** * 改变组件背景,字体颜色格式 * * @param textView 组件可以(设置为null,没有选中状态) * @param titleType 修改类型 */ private void setBackgroundColor(TextView textView, TitleType titleType) { if (titleType == TitleType.string_capacity) { viewBinding.text1Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.text1Tv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.text2Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.text2Tv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.text3Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.text3Tv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.text4Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.text4Tv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.text5Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.text5Tv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.text6Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.text6Tv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.text7Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.text7Tv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.text8Tv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.text8Tv.setTextColor(mContext.getColor(R.color.text_E6000000)); } else { viewBinding.allTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.allTv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.gridConnectedTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.gridConnectedTv.setTextColor(mContext.getColor(R.color.text_E6000000)); viewBinding.offNetworkTv.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.search_bj_ff05000000)); viewBinding.offNetworkTv.setTextColor(mContext.getColor(R.color.text_E6000000)); } if (textView != null) { textView.setBackground(AppCompatResources.getDrawable(mContext, R.drawable.selected_38c494)); textView.setTextColor(mContext.getColor(R.color.text_FFFFFFFF)); } } public void initState(String min, String max, String stateValue) { try { mStateValue = stateValue; viewBinding.minEt.setText(min); viewBinding.maxEt.setText(max); if (!TextUtils.isEmpty(min) || !TextUtils.isEmpty(max)) { String str = min + "-" + max; switch (str) { case text1: setBackgroundColor(viewBinding.text1Tv, TitleType.string_capacity); break; case text2: setBackgroundColor(viewBinding.text2Tv, TitleType.string_capacity); break; case text3: setBackgroundColor(viewBinding.text3Tv, TitleType.string_capacity); break; case text4: setBackgroundColor(viewBinding.text4Tv, TitleType.string_capacity); break; case text5: setBackgroundColor(viewBinding.text5Tv, TitleType.string_capacity); break; case text6: setBackgroundColor(viewBinding.text6Tv, TitleType.string_capacity); break; case text7: setBackgroundColor(viewBinding.text7Tv, TitleType.string_capacity); break; case text8: setBackgroundColor(viewBinding.text8Tv, TitleType.string_capacity); break; } } if (TextUtils.isEmpty(stateValue)) { setBackgroundColor(viewBinding.allTv, TitleType.GridConnectedState); } else if (stateValue.equals(GridType.FULL_GRID)) { setBackgroundColor(viewBinding.gridConnectedTv, TitleType.GridConnectedState); } else { setBackgroundColor(viewBinding.offNetworkTv, TitleType.GridConnectedState); } } catch (Exception ignored) { } } private void initView() { String s = mContext.getString(R.string.string_capacity) + "(" + UnitType.kWp + ")"; viewBinding.capacityTv.setText(s); viewBinding.text1Tv.setTag(text1); viewBinding.text2Tv.setTag(text2); viewBinding.text3Tv.setTag(text3); viewBinding.text4Tv.setTag(text4); viewBinding.text5Tv.setTag(text5); viewBinding.text6Tv.setTag(text6); viewBinding.text7Tv.setTag(text7); viewBinding.text8Tv.setTag(text8); viewBinding.allTv.setTag(GridType.All); viewBinding.gridConnectedTv.setTag(GridType.FULL_GRID); viewBinding.offNetworkTv.setTag(GridType.OFFLINE); setBackgroundColor(null, TitleType.string_capacity); setBackgroundColor(viewBinding.allTv, TitleType.GridConnectedState); } public void setOnClickListener(OnClickListener onClickListener) { if (onClickListener != null) { mOnClickListener = onClickListener; } } public interface OnClickListener { void confirm(String min, String max, String state); } public enum TitleType { string_capacity,//组串容量 GridConnectedState//并网状态 } }