From 46c713cdcace5e57921d1db030bd468812e00044 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 8 Jan 2020 10:54:59 +0800 Subject: [PATCH] opt --- .../map/impl/amap/AMapNaviViewWrapper.java | 9 ++ .../amap/uicontroller/AMapUIController.java | 7 ++ .../uicontroller/IMogoMapUIController.java | 8 ++ .../map_api_ic_current_location.png | Bin 12648 -> 14925 bytes .../com/mogo/map/MogoMapUIController.java | 7 ++ .../module/apps/AppsFragmentProvider.java | 6 + .../extensions/ExtensionsModuleProvider.java | 6 + .../extensions/entrance/EntranceFragment.java | 9 ++ .../extensions/entrance/EntranceProvider.java | 6 + .../com/mogo/module/main/MainActivity.java | 17 +++ .../main/fragmentmanager/FragmentStack.java | 114 ++++++++++++++++++ .../FragmentStackTransactionListener.java | 12 ++ .../fragmentmanager/MogoFragmentManager.java | 34 ++++++ .../res/layout/module_main_activity_main.xml | 6 + .../mogo/module/map/MapFragmentProvider.java | 6 + .../ui/search/SearchFragmentProvider.java | 6 + .../module/service/MogoServiceProvider.java | 6 + .../tanlu/fragment/TanluCardViewProvider.java | 5 + .../com/mogo/service/MogoServicePaths.java | 5 + .../fragmentmanager/IMogoFragmentManager.java | 27 +++++ .../service/module/IMogoModuleProvider.java | 8 ++ 21 files changed, 304 insertions(+) create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStack.java create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStackTransactionListener.java create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/MogoFragmentManager.java create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index 1ddd0337b9..e705ae6eac 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -488,4 +488,13 @@ public class AMapNaviViewWrapper implements IMogoMapView, } return null; } + + @Override + public void setPointToCenter( double mapCenterX, double mapCenterY ) { + if ( checkAMapView() ) { + AMapNaviViewOptions options = mMapView.getViewOptions(); + options.setPointToCenter( mapCenterX, mapCenterY ); + mMapView.setViewOptions( options ); + } + } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java index aaba68efe3..26e98dee48 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java @@ -129,4 +129,11 @@ public class AMapUIController implements IMogoMapUIController { } return null; } + + @Override + public void setPointToCenter( double mapCenterX, double mapCenterY ) { + if ( mClient != null ) { + mClient.setPointToCenter( mapCenterX, mapCenterY ); + } + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java index e0f5e57790..a9968af5ec 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java @@ -87,4 +87,12 @@ public interface IMogoMapUIController { * @return */ MogoLatLng getCameraSouthWestPosition(); + + /** + * 设置地图中心点 + * + * @param mapCenterX x 点位置x值与地图宽度的比例 + * @param mapCenterY y 点位置x值与地图高度的比例 + */ + void setPointToCenter( double mapCenterX, double mapCenterY ); } diff --git a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location.png b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location.png index 58f3550408ea7df10dd92ea2b3c0eeb9cf1aa54b..65cecf9af27b289fb04f8b31da9087aa1366fc87 100644 GIT binary patch literal 14925 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 z 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 LNkvXXu0mjf!|b;d literal 12648 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 { + + ViewGroup group = ( ( Activity ) getContext() ).findViewById( android.R.id.content ); + final View child = new View(getContext()); + child.setBackground( new ColorDrawable( Color.RED ) ); + group.addView( child ); } ); mHome = findViewById( R.id.module_map_id_home ); diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java index fdc5b86988..6e818b3d9c 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java @@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; +import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.service.module.IMogoModuleLifecycle; @@ -72,4 +73,9 @@ public class EntranceProvider implements IMogoModuleProvider { public void init( Context context ) { } + + @Override + public IMogoMarkerClickListener getMarkerClickListener() { + return null; + } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 853740fe9e..897daa5f61 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -12,6 +12,7 @@ import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; +import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; import com.mogo.module.extensions.ExtensionsModuleConst; @@ -21,6 +22,7 @@ import com.mogo.module.main.cards.MogoModulesManager; import com.mogo.module.main.cards.OnPageChangeListenerAdapter; import com.mogo.module.main.cards.OrientedViewPager; import com.mogo.module.main.cards.VerticalStackTransformer; +import com.mogo.module.main.fragmentmanager.FragmentStack; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.ServiceConst; import com.mogo.service.MogoServicePaths; @@ -44,6 +46,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme private static final String TAG = "MainActivity"; private IMogoMapService mMogoMapService; + private IMogoMapUIController mMogoMapUIController; private MogoModulesHandler mMogoModuleHandler; private IMogoSocketManager mMogoSocketManager; @@ -79,6 +82,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } } } ); + + FragmentStack.getInstance().init( this, R.id.module_main_id_search_fragment ); } @Override @@ -99,12 +104,16 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mMogoMapService.getHostListenerRegister().registerMarkerClickListener( this ); } + mMogoMapUIController = mMogoMapService.getMapUIController(); + mMogoModuleHandler.loadModules(); mMogoModuleHandler.onMapLoadedCallback( new Runnable() { @Override public void run() { Logger.d( TAG, "map loaded." + Thread.currentThread().getName() ); loadModules(); + + mMogoMapUIController.setPointToCenter( 0.66145, 0.590688 ); } } ); // 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。 @@ -163,6 +172,14 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } } + @Override + public void onBackPressed() { + super.onBackPressed(); + if ( getSupportFragmentManager().getBackStackEntryCount() > 0 ) { + getSupportFragmentManager().popBackStack(); + } + } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStack.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStack.java new file mode 100644 index 0000000000..42d6b9c350 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStack.java @@ -0,0 +1,114 @@ +package com.mogo.module.main.fragmentmanager; + +import android.app.Activity; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + +import com.mogo.utils.logger.Logger; + +import java.util.Stack; + +/** + * @author congtaowang + * @since 2020-01-08 + *

