diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index da5143003f..549e0bda92 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -1,6 +1,7 @@ package com.mogo.map.impl.amap.navi; import android.content.Context; +import android.graphics.Rect; import com.amap.api.maps.model.Polyline; import com.amap.api.navi.AMapNavi; @@ -170,6 +171,13 @@ public class NaviClient implements IMogoNavi { } } + @Override + public void setCalculatePathDisplayBounds( Rect bounds ) { + if ( mAMapNaviListener != null ) { + mAMapNaviListener.setCalculatePathDisplayBounds(bounds); + } + } + // -- end private boolean checkAMapNavi() { diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java index 2693c8381c..33d0adeeca 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java @@ -1,6 +1,7 @@ package com.mogo.map.impl.amap.navi; import android.content.Context; +import android.graphics.Rect; import com.amap.api.maps.model.Polyline; import com.amap.api.navi.AMapNavi; @@ -185,4 +186,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { mNaviOverlayHelper.clearCalculatedOverlay(); } } + + public void setCalculatePathDisplayBounds( Rect bounds ){ + if ( mNaviOverlayHelper != null ) { + mNaviOverlayHelper.setCalculatePathDisplayBounds(bounds); + } + } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java index 5bed8c3c71..a8ef6433d6 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java @@ -58,7 +58,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { private int mSelectedPathId; private CalculatePathItem mSelectedCalculatePathItem; - private SoftReference< OnCalculatePathItemClickInteraction > mLineClickInteractionRef; + private OnCalculatePathItemClickInteraction mLineClickInteraction; public NaviOverlayHelper( AMapNavi mAMapNavi, AMap mAMap, Context mContext ) { this.mAMapNavi = mAMapNavi; @@ -157,7 +157,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { if ( i == 0 ) { mSelectedPathId = item.getId(); mSelectedCalculatePathItem = item; - wrapper.setStartBitmap( R.drawable.ic_search_poi_location ).setEndBitmap( R.drawable.ic_search_choice_point ); + wrapper.setStartBitmap( R.drawable.ic_navi_start ).setEndBitmap( R.drawable.ic_navi_target ); mAMapNavi.selectRouteId( item.getId() ); } wrapper.addToMap(); @@ -196,8 +196,8 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { if ( mPaths != null && !mPaths.isEmpty() ) { for ( MogoCalculatePath path : mPaths ) { if ( TextUtils.equals( path.getTagId(), polyline.getId() ) ) { - if ( mLineClickInteractionRef != null && mLineClickInteractionRef.get() != null ) { - mLineClickInteractionRef.get().onItemClicked( path.getTagId() ); + if ( mLineClickInteraction != null ) { + mLineClickInteraction.onItemClicked( path.getTagId() ); break; } } @@ -317,9 +317,12 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { } public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) { - if ( mLineClickInteractionRef != null ) { - mLineClickInteractionRef.clear(); + mLineClickInteraction = lineClickInteraction; + } + + public void setCalculatePathDisplayBounds( Rect bounds ) { + if ( bounds != null ) { + mBoundRect = bounds; } - mLineClickInteractionRef = new SoftReference<>( lineClickInteraction ); } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java index 85626c4231..e2db3a9e9f 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java @@ -1,5 +1,7 @@ package com.mogo.map.navi; +import android.graphics.Rect; + import com.mogo.map.MogoLatLng; import java.util.List; @@ -95,4 +97,11 @@ public interface IMogoNavi { */ void clearCalculatePaths(); + /** + * 设置显示规划路线的范围 + * + * @param bounds 范围 + */ + void setCalculatePathDisplayBounds( Rect bounds ); + } diff --git a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/ic_navi_start.png b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/ic_navi_start.png new file mode 100755 index 0000000000..5c5430c62e Binary files /dev/null and b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/ic_navi_start.png differ diff --git a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/ic_navi_target.png b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/ic_navi_target.png new file mode 100755 index 0000000000..a89d92e306 Binary files /dev/null and b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/ic_navi_target.png differ diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java index 4c39598ce8..d46d5b2d23 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java @@ -1,6 +1,7 @@ package com.mogo.map; import android.content.Context; +import android.graphics.Rect; import com.mogo.map.impl.amap.navi.NaviClient; import com.mogo.map.navi.IMogoNavi; @@ -127,4 +128,11 @@ public class MogoNavi implements IMogoNavi { mDelegate.clearCalculatePaths(); } } + + @Override + public void setCalculatePathDisplayBounds( Rect bounds ) { + if ( mDelegate != null ) { + mDelegate.setCalculatePathDisplayBounds( bounds ); + } + } } 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 3edd24855b..dd71df4fc9 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 @@ -13,7 +13,6 @@ import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; import com.mogo.module.common.MogoModulePaths; import com.mogo.service.MogoServicePaths; -import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.fragmentmanager.FragmentDescriptor; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.module.IMogoModuleProvider; @@ -27,12 +26,10 @@ import com.mogo.service.module.IMogoModuleProvider; public class AppNavigatorFragment extends MvpFragment< IView, Presenter< IView > > implements IView { private View mNavigation; - private View mMusic; - private View mChat; + private View mMediaCenter; + private View mCarSettings; private View mApps; - private IMogoCardManager mCardManager; - private AppsFragment mAppsFragment; private IMogoFragmentManager mMogoFragmentManager; @@ -49,23 +46,20 @@ public class AppNavigatorFragment extends MvpFragment< IView, Presenter< IView > @Override protected void initViews() { - mCardManager = ( IMogoCardManager ) ARouter.getInstance().build( MogoServicePaths.PATH_CARD_MANAGER ).navigation( getContext() ); mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation(); mNavigation = findViewById( R.id.module_apps_id_navigation ); - mMusic = findViewById( R.id.module_apps_id_music ); - mChat = findViewById( R.id.module_apps_id_chat ); + mMediaCenter = findViewById( R.id.module_apps_ic_media_center ); + mCarSettings = findViewById( R.id.module_apps_ic_car_settings ); mApps = findViewById( R.id.module_apps_id_apps ); mNavigation.setOnClickListener( view -> { mSearchProvider = ( IMogoModuleProvider ) ARouter.getInstance().build( MogoModulePaths.PATH_MODULE_SEARCH ).navigation(); final Fragment fragment = mSearchProvider.createFragment( getContext(), null ); mMogoFragmentManager.push( new FragmentDescriptor.Builder().fragment( fragment ).tag( MogoModulePaths.PATH_FRAGMENT_SEARCH ).notifyMainModule( true ).build() ); } ); - mMusic.setOnClickListener( view -> { - mCardManager.switch2( "CARD_TYPE_SHARE_MUSIC" ); + mMediaCenter.setOnClickListener( view -> { } ); - mChat.setOnClickListener( view -> { - mCardManager.switch2( "CARD_TYPE_CARS_CHATTING" ); + mCarSettings.setOnClickListener( view -> { } ); mApps.setOnClickListener( view -> { mAppsFragment = new AppsFragment(); diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.png new file mode 100644 index 0000000000..bb7ed874fb Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_car_settings.png differ diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png new file mode 100644 index 0000000000..13aa66438a Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png differ diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml index 01f080cb69..4c773f62bf 100644 --- a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml +++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml @@ -13,18 +13,18 @@ android:src="@drawable/module_apps_ic_navigation" /> + android:src="@drawable/module_apps_ic_media_center" /> + android:src="@drawable/module_apps_ic_car_settings" /> implements IMogoVoiceList super.onCreate( owner ); mMogoMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( getContext() ); registerUnWakeupCmd(); + + IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() ); + mogoNavi.setCalculatePathDisplayBounds( new Rect( + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.dp_730 ) + WindowUtils.dip2px( getContext(), 80 ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.dp_120 ) + WindowUtils.dip2px( getContext(), 80 ), + WindowUtils.dip2px( getContext(), 80 ), + WindowUtils.dip2px( getContext(), 80 ) + ) ); } private void registerUnWakeupCmd() { @@ -157,7 +168,7 @@ public class MapPresenter extends Presenter< MapView > implements IMogoVoiceList mView.getUIController().changeMapMode( EnumMapUI.Type_Night ); } else if ( action == 1 ) { mView.getUIController().changeMapMode( EnumMapUI.Type_Light ); - } else if( action == 2){ + } else if ( action == 2 ) { mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night ); } break; 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 0613de5866..99f408481d 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 @@ -220,6 +220,7 @@ public class MogoServiceProvider implements IMogoModuleProvider, mUiController = mMogoMapService.getMapUIController(); mStatusManager = ( IMogoStatusManager ) ARouter.getInstance().build( MogoServicePaths.PATH_STATUS_MANAGER ).navigation( context ); mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.USER_INTERACTED, this ); + mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEARCH_UI, this ); //TODO 初始化地图地图绘制大而全的Marker MarkerServiceHandler.init( mContext );