适配导航模块的UI

This commit is contained in:
zhangyuanzhen
2020-01-18 15:24:05 +08:00
parent 4284867495
commit a02cd2363e
15 changed files with 451 additions and 251 deletions

View File

@@ -30,6 +30,7 @@ import com.mogo.module.main.assist.MapBroadCastHelper;
import com.mogo.module.main.registercenter.MogoRegisterCenterHandler;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.ModuleType;
@@ -49,9 +50,9 @@ import java.util.Map;
* 卡片加载
*/
public class MogoModulesManager implements MogoModulesHandler,
IMogoMapListener,
IMogoNaviListener,
IMogoLocationListener {
IMogoMapListener,
IMogoNaviListener,
IMogoLocationListener {
private static final String TAG = "MogoModulesManager";
@@ -59,21 +60,26 @@ public class MogoModulesManager implements MogoModulesHandler,
private Map<MogoModule, IMogoModuleProvider> mModuleProviders = new HashMap<>();
private IMogoAnalytics mTrackManager;
private IMogoMapService mapService;
private String mEnableModuleName = null;
private Runnable mMapLoadedCallback;
private BroadcastReceiver mReceiver;
public MogoModulesManager( MainActivity activity ) {
if ( activity == null ) {
throw new NullPointerException( "activity can't be null." );
public MogoModulesManager(MainActivity activity) {
if (activity == null) {
throw new NullPointerException("activity can't be null.");
}
this.mActivity = activity;
mTrackManager = (IMogoAnalytics) ARouter.getInstance()
.build(MogoServicePaths.PATH_UTILS_ANALYTICS)
.navigation();
mapService = (IMogoMapService) ARouter.getInstance().build(
MogoServicePaths.PATH_SERVICES_MAP
).navigation();
registerReceiver();
}
@@ -87,124 +93,140 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void loadModules() {
final List< MogoModule > modules = MogoModulePaths.getModules();
if ( modules != null && !modules.isEmpty() ) {
for ( MogoModule module : modules ) {
IMogoModuleProvider provider = load( module.getPath() );
if ( provider != null ) {
mModuleProviders.put( module, provider );
final List<MogoModule> modules = MogoModulePaths.getModules();
if (modules != null && !modules.isEmpty()) {
for (MogoModule module : modules) {
IMogoModuleProvider provider = load(module.getPath());
if (provider != null) {
mModuleProviders.put(module, provider);
}
}
}
}
@Override
public void setMapLoadedCallback( Runnable callback ) {
public void setMapLoadedCallback(Runnable callback) {
mMapLoadedCallback = callback;
}
@Override
public List< IMogoModuleProvider > loadCardsModule() {
final List< MogoModule > modules = MogoModulePaths.getModules();
final ArrayList< IMogoModuleProvider > providers = new ArrayList<>();
for ( MogoModule module : modules ) {
IMogoModuleProvider provider = mModuleProviders.get( module );
if ( provider.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
if ( mEnableModuleName == null ) {
public List<IMogoModuleProvider> loadCardsModule() {
final List<MogoModule> modules = MogoModulePaths.getModules();
final ArrayList<IMogoModuleProvider> providers = new ArrayList<>();
for (MogoModule module : modules) {
IMogoModuleProvider provider = mModuleProviders.get(module);
if (provider.getType() == ModuleType.TYPE_CARD_FRAGMENT) {
if (mEnableModuleName == null) {
mEnableModuleName = provider.getModuleName();
}
providers.add( provider );
providers.add(provider);
}
}
return providers;
}
@Override
public void loadMapModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance().build( MogoModulePaths.PATH_MODULE_MAP ).navigation( getContext() );
addFragment( provider, containerId );
public void loadMapModule(int containerId) {
IMogoModuleProvider provider = (IMogoModuleProvider) ARouter.getInstance()
.build(MogoModulePaths.PATH_MODULE_MAP)
.navigation(getContext());
addFragment(provider, containerId);
}
@Override
public void loadAppsListModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance().build( MogoModulePaths.PATH_MODULE_APPS ).navigation( getContext() );
addFragment( provider, containerId );
public void loadAppsListModule(int containerId) {
IMogoModuleProvider provider = (IMogoModuleProvider) ARouter.getInstance()
.build(MogoModulePaths.PATH_MODULE_APPS)
.navigation(getContext());
addFragment(provider, containerId);
}
@Override
public void loadExtensionsModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance().build( ExtensionsModuleConst.PATH_EXTENSION ).navigation( getContext() );
addFragment( provider, containerId );
public void loadExtensionsModule(int containerId) {
IMogoModuleProvider provider = (IMogoModuleProvider) ARouter.getInstance()
.build(ExtensionsModuleConst.PATH_EXTENSION)
.navigation(getContext());
addFragment(provider, containerId);
}
@Override
public void loadEntrancesModule( int containerId ) {
IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance().build( ExtensionsModuleConst.PATH_ENTRANCE ).navigation( getContext() );
addFragment( provider, containerId );
public void loadEntrancesModule(int containerId) {
IMogoModuleProvider provider = (IMogoModuleProvider) ARouter.getInstance()
.build(ExtensionsModuleConst.PATH_ENTRANCE)
.navigation(getContext());
addFragment(provider, containerId);
}
private IMogoModuleProvider load( String path ) {
return ( IMogoModuleProvider ) ARouter.getInstance().build( path ).navigation( getContext() );
private IMogoModuleProvider load(String path) {
return (IMogoModuleProvider) ARouter.getInstance().build(path).navigation(getContext());
}
private void addFragment( IMogoModuleProvider provider, int containerId ) {
if ( provider == null ) {
Logger.e( TAG, "add fragment fail cause provider == null, container is %s", ResourcesHelper.getResNameById( getApplicationContext(), containerId ) );
private void addFragment(IMogoModuleProvider provider, int containerId) {
if (provider == null) {
Logger.e(TAG, "add fragment fail cause provider == null, container is %s",
ResourcesHelper.getResNameById(getApplicationContext(), containerId));
return;
}
final Fragment fragment = provider.createFragment( getContext(), null );
if ( fragment == null ) {
Logger.e( TAG, "add fragment fail cause fragment == null, container is %s", ResourcesHelper.getResNameById( getApplicationContext(), containerId ) );
final Fragment fragment = provider.createFragment(getContext(), null);
if (fragment == null) {
Logger.e(TAG, "add fragment fail cause fragment == null, container is %s",
ResourcesHelper.getResNameById(getApplicationContext(), containerId));
return;
}
mActivity.getSupportFragmentManager().beginTransaction()
.add( containerId, fragment, provider.getModuleName() )
.commitAllowingStateLoss();
.add(containerId, fragment, provider.getModuleName())
.commitAllowingStateLoss();
}
@Override
public void setModuleEnable( String module ) {
public void setModuleEnable(String module) {
// 仅操作上一个模块和当前模块
Iterator< IMogoModuleProvider > iterator = mModuleProviders.values().iterator();
Iterator<IMogoModuleProvider> iterator = mModuleProviders.values().iterator();
int counter = 0;
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoModuleProvider provider = iterator.next();
if ( provider == null ) {
if (provider == null) {
continue;
}
if ( provider.getType() != ModuleType.TYPE_CARD_FRAGMENT ) {
if (provider.getType() != ModuleType.TYPE_CARD_FRAGMENT) {
continue;
}
if ( TextUtils.equals( mEnableModuleName, provider.getModuleName() ) ) {
final IMogoModuleLifecycle lifecycle = MogoRegisterCenterHandler.getInstance().getLifecycleListener( mEnableModuleName );
if ( lifecycle != null ) {
if (TextUtils.equals(mEnableModuleName, provider.getModuleName())) {
final IMogoModuleLifecycle lifecycle =
MogoRegisterCenterHandler.getInstance().getLifecycleListener(mEnableModuleName);
if (lifecycle != null) {
try {
final long start = System.currentTimeMillis();
lifecycle.onDisable();
Logger.i(TAG, "set %s module disable event cost " + (System.currentTimeMillis() - start) + "ms", mEnableModuleName);
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
Logger.i(TAG,
"set %s module disable event cost " + (System.currentTimeMillis()
- start) + "ms", mEnableModuleName);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
counter++;
continue;
}
if ( TextUtils.equals( module, provider.getModuleName() ) ) {
final IMogoModuleLifecycle lifecycle = MogoRegisterCenterHandler.getInstance().getLifecycleListener( module );
if ( lifecycle != null ) {
if (TextUtils.equals(module, provider.getModuleName())) {
final IMogoModuleLifecycle lifecycle =
MogoRegisterCenterHandler.getInstance().getLifecycleListener(module);
if (lifecycle != null) {
try {
final long start = System.currentTimeMillis();
lifecycle.onPerform();
Logger.i(TAG, "set %s module perform event cost " + (System.currentTimeMillis() - start) + "ms", module);
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
Logger.i(TAG,
"set %s module perform event cost " + (System.currentTimeMillis()
- start) + "ms", module);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
counter++;
continue;
}
if ( counter == 2 ) {
if (counter == 2) {
break;
}
}
@@ -214,115 +236,121 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onMapLoaded() {
if ( mMapLoadedCallback != null ) {
if (mMapLoadedCallback != null) {
mMapLoadedCallback.run();
mMapLoadedCallback = null;
}
}
@Override
public void onTouch( MotionEvent motionEvent ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
public void onTouch(MotionEvent motionEvent) {
Iterator<IMogoMapListener> iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onTouch( motionEvent );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onTouch(motionEvent);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
}
@Override
public void onPOIClick( MogoPoi poi ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
public void onPOIClick(MogoPoi poi) {
Iterator<IMogoMapListener> iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onPOIClick( poi );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onPOIClick(poi);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
}
@Override
public void onMapClick( MogoLatLng latLng ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
public void onMapClick(MogoLatLng latLng) {
Iterator<IMogoMapListener> iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onMapClick( latLng );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onMapClick(latLng);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
}
@Override
public void onLockMap( boolean isLock ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
public void onLockMap(boolean isLock) {
Iterator<IMogoMapListener> iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onLockMap( isLock );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onLockMap(isLock);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
}
@Override
public void onMapModeChanged( EnumMapUI ui ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
public void onMapModeChanged(EnumMapUI ui) {
Iterator<IMogoMapListener> iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onMapModeChanged( ui );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onMapModeChanged(ui);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
}
@Override
public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) {
Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if ( iterator == null ) {
public void onMapChanged(MogoLatLng location, float zoom, float tilt, float bearing) {
Iterator<IMogoMapListener> iterator =
MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onMapChanged( location, zoom, tilt, bearing );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onMapChanged(location, zoom, tilt, bearing);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
@@ -330,17 +358,18 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onInitNaviFailure() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onInitNaviFailure();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
@@ -348,17 +377,18 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onInitNaviSuccess() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onInitNaviSuccess();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
@@ -373,13 +403,13 @@ public class MogoModulesManager implements MogoModulesHandler,
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onNaviInfoUpdate( naviinfo );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onNaviInfoUpdate(naviinfo);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
@@ -395,13 +425,13 @@ public class MogoModulesManager implements MogoModulesHandler,
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onStartNavi();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
@@ -416,13 +446,13 @@ public class MogoModulesManager implements MogoModulesHandler,
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onStopNavi();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
@@ -430,17 +460,18 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onCalculateSuccess() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onCalculateSuccess();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
@@ -448,53 +479,56 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onoCalculateFailed() {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onoCalculateFailed();
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
}
@Override
public void onUpdateTraffic( MogoTraffic traffic ) {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
public void onUpdateTraffic(MogoTraffic traffic) {
Iterator<IMogoNaviListener> iterator =
MogoRegisterCenterHandler.getInstance().getNaviListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onUpdateTraffic( traffic );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onUpdateTraffic(traffic);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
}
@Override
public void onLocationChanged( MogoLocation location ) {
Iterator< IMogoLocationListener > iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners();
if ( iterator == null ) {
public void onLocationChanged(MogoLocation location) {
Iterator<IMogoLocationListener> iterator =
MogoRegisterCenterHandler.getInstance().getLocationListeners();
if (iterator == null) {
return;
}
while ( iterator.hasNext() ) {
while (iterator.hasNext()) {
IMogoLocationListener listener = iterator.next();
if ( listener != null ) {
if (listener != null) {
try {
listener.onLocationChanged( location );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
listener.onLocationChanged(location);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
}
@@ -503,37 +537,37 @@ public class MogoModulesManager implements MogoModulesHandler,
public void registerReceiver() {
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive( Context context, Intent intent ) {
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if ( TextUtils.equals( action, Intent.ACTION_POWER_CONNECTED ) ) {
Iterator< IMogoModuleLifecycle > iterator = MogoRegisterCenterHandler.getInstance().getLifecycleListeners();
if ( iterator.hasNext() ) {
if (TextUtils.equals(action, Intent.ACTION_POWER_CONNECTED)) {
Iterator<IMogoModuleLifecycle> iterator =
MogoRegisterCenterHandler.getInstance().getLifecycleListeners();
if (iterator.hasNext()) {
iterator.next().accOn();
}
}
if ( TextUtils.equals( action, Intent.ACTION_POWER_DISCONNECTED ) ) {
} else if (TextUtils.equals(action, Intent.ACTION_POWER_DISCONNECTED)) {
}
}
};
IntentFilter inputFilter = new IntentFilter();
inputFilter.addAction( Intent.ACTION_POWER_CONNECTED );
inputFilter.addAction( Intent.ACTION_POWER_DISCONNECTED );
getApplicationContext().registerReceiver( mReceiver, inputFilter );
inputFilter.addAction(Intent.ACTION_POWER_CONNECTED);
inputFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
getApplicationContext().registerReceiver(mReceiver, inputFilter);
}
@Override
public void destroy() {
if ( mReceiver != null ) {
if (mReceiver != null) {
try {
getApplicationContext().unregisterReceiver( mReceiver );
} catch ( Exception e ) {
getApplicationContext().unregisterReceiver(mReceiver);
} catch (Exception e) {
e.printStackTrace();
}
}
mReceiver = null;
mActivity = null;
if ( mModuleProviders != null ) {
if (mModuleProviders != null) {
mModuleProviders.clear();
}
mModuleProviders = null;
@@ -542,13 +576,14 @@ public class MogoModulesManager implements MogoModulesHandler,
}
@Override
public boolean onMarkerClicked( IMogoMarker marker ) {
IMogoMarkerClickListener listener = MogoRegisterCenterHandler.getInstance().getMarkerListener( marker.getOwner() );
if ( listener != null ) {
public boolean onMarkerClicked(IMogoMarker marker) {
IMogoMarkerClickListener listener =
MogoRegisterCenterHandler.getInstance().getMarkerListener(marker.getOwner());
if (listener != null) {
try {
return listener.onMarkerClicked( marker );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
return listener.onMarkerClicked(marker);
} catch (Exception e) {
Logger.e(TAG, e, "error.");
}
}
return false;