+ * fragment 任务栈 + */ +public class FragmentStack { + + private static final String TAG = "FragmentStack"; + + private static volatile FragmentStack sInstance; + + private Stack< Fragment > mFragmentStack = new Stack<>(); + private FragmentManager mFragmentManager; + private FragmentTransaction mFragmentTransaction; + private int mContainerId; + private Activity mActivity; + private Fragment mCurrentFragment; + + private FragmentStackTransactionListener mFragmentStackTransactionListener; + + private FragmentStack() { + } + + public static FragmentStack getInstance() { + if ( sInstance == null ) { + synchronized ( FragmentStack.class ) { + if ( sInstance == null ) { + sInstance = new FragmentStack(); + } + } + } + return sInstance; + } + + public synchronized void release() { + sInstance = null; + } + + public void init( AppCompatActivity activity, int containerId ) { + mActivity = activity; + mFragmentManager = activity.getSupportFragmentManager(); + mContainerId = containerId; + mFragmentTransaction = mFragmentManager.beginTransaction(); + } + + public void push( Fragment fragment, String tag ) { + if ( fragment == null ) { + return; + } + if ( mFragmentStack.contains( fragment ) ) { + Logger.w( TAG, "fragment has already in stack." ); + return; + } + if ( mCurrentFragment != null ) { + mFragmentTransaction.hide( mCurrentFragment ); + } + mFragmentTransaction.add( mContainerId, fragment, tag ); + mFragmentTransaction.addToBackStack( null ); + mFragmentTransaction.commitAllowingStateLoss(); + mFragmentStack.push( fragment ); + mCurrentFragment = fragment; + + if ( getFragmentStackTransactionListener() != null ) { + getFragmentStackTransactionListener().onTransaction(); + } + } + + public void pop() { + if ( mCurrentFragment != null ) { + mFragmentTransaction.remove( mCurrentFragment ); + } + if ( mFragmentStack.isEmpty() ) { + mFragmentTransaction.commitAllowingStateLoss(); + mCurrentFragment = null; + } else { + Fragment fragment = mFragmentStack.pop(); + if ( fragment != null ) { + mFragmentTransaction.show( fragment ); + mFragmentTransaction.commitAllowingStateLoss(); + } + mCurrentFragment = fragment; + } + + if ( getFragmentStackTransactionListener() != null ) { + getFragmentStackTransactionListener().onTransaction(); + } + } + + public boolean isEmpty() { + return mFragmentStack.isEmpty(); + } + + public FragmentStackTransactionListener getFragmentStackTransactionListener() { + return mFragmentStackTransactionListener; + } + + public void setFragmentStackTransactionListener( FragmentStackTransactionListener fragmentStackTransactionListener ) { + this.mFragmentStackTransactionListener = fragmentStackTransactionListener; + } +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStackTransactionListener.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStackTransactionListener.java new file mode 100644 index 0000000000..628a6ec496 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStackTransactionListener.java @@ -0,0 +1,12 @@ +package com.mogo.module.main.fragmentmanager; + +/** + * @author congtaowang + * @since 2020-01-08 + *

+ * fragment 栈发生变化 + */ +public interface FragmentStackTransactionListener { + + void onTransaction(); +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/MogoFragmentManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/MogoFragmentManager.java new file mode 100644 index 0000000000..40a364fdb9 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/MogoFragmentManager.java @@ -0,0 +1,34 @@ +package com.mogo.module.main.fragmentmanager; + +import android.content.Context; + +import androidx.fragment.app.Fragment; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.fragmentmanager.IMogoFragmentManager; + +/** + * @author congtaowang + * @since 2020-01-08 + *

+ * 描述 + */ +@Route( path = MogoServicePaths.PATH_FRAGMENT_MANAGER ) +public class MogoFragmentManager implements IMogoFragmentManager { + + @Override + public void push( Fragment fragment, String tag ) { + FragmentStack.getInstance().push( fragment, tag ); + } + + @Override + public void pop() { + FragmentStack.getInstance().pop(); + } + + @Override + public void init( Context context ) { + + } +} 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 da46c8d320..5fa6036a70 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 @@ -56,4 +56,10 @@ + + + \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java index c35cfb054a..86038c722e 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java @@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; +import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.module.common.MogoModulePaths; import com.mogo.service.module.IMogoModuleLifecycle; @@ -75,4 +76,9 @@ public class MapFragmentProvider implements IMogoModuleProvider { public IMogoLocationListener getLocationListener() { return null; } + + @Override + public IMogoMarkerClickListener getMarkerClickListener() { + return null; + } } diff --git a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java index faa155aa31..8c8bb585fa 100644 --- a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java +++ b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java @@ -8,6 +8,7 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; +import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.module.common.MogoModulePaths; import com.mogo.service.module.IMogoModuleLifecycle; @@ -73,4 +74,9 @@ public class SearchFragmentProvider implements IMogoModuleProvider { public void init( Context context ) { } + + @Override + public IMogoMarkerClickListener getMarkerClickListener() { + return null; + } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index 5d07ec40a8..0d41f56a8c 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -18,6 +18,7 @@ import com.mogo.map.MogoLatLng; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.location.MogoLocation; +import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoNaviListener; @@ -421,4 +422,9 @@ public class MogoServiceProvider implements IMogoModuleProvider, mRefreshRemainingTime += mAutoRefreshStrategy.getInterruptInterval(); } } + + @Override + public IMogoMarkerClickListener getMarkerClickListener() { + return null; + } } diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewProvider.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewProvider.java index 8710a2a56f..b804bd33e0 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewProvider.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewProvider.java @@ -9,6 +9,7 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; +import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; @@ -77,4 +78,8 @@ public class TanluCardViewProvider implements IMogoModuleProvider { return fragment; } + @Override + public IMogoMarkerClickListener getMarkerClickListener() { + return null; + } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java index 75a082790c..b92f25e79e 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java @@ -65,4 +65,9 @@ public class MogoServicePaths { * 卡片控制 */ public static final String PATH_CARD_MANAGER = "/cardmanager/api"; + + /** + * 管理 fragment + */ + public static final String PATH_FRAGMENT_MANAGER = "/fragmentmanager/api"; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java new file mode 100644 index 0000000000..7d9e7e79b7 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java @@ -0,0 +1,27 @@ +package com.mogo.service.fragmentmanager; + +import androidx.fragment.app.Fragment; + +import com.alibaba.android.arouter.facade.template.IProvider; + +/** + * @author congtaowang + * @since 2020-01-08 + *

+ * fragment 管理接口 + */ +public interface IMogoFragmentManager extends IProvider { + + /** + * 显示fragment并加入回退栈 + * + * @param fragment 需要显示的fragment + * @param tag fragment的tag + */ + void push( Fragment fragment, String tag ); + + /** + * 将当前 fragment 出栈 + */ + void pop(); +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java index 9c88e7ad3f..7e6ddc1b1b 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java @@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.template.IProvider; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; +import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoNaviListener; /** @@ -80,4 +81,11 @@ public interface IMogoModuleProvider extends IProvider { * @return */ IMogoLocationListener getLocationListener(); + + /** + * marker 点击回调 + * + * @return + */ + IMogoMarkerClickListener getMarkerClickListener(); }