diff --git a/.idea/misc.xml b/.idea/misc.xml index 54d948bbf1..9f65ae86e1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -76,7 +77,7 @@ - + \ No newline at end of file diff --git a/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java b/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java index f861c7641b..c5952774c7 100644 --- a/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java +++ b/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java @@ -54,6 +54,11 @@ public abstract class BaseOchFragment> e return R.layout.module_mogo_och_base_fragment; } + @Override + public String getTagName() { + return TAG; + } + private View panelView; @Override diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index df34d85e24..ffef99ade6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -58,6 +58,10 @@ class MoGoHmiFragment : MvpFragment return R.layout.fragment_hmi } + override fun getTagName(): String { + return TAG + } + override fun createPresenter(): WaringPresenter { return WaringPresenter(this) } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoHDMapFragment.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoHDMapFragment.java new file mode 100644 index 0000000000..75861a56ec --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoHDMapFragment.java @@ -0,0 +1,41 @@ +package com.mogo.eagle.core.function.map; + +import androidx.annotation.NonNull; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.commons.mvp.MvpFragment; +import com.mogo.eagle.core.data.constants.MoGoFragmentPaths; +import com.mogo.utils.logger.Logger; + +/** + * @author donghongyu + * @since 2021-11-09 + * 高精度地图层UI + */ +@Route(path = MoGoFragmentPaths.PATH_FRAGMENT_MAP) +public class MoGoHDMapFragment extends MvpFragment implements MoGoMapView { + + private static final String TAG = "MoGoHDMapFragment"; + + @Override + protected int getLayoutId() { + return R.layout.function_map_fragment_hd_map; + } + + @Override + public String getTagName() { + return TAG; + } + + @Override + protected void initViews() { + Logger.d(TAG, "initViews"); + } + + @NonNull + @Override + protected MoGoMapPresenter createPresenter() { + return new MoGoMapPresenter(this); + } + +} diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoMapPresenter.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoMapPresenter.java new file mode 100644 index 0000000000..9b95c75073 --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoMapPresenter.java @@ -0,0 +1,9 @@ +package com.mogo.eagle.core.function.map; + +import com.mogo.commons.mvp.Presenter; + +public class MoGoMapPresenter extends Presenter { + public MoGoMapPresenter(MoGoMapView view) { + super(view); + } +} diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoMapView.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoMapView.java new file mode 100644 index 0000000000..e8a3f18706 --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/MoGoMapView.java @@ -0,0 +1,6 @@ +package com.mogo.eagle.core.function.map; + +import com.mogo.commons.mvp.IView; + +public interface MoGoMapView extends IView { +} diff --git a/core/function-impl/mogo-core-function-map/src/main/res/layout/function_map_fragment_hd_map.xml b/core/function-impl/mogo-core-function-map/src/main/res/layout/function_map_fragment_hd_map.xml new file mode 100644 index 0000000000..7a8bfb151f --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/res/layout/function_map_fragment_hd_map.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MoGoFragmentPaths.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MoGoFragmentPaths.java new file mode 100644 index 0000000000..b0f6016b09 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/constants/MoGoFragmentPaths.java @@ -0,0 +1,25 @@ +package com.mogo.eagle.core.data.constants; + +import androidx.annotation.Keep; + +/** + * 有关UI的路径 + */ +@Keep +public class MoGoFragmentPaths { + + /** + * 高精地图Fragment + */ + @Keep + @Deprecated + public static final String PATH_FRAGMENT_MAP = "/hd_map_ui/"; + + /** + * HMI 业务相关的 + */ + @Keep + @Deprecated + public static final String PATH_FRAGMENT_HMI = "/hmi_ui/"; + +} diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index d0b513a1c3..74186f0834 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -1,8 +1,11 @@ package com.mogo.commons.mvp; +import android.content.ComponentName; import android.content.Context; +import android.content.Intent; import android.os.Build; import android.os.Bundle; +import android.provider.Settings; import android.view.MotionEvent; import android.view.View; import android.view.Window; @@ -13,6 +16,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.mogo.commons.debug.DebugConfig; +import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.utils.SoftKeyBoardJobber; /** diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java index 2c417a6a58..3cd0acc457 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java @@ -56,6 +56,12 @@ public abstract class MvpFragment> exten */ protected abstract int getLayoutId(); + /** + * 获取绑定的TAG标记 + * @return 返回唯一TAG标记 + */ + public abstract String getTagName(); + @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java index b2cfb35812..5f4708a62c 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java @@ -56,6 +56,11 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi return R.layout.module_apps_fragment_apps_navigator; } + @Override + public String getTagName() { + return TAG; + } + @Override protected void initViews() { diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java index 446a9f8d90..5bcb68b9bf 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java @@ -39,6 +39,11 @@ public class AppsFragment extends MvpFragment< AppsView, AppsPresenter > impleme return R.layout.module_apps_fragment_apps; } + @Override + public String getTagName() { + return TAG; + } + @Override protected void initViews() { mAppsPager = findViewById( R.id.module_apps_id_apps_pager ); diff --git a/modules/mogo-module-carchatting/src/main/java/com/mogo/module/carchatting/view/VehicleTeamFragment.java b/modules/mogo-module-carchatting/src/main/java/com/mogo/module/carchatting/view/VehicleTeamFragment.java index ac13cc4030..bdb99b09f1 100644 --- a/modules/mogo-module-carchatting/src/main/java/com/mogo/module/carchatting/view/VehicleTeamFragment.java +++ b/modules/mogo-module-carchatting/src/main/java/com/mogo/module/carchatting/view/VehicleTeamFragment.java @@ -23,6 +23,8 @@ import java.util.List; * describe:车队信息 */ public class VehicleTeamFragment extends MvpFragment implements VehicleTeamView { + private static final String TAG = "VehicleTeamFragment"; + private TextView tvNum; private ImageView ivClose; private RecyclerView rvTeammates; @@ -40,6 +42,11 @@ public class VehicleTeamFragment extends MvpFragment implement * 加载其它模块 */ protected void loadOthersModules() { + //loadFunctionFragment(); // 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。 loadContainerModules(); MogoModulesManager.getInstance().loadModules(); @@ -276,6 +282,12 @@ public class MainActivity extends MvpActivity implement mServiceApis.getAdasControllerApi().showADAS(); } + @Override + public void loadFunctionFragment() { + MvpFragment fragmentHdMap = (MvpFragment) ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_MAP).navigation(); + addFragment(fragmentHdMap, fragmentHdMap.getTagName(), R.id.module_main_id_hd_map_fragment_container); + } + @NonNull @Override protected MainPresenter createPresenter() { @@ -454,4 +466,26 @@ public class MainActivity extends MvpActivity implement } } + + /** + * 由于应用是单页面的,所以采用Fragment将各模块的UI进行分割解耦合 + * + * @param newFragment 功能UI + * @param tagName UI绑定的Tag + * @param containerId 要加入的资源ID + */ + private void addFragment(Fragment newFragment, String tagName, int containerId) { + Fragment fragment = getSupportFragmentManager().findFragmentByTag(tagName); + if (fragment == null) { + fragment = newFragment; + } + if (fragment == null) { + Logger.e(TAG, "add fragment fail cause fragment == null, container is %s", ResourcesHelper.getResNameById(getApplicationContext(), containerId)); + return; + } + getSupportFragmentManager().beginTransaction() + .replace(containerId, fragment, tagName) + .commitAllowingStateLoss(); + } + } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java index e2555d5f8c..5ad69da59a 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java @@ -16,6 +16,11 @@ public interface MainView extends IView { */ void hideCoverUpLayout(); + /** + * 加载各模块中的Fragment + */ + void loadFunctionFragment(); + /** * 加载模块 */ diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml index 066073f5d0..2717e7ecf2 100644 --- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml +++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml @@ -13,6 +13,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> + + + implements return R.layout.module_map_fragment_map; } + @Override + public String getTagName() { + return TAG; + } + @Override protected void initViews() { MogoApisHandler.getInstance().getApis().getMapFrameControllerApi().initDelegate( this ); diff --git a/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryFragment.java b/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryFragment.java index cea74ae303..a7386aa260 100644 --- a/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryFragment.java +++ b/modules/mogo-module-push/src/main/java/com/mogo/module/push/fragment/MessageHistoryFragment.java @@ -56,6 +56,11 @@ class MessageHistoryFragment extends MvpFragment< MessageHistoryView, MessageHis return R.layout.module_push_message_hisotry_fragment; } + @Override + public String getTagName() { + return TAG; + } + @Override protected void initViews() { mClear = findViewById( R.id.module_push_id_clear ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelFragment.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelFragment.java index 731c17122b..6a81343fff 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelFragment.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelFragment.java @@ -27,6 +27,7 @@ import java.util.Map; * 描述 */ public class OnlineCarPanelFragment extends MvpFragment< IOnlineCarPanelView, OnlineCarPanelPresenter > implements IOnlineCarPanelView { + private String TAG = "OnlineCarPanelFragment"; private RecyclerView mList; private View mErrorPanel; @@ -45,6 +46,11 @@ public class OnlineCarPanelFragment extends MvpFragment< IOnlineCarPanelView, On return R.layout.module_services_fragment_online_car_panel; } + @Override + public String getTagName() { + return TAG; + } + @Override protected void initViews() { findViewById( R.id.module_services_id_close ).setOnClickListener( new OnPreventFastClickListener() { diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt index dacdce36b3..2166148759 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XEventPanelFragment.kt @@ -55,7 +55,7 @@ import org.greenrobot.eventbus.ThreadMode */ class V2XEventPanelFragment : MvpFragment(), SurroundingDetailItemListener ,IMogoStatusChangedListener{ - private val TAG = "EventPanelFragment" + private val TAG = "V2XEventPanelFragment" private var isFirstLoad = false @@ -143,6 +143,10 @@ class V2XEventPanelFragment : MvpFragment { - private String TAG = "ScenarioHistoryFragment"; + private String TAG = "V2XScenarioHistoryFragment"; public Boolean fromVoice = false; private V2XListEmptyView mEmptyView; private LinearLayout mClHistoryList; @@ -51,6 +51,11 @@ public class V2XScenarioHistoryFragment return R.layout.module_v2x_event_panel_fragment_scenario_history; } + @Override + public String getTagName() { + return TAG; + } + @Override protected void initViews() { Log.d(TAG, "initViews --------> "); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java index 864cf9a72e..10d4831bd8 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java @@ -33,7 +33,7 @@ import java.util.ArrayList; public class V2XShareEventsFragment extends MvpFragment implements AdapterCallback { - private static final String TAG = "ShareEventsFragment"; + private static final String TAG = "V2XShareEventsFragment"; private RecyclerView recyclerView; private V2XShareEventAdapter adapter; private ArrayList dataArrayList = new ArrayList(); @@ -50,6 +50,11 @@ public class V2XShareEventsFragment extends MvpFragment implements SurroundingEventView, View.OnClickListener, SurroundingItemClickListener { - private static final String TAG = "SurroundingFragment"; + private static final String TAG = "V2XSurroundingFragment"; private RelativeLayout mSurroundingLayout; private RecyclerView mRecyclerView; private TextView mTotalTv; @@ -90,6 +90,11 @@ public class V2XSurroundingFragment extends MvpFragment