From 4598b51c90c695c9ccbe5350a84e4a46b9d8e587 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期三, 22 五月 2024 20:19:02 +0800 Subject: [PATCH] 2024年05月22日20:18:54 --- app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java | 220 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 182 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java index 9c0de30..fa9bc5a 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java @@ -2,6 +2,9 @@ import androidx.annotation.NonNull; import androidx.appcompat.content.res.AppCompatResources; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import android.Manifest; import android.content.Context; @@ -14,6 +17,7 @@ import android.provider.Settings; import android.text.TextUtils; import android.view.View; +import android.widget.TextView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -27,10 +31,14 @@ import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.databinding.ActivityMyPowerStationBinding; import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch; +import com.hdl.photovoltaic.enums.LowerTagType; import com.hdl.photovoltaic.enums.NetworkType; +import com.hdl.photovoltaic.enums.PowerStationStatusType; import com.hdl.photovoltaic.listener.CloudCallBeak; +import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlDeviceLogic; import com.hdl.photovoltaic.other.HdlLogLogic; +import com.hdl.photovoltaic.other.HdlMessageLogic; import com.hdl.photovoltaic.other.HdlMqttLogic; import com.hdl.photovoltaic.other.HdlOtaLogic; import com.hdl.photovoltaic.other.HdlResidenceLogic; @@ -38,6 +46,11 @@ import com.hdl.photovoltaic.other.HdlUniLogic; import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo; import com.hdl.photovoltaic.ui.bean.OidBean; +import com.hdl.photovoltaic.ui.bean.UnCountBean; +import com.hdl.photovoltaic.ui.home.HomePageFragment; +import com.hdl.photovoltaic.ui.me.MeFragment; +import com.hdl.photovoltaic.ui.message.MessageFragment; +import com.hdl.photovoltaic.ui.powerstation.HouseAndDeviceFragment; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.utils.AppManagerUtils; import com.hdl.photovoltaic.utils.GPSManagerUtils; @@ -59,6 +72,7 @@ import org.greenrobot.eventbus.ThreadMode; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.List; import cn.jpush.android.api.JPushInterface; @@ -69,9 +83,13 @@ */ public class BPowerStationActivity extends CustomBaseActivity { + private static final String CURRENT_FRAGMENT = "state_fragment_show"; + private FragmentManager mFragmentManager; + private Fragment currentFragment = new Fragment(); + private final List<Fragment> fragmentList = new ArrayList<>(); + private int currentFragmentIndex = 0; private ActivityMyPowerStationBinding viewBinding; - private int currentFragmentIndex = 0; private EventListener allTopicsListener; private int backPressTimes; @@ -85,6 +103,8 @@ public void onBindView(Bundle savedInstanceState) { // setNotificationBarBackgroundColor(CustomColor.blue); setStatusBarTranslucent(); + //鍒濆鍖栫鐗� + initFragment(savedInstanceState); //鍒濆鍖� this.initView(); //鍒濆鍖栫晫闈㈢洃鍚櫒 @@ -99,6 +119,81 @@ this.clickJpushNotificationMessage(); //鍒濆鍖栨潈闄� this.requestPermissions(); + //璇诲彇娑堟伅鏈鏁伴噺 + this.getUnreadCount(); + + } + + + /** + * 鍒濆鍖朏ragment + * + * @param savedInstanceState - + */ + private void initFragment(Bundle savedInstanceState) { + mFragmentManager = getSupportFragmentManager(); + //纰庣墖鍒濆鍖� + HomePageFragment mHomePageFragment = new HomePageFragment(); + HouseAndDeviceFragment mHouseAndDeviceFragment = new HouseAndDeviceFragment(); + MessageFragment mMessageFragment = new MessageFragment(); + MeFragment mMeFragment = new MeFragment(); + if (savedInstanceState != null) { + //鈥滃唴瀛橀噸鍚�濇椂璋冪敤 鑾峰彇鈥滃唴瀛橀噸鍚�濇椂淇濆瓨鐨勭储寮曚笅鏍� + currentFragmentIndex = savedInstanceState.getInt(CURRENT_FRAGMENT, 0); + if (fragmentList.size() != 0) { + fragmentList.clear(); + } + fragmentList.add(mFragmentManager.findFragmentByTag(0 + "")); + fragmentList.add(mFragmentManager.findFragmentByTag(1 + "")); + fragmentList.add(mFragmentManager.findFragmentByTag(2 + "")); + fragmentList.add(mFragmentManager.findFragmentByTag(3 + "")); + restoreFragment();//鎭㈠fragment椤甸潰 + } else { + //姝e父鍚姩鏃惰皟鐢� + fragmentList.add(mHomePageFragment); + fragmentList.add(mHouseAndDeviceFragment); + fragmentList.add(mMessageFragment); + fragmentList.add(mMeFragment); + showFragment(); + } + + } + + + /** + * 浣跨敤show() hide()鍒囨崲椤甸潰 + * 鏄剧ずfragment + */ + private void showFragment() { + FragmentTransaction ft = mFragmentManager.beginTransaction(); + //濡傛灉涔嬪墠娌℃湁娣诲姞杩� + if (!fragmentList.get(currentFragmentIndex).isAdded()) { + //绗笁涓弬鏁颁负娣诲姞褰撳墠鐨刦ragment鏃剁粦瀹氫竴涓猼ag + ft.hide(currentFragment).add(R.id.module_fcv, fragmentList.get(currentFragmentIndex), currentFragmentIndex + ""); + } else { + ft.hide(currentFragment).show(fragmentList.get(currentFragmentIndex)); + } + currentFragment = fragmentList.get(currentFragmentIndex); + ft.commit(); + //鎶婂綋鍓嶆樉绀虹殑fragment璁板綍涓嬫潵 + currentFragment = fragmentList.get(currentFragmentIndex); + + + } + + /** + * 鎭㈠fragment + */ + private void restoreFragment() { + FragmentTransaction ft = mFragmentManager.beginTransaction(); + for (int i = 0; i < fragmentList.size(); i++) { + if (i == currentFragmentIndex) { + ft.show(fragmentList.get(i)); + } else { + ft.hide(fragmentList.get(i)); + } + } + ft.commit(); } @@ -213,7 +308,9 @@ } currentFragmentIndex = 0; bottomViewChangeOfStyle(); - postEventBus(HomepageTitleTabSwitch.homepage); + showFragment(); + HdlCommonLogic.lowerTagType = LowerTagType.home; + HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.homepage.toString()); } }); viewBinding.myPowerStationBottomIl1.clickTv.setOnClickListener(new View.OnClickListener() { @@ -224,7 +321,9 @@ } currentFragmentIndex = 1; bottomViewChangeOfStyle(); - postEventBus(HomepageTitleTabSwitch.powerstation); + showFragment(); + HdlCommonLogic.lowerTagType = LowerTagType.power_station; + HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.powerstation.toString()); } }); viewBinding.myMessageBottomIl2.clickTv.setOnClickListener(new View.OnClickListener() { @@ -235,7 +334,9 @@ } currentFragmentIndex = 2; bottomViewChangeOfStyle(); - postEventBus(HomepageTitleTabSwitch.message); + showFragment(); + HdlCommonLogic.lowerTagType = LowerTagType.message; + HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.message.toString()); } }); viewBinding.myMeBottomIl3.clickTv.setOnClickListener(new View.OnClickListener() { @@ -246,7 +347,9 @@ } currentFragmentIndex = 3; bottomViewChangeOfStyle(); - postEventBus(HomepageTitleTabSwitch.me); + showFragment(); + HdlCommonLogic.lowerTagType = LowerTagType.me; + HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.me.toString()); } }); @@ -272,12 +375,9 @@ private void bottomViewChangeOfStyle() { if (this.currentFragmentIndex == 0) { - viewBinding.myHomePageFcv0.setVisibility(View.VISIBLE);//鏄剧ず棣栭〉鐣岄潰 - viewBinding.myPowerStationFcv1.setVisibility(View.GONE);//鏄剧ず鐢电珯鐣岄潰 - viewBinding.myMessageFcv2.setVisibility(View.GONE);//闅愯棌娑堟伅鐣岄潰 - viewBinding.myMeFcv3.setVisibility(View.GONE);//闅愯棌鎴戠殑鐣岄潰 + //棣栭〉鐣岄潰 viewBinding.myPowerStationBottomIl0.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.home_page_selected)); - viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_90000000)); + viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_E6000000)); viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.power_station_unselected)); viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_unselected)); @@ -285,36 +385,27 @@ viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.me_unselected)); viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_65000000)); } else if (this.currentFragmentIndex == 1) { - viewBinding.myHomePageFcv0.setVisibility(View.GONE);//闅愯棌棣栭〉鐣岄潰 - viewBinding.myPowerStationFcv1.setVisibility(View.VISIBLE);//鏄剧ず鐢电珯鐣岄潰 - viewBinding.myMessageFcv2.setVisibility(View.GONE);//闅愯棌娑堟伅鐣岄潰 - viewBinding.myMeFcv3.setVisibility(View.GONE);//闅愯棌鎴戠殑鐣岄潰 + //鐢电珯鐣岄潰 viewBinding.myPowerStationBottomIl0.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.home_page_unselected)); viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.power_station_selected)); - viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_90000000)); + viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_E6000000)); viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_unselected)); viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.me_unselected)); viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_65000000)); } else if (this.currentFragmentIndex == 2) { - viewBinding.myHomePageFcv0.setVisibility(View.GONE);//闅愯棌棣栭〉鐣岄潰 - viewBinding.myPowerStationFcv1.setVisibility(View.GONE);//闅愯棌鐢电珯鐣岄潰 - viewBinding.myMessageFcv2.setVisibility(View.VISIBLE);//鏄剧ず娑堟伅鐣岄潰 - viewBinding.myMeFcv3.setVisibility(View.GONE);//闅愯棌鎴戠殑鐣岄潰 + //娑堟伅鐣岄潰 viewBinding.myPowerStationBottomIl0.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.home_page_unselected)); viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.power_station_unselected)); viewBinding.myPowerStationBottomIl1.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_select)); - viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_90000000)); + viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_E6000000)); viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.me_unselected)); viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_65000000)); } else if (this.currentFragmentIndex == 3) { - viewBinding.myHomePageFcv0.setVisibility(View.GONE);//闅愯棌棣栭〉鐣岄潰 - viewBinding.myPowerStationFcv1.setVisibility(View.GONE);//闅愯棌鐢电珯鐣岄潰 - viewBinding.myMessageFcv2.setVisibility(View.GONE);//闅愯棌娑堟伅鐣岄潰 - viewBinding.myMeFcv3.setVisibility(View.VISIBLE);//鏄剧ず鎴戠殑鐣岄潰 + //鎴戠殑鐣岄潰 viewBinding.myPowerStationBottomIl0.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.home_page_unselected)); viewBinding.myPowerStationBottomIl0.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myPowerStationBottomIl1.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.power_station_unselected)); @@ -322,21 +413,10 @@ viewBinding.myMessageBottomIl2.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.message_unselected)); viewBinding.myMessageBottomIl2.titleTv.setTextColor(getColor(R.color.text_65000000)); viewBinding.myMeBottomIl3.iconIv.setImageDrawable(AppCompatResources.getDrawable(_mActivity, R.drawable.me_selected)); - viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_90000000)); + viewBinding.myMeBottomIl3.titleTv.setTextColor(getColor(R.color.text_E6000000)); } } - /** - * 鍙戝竷鐐瑰嚮浜嬩欢 - * - * @param tabSwitch - - */ - private void postEventBus(HomepageTitleTabSwitch tabSwitch) { - BaseEventBus baseEventBus = new BaseEventBus(); - baseEventBus.setTopic(ConstantManage.homepage_title_tab_switch); - baseEventBus.setType(tabSwitch.toString()); - EventBus.getDefault().postSticky(baseEventBus); - } public void requestPermissions() { //娑堟伅閫氱煡闄愭潈 @@ -433,6 +513,13 @@ } + } else if (linkResponse.getTopic().endsWith("custom/wifi/notify")) { + //閫嗗彉鍣ㄨ繛鎺ヨ矾鐢辩姸鎬侀�氱煡 + HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); + uniCallBackBaseBean.setType(linkResponse.getTopic()); + uniCallBackBaseBean.setData(linkResponse.getData()); + HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean); + HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true); } } } @@ -444,8 +531,8 @@ * 鍒濆鍖杕qtt瀹㈡埛绔� */ public void initMqttClient() { - if (MqttRecvClient.getInstance().isConnected()) { - //妫�鏌ユ柇寮�杩炴帴 + //妫�鏌ユ柇寮�鐘舵�� + if (!MqttRecvClient.getInstance().isConnected()) { MqttRecvClient.getInstance().reConnect(); } if (!MqttRecvClient.getInstance().isInit()) { @@ -545,8 +632,64 @@ } }); } + } else if (event.getTopic().contains(ConstantManage.station_status)) { + currentFragmentIndex = 1; + bottomViewChangeOfStyle(); + showFragment(); + HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, event.getType()); + } } + + /** + * 璇诲彇娑堟伅銆愭湭璇绘暟閲�,鏈鐞嗘�绘暟閲忥紝宸插鐞嗘�绘暟閲忋�� + */ + private void getUnreadCount() { + HdlMessageLogic.getInstance().getMessageUntreatedCount("", new CloudCallBeak<UnCountBean>() { + @Override + public void onSuccess(UnCountBean unCountBean) { + + HdlThreadLogic.runMainThread(new Runnable() { + @Override + public void run() { + if (unCountBean == null) { + return; + } + //鍒锋柊銆愭秷鎭ā鍧椼�戜笅瑙掓爣鏁板�� + TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); + if (textView != null) { + if (unCountBean.getUnreadCount() == 0) { + textView.setVisibility(View.GONE); + } else { + textView.setVisibility(View.VISIBLE); + if (unCountBean.getUnreadCount() > 99) { + textView.setText("99+"); + } else { + textView.setText(unCountBean.getUnreadCount() + ""); + } + } + } + } + + }); + } + + @Override + public void onFailure(HDLException e) { + HdlThreadLogic.runMainThread(new Runnable() { + @Override + public void run() { + TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv); + if (textView != null) { + textView.setVisibility(View.GONE); + } + } + }); + + } + }); + } + /** * 鐐瑰嚮鏋佸厜閫氱煡鏍忔秷鎭繘鏉� @@ -649,4 +792,5 @@ } } + } \ No newline at end of file -- Gitblit v1.8.0