opt: main page, add polyline api, add back to launcher logic; bugfix: map resume when back to mainactivity

This commit is contained in:
wangcongtao
2020-03-10 21:15:46 +08:00
parent b8a10f207d
commit 4d96649d14
24 changed files with 956 additions and 308 deletions

View File

@@ -47,13 +47,21 @@ dependencies {
implementation rootProject.ext.dependencies.rxandroid
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogomap
implementation rootProject.ext.dependencies.mogomapapi
implementation rootProject.ext.dependencies.mogoutils
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.modulecommon
implementation rootProject.ext.dependencies.moduleshare
} else {
implementation project(":libraries:mogo-map")
implementation project(":libraries:mogo-map-api")
implementation project(":foudations:mogo-utils")
api project(":foudations:mogo-commons")
implementation project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':modules:mogo-module-common')
implementation project(':modules:mogo-module-share')
}
}

View File

@@ -1,33 +1,31 @@
package com.mogo.module.back;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.idst.nls.internal.utils.L;
import com.mogo.commons.AbsMogoApplication;
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.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.service.module.ModuleType;
import com.mogo.utils.logger.Logger;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
/**
* @author congtaowang
* @since 2020-02-26
@@ -35,7 +33,12 @@ import java.util.Map;
* 描述
*/
@Route( path = BackToLauncherConst.MODULE_PATH )
public class BackToLauncherModuleProvider implements IMogoModuleProvider {
public class BackToLauncherModuleProvider implements IMogoModuleProvider, IMogoIntentListener {
private IMogoServiceApis mServiceApis;
private IMogoIntentManager mIntentManager;
public static final String COMMAND_BACK = "com.ileja.launcher.back";
private static final String TAG = "BackToLauncherModuleProvider";
@@ -98,54 +101,17 @@ public class BackToLauncherModuleProvider implements IMogoModuleProvider {
@Override
public void init( Context context ) {
BackToMainHomeManager.addMainHomeView();
// final Activity activity = getTopActivity(context.getPackageName());
// if ( activity instanceof FragmentActivity ) {
// Logger.d( TAG, "init." );
// FragmentManager fragmentManager = ( ( FragmentActivity ) activity ).getSupportFragmentManager();
// fragmentManager.beginTransaction()
// .add( new Back2LauncherFragment(), BackToLauncherConst.MODULE_NAME )
// .commitAllowingStateLoss();
// fragmentManager.executePendingTransactions();
// }
mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation();
mIntentManager = mServiceApis.getIntentManagerApi();
mIntentManager.registerIntentListener( COMMAND_BACK, this );
BackToMainHomeManager.init( mServiceApis.getFragmentManagerApi() );
}
// /**
// * 获取当前运行的activity
// */
// private Activity getTopActivity(String process) {
// Log.i("activity", "[getTopActivity]");
// try {
// Class activityThreadClass = Class.forName("android.app.ActivityThread");
// Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
// Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
// activitiesField.setAccessible(true);
// //16~18 HashMap
// //19~27 ArrayMap
// Map<Object, Object> activities;
// if ( Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
// activities = ( HashMap<Object, Object> ) activitiesField.get(activityThread);
// } else {
// activities = ( ArrayMap<Object, Object> ) activitiesField.get(activityThread);
// }
// if (activities.size() < 1) {
// return null;
// }
// for (Object activityRecord : activities.values()) {
// Class activityRecordClass = activityRecord.getClass();
// Field pausedField = activityRecordClass.getDeclaredField("paused");
// pausedField.setAccessible(true);
// if (!pausedField.getBoolean(activityRecord)) {
// Field activityField = activityRecordClass.getDeclaredField("activity");
// activityField.setAccessible(true);
// Activity activity = (Activity) activityField.get(activityRecord);
// if ( TextUtils.equals( process, activity.getPackageName() ) ) {
// return activity;
// }
// }
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// return null;
// }
@Override
public void onIntentReceived( String intentStr, Intent intent ) {
if ( COMMAND_BACK.equals( intentStr ) ) {
Logger.d( TAG, "received back to home command." );
BackToMainHomeManager.backToLauncher();
}
}
}

View File

@@ -14,15 +14,35 @@ import android.view.WindowManager;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.module.back.utils.Utils;
import com.mogo.module.back.utils.WindowManagerViewHelper;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.utils.logger.Logger;
public class BackToMainHomeManager {
private static View mBackView;
public static void addMainHomeView(){
Logger.d("BackToMainHomeManager","addMainHomeView");
if (mBackView != null)WindowManagerViewHelper.removeView(mBackView);
mBackView = LayoutInflater.from(AbsMogoApplication.getApp()).inflate(R.layout.mogo_module_back_home_back_layout, null);
private static IMogoFragmentManager mFragmentManager;
public static void init( IMogoFragmentManager manager ) {
mFragmentManager = manager;
}
public static void backToLauncher(){
Intent intent = new Intent();
intent.setAction( Intent.ACTION_MAIN );
intent.addCategory( Intent.CATEGORY_HOME );
intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
AbsMogoApplication.getApp().startActivity( intent );
if ( mFragmentManager != null ) {
mFragmentManager.clearAll();
}
}
public static void addMainHomeView() {
Logger.d( "BackToMainHomeManager", "addMainHomeView" );
if ( mBackView != null ) WindowManagerViewHelper.removeView( mBackView );
mBackView = LayoutInflater.from( AbsMogoApplication.getApp() ).inflate( R.layout.mogo_module_back_home_back_layout, null );
final Context context = mBackView.getContext();
if ( context == null || context.getApplicationContext() == null ) {
return;
@@ -31,32 +51,24 @@ public class BackToMainHomeManager {
if ( windowManager == null ) {
return;
}
mBackView.setOnClickListener(view -> {
if (Utils.isActivityExits("com.mogo.launcher","com.mogo.module.main.MainActivity")){
ComponentName cn = new ComponentName("com.mogo.launcher", "com.mogo.module.main.MainActivity") ;
Intent intent = new Intent() ;
intent.setComponent(cn) ;
if (!(AbsMogoApplication.getApp().getApplicationContext() instanceof Activity)) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
AbsMogoApplication.getApp().startActivity(intent);
}
});
mBackView.setOnClickListener( view -> {
backToLauncher();
} );
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.x = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset(R.dimen.module_back_main_home_icon_left);
params.y = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset(R.dimen.module_back_main_home_icon_top);
params.x = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_left );
params.y = AbsMogoApplication.getApp().getResources().getDimensionPixelOffset( R.dimen.module_back_main_home_icon_top );
params.gravity = Gravity.LEFT | Gravity.CENTER;
params.type = getFitWindowParamsType();
params.format = PixelFormat.RGBA_8888;
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
windowManager.addView( mBackView, params );
WindowManagerViewHelper.attachMovementEvent(mBackView,params);
WindowManagerViewHelper.attachMovementEvent( mBackView, params );
}
public static void removeMainHomeView(){
WindowManagerViewHelper.removeView(mBackView);
public static void removeMainHomeView() {
WindowManagerViewHelper.removeView( mBackView );
}
private static int getFitWindowParamsType() {

View File

@@ -7,13 +7,13 @@ import android.content.pm.ResolveInfo;
import com.mogo.commons.AbsMogoApplication;
public class Utils {
public static boolean isActivityExits(String packageName,String classStr){
public static boolean isActivityExits( String packageName, String classStr ) {
Intent intent = new Intent();
intent.setClassName(packageName, classStr);
ResolveInfo resolveInfo = AbsMogoApplication.getApp().getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
if(resolveInfo != null) {
intent.setClassName( packageName, classStr );
ResolveInfo resolveInfo = AbsMogoApplication.getApp().getPackageManager().resolveActivity( intent, PackageManager.MATCH_DEFAULT_ONLY );
if ( resolveInfo != null ) {
return true;
}else{
} else {
return false;
}
}

View File

@@ -50,9 +50,9 @@ import java.util.Map;
* <p>
* 描述
*/
public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresenter>
implements EntranceView,
IMogoNaviListener, IMogoMapListener {
public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresenter >
implements EntranceView,
IMogoNaviListener, IMogoMapListener {
private static final String TAG = "EntranceFragment";
@@ -100,37 +100,37 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
@Override
protected void initViews() {
mMogoFragmentManager = (IMogoFragmentManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_FRAGMENT_MANAGER)
.navigation();
mMogoAddressManager = (IMogoAddressManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_ADDRESS_MANAGER)
.navigation();
mCommonAddress = findViewById(R.id.module_entrance_id_common_address);
mSearch = findViewById(R.id.module_entrance_id_search);
mSearch.setOnClickListener(view -> {
mSearchProvider = (IMogoModuleProvider) ARouter.getInstance()
.build(MogoModulePaths.PATH_MODULE_SEARCH)
mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance()
.build( MogoServicePaths.PATH_FRAGMENT_MANAGER )
.navigation();
mMogoAddressManager = ( IMogoAddressManager ) ARouter.getInstance()
.build( MogoServicePaths.PATH_ADDRESS_MANAGER )
.navigation();
final Fragment fragment = mSearchProvider.createFragment(getContext(), null);
mMogoFragmentManager.push(new FragmentDescriptor.Builder().fragment(fragment)
.tag(MogoModulePaths.PATH_FRAGMENT_SEARCH)
.notifyMainModule(true)
.build());
});
mHome = findViewById(R.id.module_entrance_id_home);
mHome.setOnClickListener(view -> {
mCommonAddress = findViewById( R.id.module_entrance_id_common_address );
mSearch = findViewById( R.id.module_entrance_id_search );
mSearch.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() );
} );
mHome = findViewById( R.id.module_entrance_id_home );
mHome.setOnClickListener( view -> {
mMogoAddressManager.goHome();
});
} );
mCompany = findViewById(R.id.module_entrance_id_company);
mCompany.setOnClickListener(view -> {
mCompany = findViewById( R.id.module_entrance_id_company );
mCompany.setOnClickListener( view -> {
mMogoAddressManager.goCompany();
});
} );
mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition );
mUploadRoadCondition.setOnClickListener( view -> {
@@ -141,78 +141,79 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mVRMode.setOnClickListener( view -> {
} );
mMove2CurrentLocation = findViewById(R.id.module_entrance_id_move2_current_location);
mMove2CurrentLocation.setOnClickListener(view -> {
mMove2CurrentLocation = findViewById( R.id.module_entrance_id_move2_current_location );
mMove2CurrentLocation.setOnClickListener( view -> {
final MogoLocation location = mMogoLocationClient.getLastKnowLocation();
if (location != null) {
mMogoStatusManager.setUserInteractionStatus(TAG, true, false);
mMApUIController.changeZoom(16.0f);
mMogoStatusManager.setUserInteractionStatus(TAG, true, false);
if ( location != null ) {
mMogoStatusManager.setUserInteractionStatus( TAG, true, false );
mMApUIController.changeZoom( 16.0f );
mMogoStatusManager.setUserInteractionStatus( TAG, true, false );
mMApUIController.recoverLockMode();
}
});
} );
mNaviInfo = findViewById(R.id.module_entrance_id_navi_info_panel);
mExitNavi = findViewById(R.id.module_entrance_id_exit_navi);
mExitNavi.setOnClickListener(view -> {
if (mMogoNavi != null) {
mNaviInfo = findViewById( R.id.module_entrance_id_navi_info_panel );
mExitNavi = findViewById( R.id.module_entrance_id_exit_navi );
mExitNavi.setOnClickListener( view -> {
if ( mMogoNavi != null ) {
//if ( mIsLock ) {
NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog(getContext());
NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog( getContext() );
naviNoticeDialog.show();
//} else {
// mMApUIController.recoverLockMode();
//}
}
});
} );
ivMode = findViewById(R.id.module_ext_id_north);
ivMode.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
if (ivMode.isSelected()) {
mMApUIController.changeMapMode(EnumMapUI.CarUp_2D);
ivMode = findViewById( R.id.module_ext_id_north );
ivMode.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
if ( ivMode.isSelected() ) {
mMApUIController.changeMapMode( EnumMapUI.CarUp_2D );
} else {
mMApUIController.changeMapMode(EnumMapUI.NorthUP_2D);
mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D );
}
ivMode.setSelected(!ivMode.isSelected());
ivMode.setSelected( !ivMode.isSelected() );
ivMode.setText(
getString(ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up));
getString( ivMode.isSelected() ? R.string.mode_car_up : R.string.mode_north_up ) );
}
});
} );
mSpeedLimit = findViewById(R.id.module_entrance_id_speed_limit_container);
mSpeedLimitValue = findViewById(R.id.module_entrance_id_speed_limit_value);
mSpeedLimitUnit = findViewById(R.id.module_entrance_id_speed_limit_unit);
mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container );
mSpeedLimitValue = findViewById( R.id.module_entrance_id_speed_limit_value );
mSpeedLimitUnit = findViewById( R.id.module_entrance_id_speed_limit_unit );
}
@NonNull
@Override
protected EntrancePresenter createPresenter() {
return new EntrancePresenter(getContext(), this);
return new EntrancePresenter( getContext(), this );
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mService = (IMogoMapService) ARouter.getInstance()
.build(MogoServicePaths.PATH_SERVICES_MAP)
.navigation(getContext());
mMogoRegisterCenter = (IMogoRegisterCenter) ARouter.getInstance()
.build(MogoServicePaths.PATH_REGISTER_CENTER)
.navigation(getContext());
public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
mService = ( IMogoMapService ) ARouter.getInstance()
.build( MogoServicePaths.PATH_SERVICES_MAP )
.navigation( getContext() );
mMogoRegisterCenter = ( IMogoRegisterCenter ) ARouter.getInstance()
.build( MogoServicePaths.PATH_REGISTER_CENTER )
.navigation( getContext() );
mMApUIController = mService.getMapUIController();
mMogoLocationClient = mService.getSingletonLocationClient(getContext());
mMogoNavi = mService.getNavi(getContext());
mAnalytics = (IMogoAnalytics) ARouter.getInstance()
.build(MogoServicePaths.PATH_UTILS_ANALYTICS)
.navigation(getContext());
mMogoStatusManager = (IMogoStatusManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_STATUS_MANAGER)
.navigation(getContext());
mMogoLocationClient = mService.getSingletonLocationClient( getContext() );
mMogoNavi = mService.getNavi( getContext() );
mAnalytics = ( IMogoAnalytics ) ARouter.getInstance()
.build( MogoServicePaths.PATH_UTILS_ANALYTICS )
.navigation( getContext() );
mMogoStatusManager = ( IMogoStatusManager ) ARouter.getInstance()
.build( MogoServicePaths.PATH_STATUS_MANAGER )
.navigation( getContext() );
mMogoRegisterCenter.registerMogoNaviListener(ExtensionsModuleConst.TYPE_ENTRANCE, this);
mMogoRegisterCenter.registerMogoMapListener(ExtensionsModuleConst.TYPE_ENTRANCE, this);
mMogoRegisterCenter.registerMogoNaviListener( ExtensionsModuleConst.TYPE_ENTRANCE, this );
mMogoRegisterCenter.registerMogoMapListener( ExtensionsModuleConst.TYPE_ENTRANCE, this );
mMogoMarkerManager = mService.getMarkerManager(getContext());
mMogoMarkerManager = mService.getMarkerManager( getContext() );
}
@Override
@@ -224,30 +225,30 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
}
@Override
public void onNaviInfoUpdate(MogoNaviInfo naviinfo) {
if (naviinfo == null) {
public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) {
if ( naviinfo == null ) {
return;
}
mNaviInfo.notifyChanged(naviinfo);
mNaviInfo.notifyChanged( naviinfo );
}
@Override
public void onStartNavi() {
mCommonAddress.setVisibility(View.GONE);
mNaviInfo.setVisibility(View.VISIBLE);
ivMode.setVisibility(View.VISIBLE);
mExitNavi.setVisibility(View.VISIBLE);
mMApUIController.setPointToCenter(0.675926, 0.77552);
mCommonAddress.setVisibility( View.GONE );
mNaviInfo.setVisibility( View.VISIBLE );
ivMode.setVisibility( View.VISIBLE );
mExitNavi.setVisibility( View.VISIBLE );
mMApUIController.setPointToCenter( 0.675926, 0.77552 );
}
@Override
public void onStopNavi() {
mCommonAddress.setVisibility(View.VISIBLE);
mNaviInfo.setVisibility(View.GONE);
ivMode.setVisibility(View.GONE);
mExitNavi.setVisibility(View.GONE);
mSpeedLimit.setVisibility(View.GONE);
mMApUIController.setPointToCenter(0.66145, 0.590688);
mCommonAddress.setVisibility( View.VISIBLE );
mNaviInfo.setVisibility( View.GONE );
ivMode.setVisibility( View.GONE );
mExitNavi.setVisibility( View.GONE );
mSpeedLimit.setVisibility( View.GONE );
mMApUIController.setPointToCenter( 0.66145, 0.590688 );
}
@Override
@@ -259,16 +260,16 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
}
@Override
public void onUpdateTraffic(MogoTraffic traffic) {
if (traffic == null) {
public void onUpdateTraffic( MogoTraffic traffic ) {
if ( traffic == null ) {
return;
}
if (traffic.getSpeedLimit() <= 0) {
mSpeedLimit.setVisibility(View.INVISIBLE);
mSpeedLimitValue.setText("--");
if ( traffic.getSpeedLimit() <= 0 ) {
mSpeedLimit.setVisibility( View.INVISIBLE );
mSpeedLimitValue.setText( "--" );
} else {
mSpeedLimit.setVisibility(View.VISIBLE);
mSpeedLimitValue.setText(String.valueOf(traffic.getSpeedLimit()));
mSpeedLimit.setVisibility( View.VISIBLE );
mSpeedLimitValue.setText( String.valueOf( traffic.getSpeedLimit() ) );
}
}
@@ -278,43 +279,43 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
}
@Override
public void onTouch(MotionEvent motionEvent) {
public void onTouch( MotionEvent motionEvent ) {
}
@Override
public void onPOIClick(MogoPoi poi) {
public void onPOIClick( MogoPoi poi ) {
}
@Override
public void onMapClick(MogoLatLng latLng) {
public void onMapClick( MogoLatLng latLng ) {
}
@Override
public void onLockMap(boolean isLock) {
public void onLockMap( boolean isLock ) {
mIsLock = isLock;
if (isLock) {
mExitNavi.setText(R.string.module_ext_str_exit_navi);
if ( isLock ) {
mExitNavi.setText( R.string.module_ext_str_exit_navi );
} else {
mExitNavi.setText(R.string.module_ext_str_exit_navi);
mExitNavi.setText( R.string.module_ext_str_exit_navi );
}
}
@Override
public void onMapModeChanged(EnumMapUI ui) {
public void onMapModeChanged( EnumMapUI ui ) {
}
@Override
public void onMapChanged(MogoLatLng latLng, float zoom, float tilt, float bearing) {
public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) {
}
private void traceData(String from) {
Map<String, Object> properties = new HashMap<>();
properties.put("from", from);
mAnalytics.track("Launcher_Share_Click", properties);
private void traceData( String from ) {
Map< String, Object > properties = new HashMap<>();
properties.put( "from", from );
mAnalytics.track( "Launcher_Share_Click", properties );
}
}

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
@@ -9,9 +8,7 @@
<FrameLayout
android:id="@+id/module_main_id_map_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintLeft_toRightOf="@+id/module_main_id_apps_fragment_container"
app:layout_constraintRight_toRightOf="parent" />
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/module_main_id_map_top_shadow_frame"
@@ -27,68 +24,56 @@
android:background="@drawable/module_main_dw_left_frame_bkg"
android:visibility="invisible" />
<LinearLayout
<FrameLayout
android:id="@+id/module_main_id_header_fragment_container"
android:layout_width="match_parent"
android:layout_height="@dimen/module_ext_height" />
<FrameLayout
android:id="@+id/module_main_card_container_frame"
android:layout_width="@dimen/module_main_card_container_width"
android:layout_height="match_parent"
android:layout_below="@+id/module_main_id_header_fragment_container"
android:layout_marginLeft="@dimen/module_main_card_container_marginLeft"
android:layout_marginTop="@dimen/module_main_card_container_marginTop">
<com.mogo.module.main.cards.OrientedViewPager
android:id="@+id/module_main_id_cards_container"
android:layout_width="match_parent"
android:layout_height="@dimen/module_main_card_container_height"
android:layout_marginBottom="@dimen/module_main_card_container_marginBottom"
android:clipToPadding="false"
android:overScrollMode="never"
android:paddingBottom="@dimen/module_main_card_container_paddingBottom" />
<!-- 应用入口-->
<FrameLayout
android:id="@+id/module_main_id_apps_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<FrameLayout
android:id="@+id/module_main_id_card_cover_up_bottom"
android:layout_width="match_parent"
android:layout_height="20px"
android:layout_marginLeft="15px"
android:layout_marginTop="@dimen/module_main_card_cover_up_margin"
android:layout_marginRight="15px"
android:background="@drawable/module_main_card_cover_up_bottom"
android:visibility="gone" />
</FrameLayout>
<!--快捷操作浮层-->
<FrameLayout
android:id="@+id/module_main_id_entrance_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- 小智语音-->
<FrameLayout
android:id="@+id/module_main_id_header_fragment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_marginTop="@dimen/module_main_card_container_marginTop"
android:layout_height="match_parent">
<!-- 卡片-->
<FrameLayout
android:layout_width="@dimen/module_main_card_container_width"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/module_main_card_container_marginLeft">
<com.mogo.module.main.cards.OrientedViewPager
android:id="@+id/module_main_id_cards_container"
android:layout_width="match_parent"
android:layout_height="@dimen/module_main_card_container_height"
android:layout_marginBottom="@dimen/module_main_card_container_marginBottom"
android:clipToPadding="false"
android:overScrollMode="never"
android:paddingBottom="@dimen/module_main_card_container_paddingBottom" />
<!-- 应用入口-->
<FrameLayout
android:id="@+id/module_main_id_apps_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
</FrameLayout>
<FrameLayout
android:id="@+id/module_main_id_card_cover_up_bottom"
android:layout_width="match_parent"
android:layout_height="20px"
android:visibility="gone"
android:layout_marginTop="@dimen/module_main_card_cover_up_margin"
android:layout_marginLeft="15px"
android:layout_marginRight="15px"
android:background="@drawable/module_main_card_cover_up_bottom"/>
</FrameLayout>
<!--快捷操作浮层-->
<FrameLayout
android:id="@+id/module_main_id_entrance_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</LinearLayout>
android:layout_below="@+id/module_main_id_header_fragment_container"
android:layout_marginTop="@dimen/module_main_card_container_marginTop"
android:layout_toRightOf="@+id/module_main_card_container_frame" />
<!-- 浮层-->
<FrameLayout
@@ -104,6 +89,6 @@
<FrameLayout
android:id="@+id/module_main_id_cover_up"
android:layout_width="match_parent"
android:background="@drawable/module_main_launcher_bg"
android:layout_height="match_parent"/>
</FrameLayout>
android:layout_height="match_parent"
android:background="@drawable/module_main_launcher_bg" />
</RelativeLayout>

View File

@@ -22,13 +22,12 @@ import com.mogo.service.statusmanager.StatusDescriptor;
* <p>
* 地图图层,地图操作都在这个图层完成
*/
public class MapFragment extends MvpFragment< MapView, MapPresenter > implements MapView, IMogoStatusChangedListener {
public class MapFragment extends MvpFragment< MapView, MapPresenter > implements MapView {
private static final String TAG = "MapFragment";
private MogoMapView mMogoMapView;
private IMogoMap mMogoMap;
private IMogoStatusManager mMogoStatusManager;
private boolean mIsControllerByOthersStatus = false;
@@ -67,8 +66,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
// mMogoMapView.onCreate( savedInstanceState );
//}
initMapView();
mMogoStatusManager = ( IMogoStatusManager ) ARouter.getInstance().build( MogoServicePaths.PATH_STATUS_MANAGER ).navigation( getContext() );
mMogoStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.APP_LIST_UI, this );
}
@Override
@@ -134,18 +131,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
return mMogoMap.getUIController();
}
@Override
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
if ( descriptor == StatusDescriptor.APP_LIST_UI ) {
mIsControllerByOthersStatus = isTrue;
if ( isTrue ) {
mMogoMapView.onPause();
} else {
mMogoMapView.onResume();
}
}
}
@Override
public void onDestroyView() {
super.onDestroyView();

View File

@@ -7,6 +7,7 @@ import android.content.IntentFilter;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.Trace;
import android.text.TextUtils;
import android.view.MotionEvent;
@@ -461,6 +462,7 @@ public class MogoServices implements IMogoMapListener,
*/
private boolean invokeRefreshWhenTranslationByUser( MogoLatLng latLng ) {
try {
Trace.beginSection( "timer.invokeRefreshWhenTranslationByUser" );
float factor = 0.0f;
if ( mIsVertical ) {
factor = getMapCameraFactWidth();
@@ -472,6 +474,7 @@ public class MogoServices implements IMogoMapListener,
}
Logger.d( TAG, "invokeRefreshWhenTranslationByUsermLastCustomRefreshCenterLocation = %s, latLng = %s", mLastCustomRefreshCenterLocation, latLng );
float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation );
Trace.endSection();
return distance > factor;
} catch ( Exception e ) {
Logger.e( TAG, e, "warming. " );

View File

@@ -425,9 +425,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
* @param onlineCarList
*/
private void drawOnlineCarMarkers( List< MarkerOnlineCar > onlineCarList ) {
// 将数据同步给在线车辆,避免每次 perform 的时候去拉取,造成消耗
if ( onlineCarList == null || onlineCarList.isEmpty() ) {
MogoDataHandler.getInstance().invoke( ServiceConst.CARD_TYPE_USER_DATA, new ArrayList<>( ) );
return;
}
MogoDataHandler.getInstance().invoke( ServiceConst.CARD_TYPE_USER_DATA, onlineCarList );
double nearlyDistance = Float.MAX_VALUE;
for ( MarkerOnlineCar markerOnlineCar : onlineCarList ) {
MarkerLocation markerLocation = markerOnlineCar.getLocation();