stash
2
.idea/misc.xml
generated
@@ -4,7 +4,7 @@
|
|||||||
<asm skipDebug="false" skipFrames="false" skipCode="false" expandFrames="false" />
|
<asm skipDebug="false" skipFrames="false" skipCode="false" expandFrames="false" />
|
||||||
<groovy codeStyle="LEGACY" />
|
<groovy codeStyle="LEGACY" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -113,6 +113,8 @@ android {
|
|||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// f系列-分体机
|
// f系列-分体机
|
||||||
f80x {
|
f80x {
|
||||||
@@ -131,6 +133,8 @@ android {
|
|||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// e系列,采用Launcher方案
|
// e系列,采用Launcher方案
|
||||||
e8xx {
|
e8xx {
|
||||||
@@ -149,6 +153,8 @@ android {
|
|||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// 同上
|
// 同上
|
||||||
em4 {
|
em4 {
|
||||||
@@ -167,6 +173,8 @@ android {
|
|||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// e系列-2+32,对标D系列2+32,采用独立app的形式
|
// e系列-2+32,对标D系列2+32,采用独立app的形式
|
||||||
em3 {
|
em3 {
|
||||||
@@ -185,6 +193,8 @@ android {
|
|||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// e系列-1+16,对标D系列1+16,采用独立app形式
|
// e系列-1+16,对标D系列1+16,采用独立app形式
|
||||||
em1 {
|
em1 {
|
||||||
@@ -203,6 +213,8 @@ android {
|
|||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// d系列
|
// d系列
|
||||||
d8xx {
|
d8xx {
|
||||||
@@ -220,7 +232,9 @@ android {
|
|||||||
// 是否加载引导模块
|
// 是否加载引导模块
|
||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'true'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'true'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// d系列 2 + 32
|
// d系列 2 + 32
|
||||||
d80x {
|
d80x {
|
||||||
@@ -238,7 +252,9 @@ android {
|
|||||||
// 是否加载引导模块
|
// 是否加载引导模块
|
||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'true'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'true'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// d系列 1+16 版本
|
// d系列 1+16 版本
|
||||||
d82x {
|
d82x {
|
||||||
@@ -257,6 +273,8 @@ android {
|
|||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'true'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'true'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
|
||||||
}
|
}
|
||||||
// 比亚迪
|
// 比亚迪
|
||||||
bydauto {
|
bydauto {
|
||||||
@@ -275,6 +293,8 @@ android {
|
|||||||
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
buildConfigField 'boolean', 'LOAD_GUIDE_MODULE', 'false'
|
||||||
// 是否支持换肤
|
// 是否支持换肤
|
||||||
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false'
|
||||||
|
// 是否支持查询导航目的地车友
|
||||||
|
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'false'
|
||||||
}
|
}
|
||||||
qa {
|
qa {
|
||||||
dimension "env"
|
dimension "env"
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
project.dependencies {
|
if (Boolean.valueOf(RELEASE)) {
|
||||||
|
|
||||||
if (Boolean.valueOf(RELEASE)) {
|
|
||||||
bydautoImplementation rootProject.ext.dependencies.skinsupportnoop
|
bydautoImplementation rootProject.ext.dependencies.skinsupportnoop
|
||||||
d8xxImplementation rootProject.ext.dependencies.skinsupportnoop
|
|
||||||
d82xImplementation rootProject.ext.dependencies.skinsupportnoop
|
d82xImplementation rootProject.ext.dependencies.skinsupportnoop
|
||||||
em1Implementation rootProject.ext.dependencies.skinsupportnoop
|
em1Implementation rootProject.ext.dependencies.skinsupportnoop
|
||||||
d80xImplementation rootProject.ext.dependencies.skinsupportnoop
|
|
||||||
em3Implementation rootProject.ext.dependencies.skinsupportnoop
|
em3Implementation rootProject.ext.dependencies.skinsupportnoop
|
||||||
|
|
||||||
|
d8xxImplementation rootProject.ext.dependencies.skinsupportimpl
|
||||||
|
d80xImplementation rootProject.ext.dependencies.skinsupportimpl
|
||||||
f8xxImplementation rootProject.ext.dependencies.skinsupportimpl
|
f8xxImplementation rootProject.ext.dependencies.skinsupportimpl
|
||||||
f80xImplementation rootProject.ext.dependencies.skinsupportimpl
|
f80xImplementation rootProject.ext.dependencies.skinsupportimpl
|
||||||
em4Implementation rootProject.ext.dependencies.skinsupportimpl
|
em4Implementation rootProject.ext.dependencies.skinsupportimpl
|
||||||
@@ -17,19 +15,21 @@ project.dependencies {
|
|||||||
f80xImplementation rootProject.ext.dependencies.skinsupportlight
|
f80xImplementation rootProject.ext.dependencies.skinsupportlight
|
||||||
em4Implementation rootProject.ext.dependencies.skinsupportlight
|
em4Implementation rootProject.ext.dependencies.skinsupportlight
|
||||||
e8xxImplementation rootProject.ext.dependencies.skinsupportlight
|
e8xxImplementation rootProject.ext.dependencies.skinsupportlight
|
||||||
// d8xxImplementation rootProject.ext.dependencies.skinsupportlight
|
d8xxImplementation rootProject.ext.dependencies.skinsupportlight
|
||||||
|
d80xImplementation rootProject.ext.dependencies.skinsupportlight
|
||||||
// d82xImplementation rootProject.ext.dependencies.skinsupportlight
|
// d82xImplementation rootProject.ext.dependencies.skinsupportlight
|
||||||
// em1Implementation rootProject.ext.dependencies.skinsupportlight
|
// em1Implementation rootProject.ext.dependencies.skinsupportlight
|
||||||
// d80xImplementation rootProject.ext.dependencies.skinsupportlight
|
|
||||||
// em3Implementation rootProject.ext.dependencies.skinsupportlight
|
// em3Implementation rootProject.ext.dependencies.skinsupportlight
|
||||||
} else {
|
} else {
|
||||||
|
project.dependencies {
|
||||||
|
|
||||||
bydautoImplementation project(':skin:mogo-skin-support-noop')
|
bydautoImplementation project(':skin:mogo-skin-support-noop')
|
||||||
d8xxImplementation project(':skin:mogo-skin-support-noop')
|
|
||||||
d82xImplementation project(':skin:mogo-skin-support-noop')
|
d82xImplementation project(':skin:mogo-skin-support-noop')
|
||||||
em1Implementation project(':skin:mogo-skin-support-noop')
|
em1Implementation project(':skin:mogo-skin-support-noop')
|
||||||
d80xImplementation project(':skin:mogo-skin-support-noop')
|
|
||||||
em3Implementation project(':skin:mogo-skin-support-noop')
|
em3Implementation project(':skin:mogo-skin-support-noop')
|
||||||
|
|
||||||
|
d8xxImplementation project(':skin:mogo-skin-support-impl')
|
||||||
|
d80xImplementation project(':skin:mogo-skin-support-impl')
|
||||||
f8xxImplementation project(':skin:mogo-skin-support-impl')
|
f8xxImplementation project(':skin:mogo-skin-support-impl')
|
||||||
f80xImplementation project(':skin:mogo-skin-support-impl')
|
f80xImplementation project(':skin:mogo-skin-support-impl')
|
||||||
em4Implementation project(':skin:mogo-skin-support-impl')
|
em4Implementation project(':skin:mogo-skin-support-impl')
|
||||||
@@ -39,10 +39,10 @@ project.dependencies {
|
|||||||
f80xImplementation project(':skin:mogo-skin-light')
|
f80xImplementation project(':skin:mogo-skin-light')
|
||||||
em4Implementation project(':skin:mogo-skin-light')
|
em4Implementation project(':skin:mogo-skin-light')
|
||||||
e8xxImplementation project(':skin:mogo-skin-light')
|
e8xxImplementation project(':skin:mogo-skin-light')
|
||||||
// d8xxImplementation project(':skin:mogo-skin-light')
|
d8xxImplementation project(':skin:mogo-skin-light')
|
||||||
|
d80xImplementation project(':skin:mogo-skin-light')
|
||||||
// d82xImplementation project(':skin:mogo-skin-light')
|
// d82xImplementation project(':skin:mogo-skin-light')
|
||||||
// em1Implementation project(':skin:mogo-skin-light')
|
// em1Implementation project(':skin:mogo-skin-light')
|
||||||
// d80xImplementation project(':skin:mogo-skin-light')
|
|
||||||
// em3Implementation project(':skin:mogo-skin-light')
|
// em3Implementation project(':skin:mogo-skin-light')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,9 @@
|
|||||||
project.dependencies {
|
project.dependencies {
|
||||||
if (Boolean.valueOf(RELEASE)) {
|
if (Boolean.valueOf(RELEASE)) {
|
||||||
independentImplementation rootProject.ext.dependencies.mogomodulewidgets
|
independentImplementation rootProject.ext.dependencies.mogomodulewidgets
|
||||||
|
implementation rootProject.ext.dependencies.mogomodulewidgets
|
||||||
} else {
|
} else {
|
||||||
independentImplementation project(':modules:mogo-module-widgets')
|
independentImplementation project(':modules:mogo-module-widgets')
|
||||||
|
implementation project(':modules:mogo-module-widgets')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,6 +14,7 @@ import com.mogo.commons.network.Utils;
|
|||||||
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
|
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
|
||||||
import com.mogo.module.back.BackToLauncherConst;
|
import com.mogo.module.back.BackToLauncherConst;
|
||||||
import com.mogo.module.carchatting.card.CallChatConstant;
|
import com.mogo.module.carchatting.card.CallChatConstant;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.common.MogoModule;
|
import com.mogo.module.common.MogoModule;
|
||||||
import com.mogo.module.common.MogoModulePaths;
|
import com.mogo.module.common.MogoModulePaths;
|
||||||
import com.mogo.module.main.service.MogoMainService;
|
import com.mogo.module.main.service.MogoMainService;
|
||||||
@@ -74,8 +75,8 @@ public class MogoApplication extends AbsMogoApplication {
|
|||||||
MogoModulePaths.addModule( new MogoModule( BackToLauncherConst.MODULE_PATH, BackToLauncherConst.MODULE_NAME ) );
|
MogoModulePaths.addModule( new MogoModule( BackToLauncherConst.MODULE_PATH, BackToLauncherConst.MODULE_NAME ) );
|
||||||
MogoModulePaths.addModule( new MogoModule( MediaConstants.TAG, MediaConstants.MODULE_TYPE ) );
|
MogoModulePaths.addModule( new MogoModule( MediaConstants.TAG, MediaConstants.MODULE_TYPE ) );
|
||||||
} else {
|
} else {
|
||||||
MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_WIDGETS, MogoServicePaths.PATH_WIDGETS ) );
|
|
||||||
}
|
}
|
||||||
|
MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_WIDGETS, MogoServicePaths.PATH_WIDGETS ) );
|
||||||
if ( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD ) {
|
if ( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_BYD ) {
|
||||||
MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) );
|
MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) );
|
||||||
}
|
}
|
||||||
@@ -130,6 +131,7 @@ public class MogoApplication extends AbsMogoApplication {
|
|||||||
DebugConfig.setRoadEventAnimated( BuildConfig.ROAD_EVENT_ANIMATED );
|
DebugConfig.setRoadEventAnimated( BuildConfig.ROAD_EVENT_ANIMATED );
|
||||||
DebugConfig.setLoadGuideModule( BuildConfig.LOAD_GUIDE_MODULE );
|
DebugConfig.setLoadGuideModule( BuildConfig.LOAD_GUIDE_MODULE );
|
||||||
DebugConfig.setSkinSupported( BuildConfig.IS_SKIN_SUPPORTED );
|
DebugConfig.setSkinSupported( BuildConfig.IS_SKIN_SUPPORTED );
|
||||||
|
DebugConfig.setSupportedSearchDestinationOnlineCarList( BuildConfig.IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -140,7 +142,7 @@ public class MogoApplication extends AbsMogoApplication {
|
|||||||
@Override
|
@Override
|
||||||
protected void init() {
|
protected void init() {
|
||||||
super.init();
|
super.init();
|
||||||
final IMogoServiceApis apis = ARouter.getInstance().navigation( IMogoServiceApis.class );
|
final IMogoServiceApis apis = MogoApisHandler.getInstance().getApis();
|
||||||
prepareBaseService( apis, 2_000L );
|
prepareBaseService( apis, 2_000L );
|
||||||
// installSkinManager( this, apis );
|
// installSkinManager( this, apis );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ public class DebugConfig {
|
|||||||
|
|
||||||
private static String SP_GUIDE = "SP_GUIDE_2020_09_09";
|
private static String SP_GUIDE = "SP_GUIDE_2020_09_09";
|
||||||
|
|
||||||
public static String getSpGuide(){
|
public static String getSpGuide() {
|
||||||
return SP_GUIDE;
|
return SP_GUIDE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,4 +277,17 @@ public class DebugConfig {
|
|||||||
public static boolean isSkinSupported() {
|
public static boolean isSkinSupported() {
|
||||||
return isSkinSupported;
|
return isSkinSupported;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否支持支持查询导航目的地车友信息
|
||||||
|
*/
|
||||||
|
private static boolean isSupportedSearchDestinationOnlineCarList = false;
|
||||||
|
|
||||||
|
public static void setSupportedSearchDestinationOnlineCarList( boolean isSupportedSearchDestinationOnlineCarList ) {
|
||||||
|
DebugConfig.isSupportedSearchDestinationOnlineCarList = isSupportedSearchDestinationOnlineCarList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isSupportedSearchDestinationOnlineCarList() {
|
||||||
|
return isSupportedSearchDestinationOnlineCarList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,4 +18,12 @@ public class SpStorage {
|
|||||||
public static void setTicket( String ticket ) {
|
public static void setTicket( String ticket ) {
|
||||||
SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).putString( "ticket", ticket );
|
SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).putString( "ticket", ticket );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getNavigationTarget(){
|
||||||
|
return SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getString( "naviTarget" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setNavigationTarget( String naviTarget ) {
|
||||||
|
SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).putString( "naviTarget", naviTarget );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.content.Intent;
|
|||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import com.mogo.commons.storage.SpStorage;
|
||||||
import com.mogo.map.impl.amap.utils.IconTypeUtils;
|
import com.mogo.map.impl.amap.utils.IconTypeUtils;
|
||||||
import com.mogo.map.navi.MogoNaviInfo;
|
import com.mogo.map.navi.MogoNaviInfo;
|
||||||
import com.mogo.map.navi.MogoNaviListenerHandler;
|
import com.mogo.map.navi.MogoNaviListenerHandler;
|
||||||
@@ -66,6 +67,11 @@ public class AutoNaviReceiver extends BroadcastReceiver {
|
|||||||
int state = intent.getIntExtra( "EXTRA_STATE", -1 );
|
int state = intent.getIntExtra( "EXTRA_STATE", -1 );
|
||||||
handleMapStatusChanged( state );
|
handleMapStatusChanged( state );
|
||||||
break;
|
break;
|
||||||
|
case 10056:
|
||||||
|
String json = intent.getStringExtra( "EXTRA_ROAD_INFO" );
|
||||||
|
SpStorage.setNavigationTarget(json);
|
||||||
|
Logger.d( TAG, json );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,11 @@ public class MainIndependentActivity extends MainActivity {
|
|||||||
eventPanelParams.leftMargin = getResources().getDimensionPixelSize( R.dimen.module_main_entrance_fragment_container_marginLeft );
|
eventPanelParams.leftMargin = getResources().getDimensionPixelSize( R.dimen.module_main_entrance_fragment_container_marginLeft );
|
||||||
mEntrance.setLayoutParams( eventPanelParams );
|
mEntrance.setLayoutParams( eventPanelParams );
|
||||||
|
|
||||||
|
// 事件面板
|
||||||
|
FrameLayout.LayoutParams historyMessagePanelParams = ( ( FrameLayout.LayoutParams ) mEventPanel.getLayoutParams() );
|
||||||
|
historyMessagePanelParams.leftMargin = getResources().getDimensionPixelSize( R.dimen.module_main_entrance_fragment_container_marginLeft );
|
||||||
|
mHistoryMessagePanel.setLayoutParams( historyMessagePanelParams );
|
||||||
|
|
||||||
mLeftShadowFrame.setVisibility(View.VISIBLE);
|
mLeftShadowFrame.setVisibility(View.VISIBLE);
|
||||||
mApps.setVisibility( View.GONE );
|
mApps.setVisibility( View.GONE );
|
||||||
}
|
}
|
||||||
@@ -58,7 +63,6 @@ public class MainIndependentActivity extends MainActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<dimen name="module_main_entrance_fragment_container_marginLeft">350px</dimen>
|
<dimen name="module_main_entrance_fragment_container_marginLeft">358px</dimen>
|
||||||
<dimen name="module_main_header_fragment_container_marginLeft">366px</dimen>
|
<dimen name="module_main_header_fragment_container_marginLeft">366px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
package com.mogo.module.apps;
|
package com.mogo.module.apps;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.commons.AbsMogoApplication;
|
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* author : zyz
|
* author : zyz
|
||||||
@@ -20,7 +18,7 @@ public class AppServiceHandler {
|
|||||||
|
|
||||||
public static IMogoServiceApis getApis() {
|
public static IMogoServiceApis getApis() {
|
||||||
if ( mApis == null ) {
|
if ( mApis == null ) {
|
||||||
mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( AbsMogoApplication.getApp() );
|
mApis = MogoApisHandler.getInstance().getApis();
|
||||||
}
|
}
|
||||||
return mApis;
|
return mApis;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,15 +8,9 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
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.utils.CarSeries;
|
import com.mogo.module.common.utils.CarSeries;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.service.module.IMogoModuleLifecycle;
|
|
||||||
import com.mogo.service.module.IMogoModuleProvider;
|
import com.mogo.service.module.IMogoModuleProvider;
|
||||||
import com.mogo.service.module.ModuleType;
|
import com.mogo.service.module.ModuleType;
|
||||||
|
|
||||||
@@ -59,7 +53,7 @@ public class BackToLauncherModuleProvider implements IMogoModuleProvider {
|
|||||||
if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
|
if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
|
||||||
BackToMainHomeManager.addMainHomeView();
|
BackToMainHomeManager.addMainHomeView();
|
||||||
}
|
}
|
||||||
mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation();
|
mServiceApis = MogoApisHandler.getInstance().getApis();
|
||||||
BackToMainHomeManager.init( mServiceApis );
|
BackToMainHomeManager.init( mServiceApis );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class BackToMainHomeManager {
|
|||||||
.size( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT )
|
.size( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT )
|
||||||
.gravity( Gravity.LEFT | Gravity.TOP )
|
.gravity( Gravity.LEFT | Gravity.TOP )
|
||||||
.showInWindowManager();
|
.showInWindowManager();
|
||||||
mWindowManagerView.attachTouchEvent( view -> {
|
mWindowManagerView.attachTouchEvent( (view, xPos, yPos) -> {
|
||||||
backToLauncher();
|
backToLauncher();
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ dependencies {
|
|||||||
implementation rootProject.ext.dependencies.androidxappcompat
|
implementation rootProject.ext.dependencies.androidxappcompat
|
||||||
implementation rootProject.ext.dependencies.androidxrecyclerview
|
implementation rootProject.ext.dependencies.androidxrecyclerview
|
||||||
implementation rootProject.ext.dependencies.androidxconstraintlayout
|
implementation rootProject.ext.dependencies.androidxconstraintlayout
|
||||||
|
implementation rootProject.ext.dependencies.arouter
|
||||||
if (Boolean.valueOf(RELEASE)) {
|
if (Boolean.valueOf(RELEASE)) {
|
||||||
api rootProject.ext.dependencies.mogomap
|
api rootProject.ext.dependencies.mogomap
|
||||||
api rootProject.ext.dependencies.mogomapapi
|
api rootProject.ext.dependencies.mogomapapi
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package com.mogo.module.common;
|
||||||
|
|
||||||
|
import com.alibaba.android.arouter.launcher.ARouter;
|
||||||
|
import com.mogo.service.IMogoServiceApis;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
* <p>
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
public final class MogoApisHandler {
|
||||||
|
|
||||||
|
private IMogoServiceApis sApis;
|
||||||
|
|
||||||
|
private static volatile MogoApisHandler sInstance;
|
||||||
|
|
||||||
|
private MogoApisHandler() {
|
||||||
|
sApis = ARouter.getInstance().navigation( IMogoServiceApis.class );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MogoApisHandler getInstance() {
|
||||||
|
if ( sInstance == null ) {
|
||||||
|
synchronized ( MogoApisHandler.class ) {
|
||||||
|
if ( sInstance == null ) {
|
||||||
|
sInstance = new MogoApisHandler();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void release() {
|
||||||
|
sInstance = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Object readResolve() {
|
||||||
|
// 阻止反序列化,必须实现 Serializable 接口
|
||||||
|
return sInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IMogoServiceApis getApis() {
|
||||||
|
if ( sApis == null ) {
|
||||||
|
synchronized ( this ) {
|
||||||
|
if ( sApis != null ) {
|
||||||
|
sApis = ARouter.getInstance().navigation( IMogoServiceApis.class );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sApis;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,337 @@
|
|||||||
|
package com.mogo.module.common.widget;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.BitmapShader;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.ColorFilter;
|
||||||
|
import android.graphics.Matrix;
|
||||||
|
import android.graphics.Paint;
|
||||||
|
import android.graphics.RectF;
|
||||||
|
import android.graphics.Shader;
|
||||||
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import androidx.annotation.ColorInt;
|
||||||
|
import androidx.annotation.ColorRes;
|
||||||
|
import androidx.annotation.DrawableRes;
|
||||||
|
|
||||||
|
import com.mogo.module.common.R;
|
||||||
|
|
||||||
|
@SuppressLint("AppCompatCustomView")
|
||||||
|
public class CustomCircleImageView extends ImageView {
|
||||||
|
|
||||||
|
private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP;
|
||||||
|
|
||||||
|
private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888;
|
||||||
|
private static final int COLORDRAWABLE_DIMENSION = 2;
|
||||||
|
|
||||||
|
private static final int DEFAULT_BORDER_WIDTH = 0;
|
||||||
|
private static final int DEFAULT_BORDER_COLOR = Color.BLACK;
|
||||||
|
private static final int DEFAULT_FILL_COLOR = Color.TRANSPARENT;
|
||||||
|
private static final boolean DEFAULT_BORDER_OVERLAY = false;
|
||||||
|
|
||||||
|
private final RectF mDrawableRect = new RectF();
|
||||||
|
private final RectF mBorderRect = new RectF();
|
||||||
|
|
||||||
|
private final Matrix mShaderMatrix = new Matrix();
|
||||||
|
private final Paint mBitmapPaint = new Paint();
|
||||||
|
private final Paint mBorderPaint = new Paint();
|
||||||
|
private final Paint mFillPaint = new Paint();
|
||||||
|
|
||||||
|
private int mBorderColor = DEFAULT_BORDER_COLOR;
|
||||||
|
private int mBorderWidth = DEFAULT_BORDER_WIDTH;
|
||||||
|
private int mFillColor = DEFAULT_FILL_COLOR;
|
||||||
|
|
||||||
|
private Bitmap mBitmap;
|
||||||
|
private BitmapShader mBitmapShader;
|
||||||
|
private int mBitmapWidth;
|
||||||
|
private int mBitmapHeight;
|
||||||
|
|
||||||
|
private float mDrawableRadius;
|
||||||
|
private float mBorderRadius;
|
||||||
|
|
||||||
|
private ColorFilter mColorFilter;
|
||||||
|
|
||||||
|
private boolean mReady;
|
||||||
|
private boolean mSetupPending;
|
||||||
|
private boolean mBorderOverlay;
|
||||||
|
|
||||||
|
public CustomCircleImageView( Context context) {
|
||||||
|
super(context);
|
||||||
|
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
public CustomCircleImageView( Context context, AttributeSet attrs) {
|
||||||
|
this(context, attrs, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CustomCircleImageView( Context context, AttributeSet attrs, int defStyle) {
|
||||||
|
super(context, attrs, defStyle);
|
||||||
|
|
||||||
|
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomCircleImageView, defStyle, 0);
|
||||||
|
|
||||||
|
mBorderWidth = a.getDimensionPixelSize(R.styleable.CustomCircleImageView_civ_border_width, DEFAULT_BORDER_WIDTH);
|
||||||
|
mBorderColor = a.getColor(R.styleable.CustomCircleImageView_civ_border_color, DEFAULT_BORDER_COLOR);
|
||||||
|
mBorderOverlay = a.getBoolean(R.styleable.CustomCircleImageView_civ_border_overlay, DEFAULT_BORDER_OVERLAY);
|
||||||
|
mFillColor = a.getColor(R.styleable.CustomCircleImageView_civ_fill_color, DEFAULT_FILL_COLOR);
|
||||||
|
|
||||||
|
a.recycle();
|
||||||
|
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init() {
|
||||||
|
super.setScaleType(SCALE_TYPE);
|
||||||
|
mReady = true;
|
||||||
|
|
||||||
|
if (mSetupPending) {
|
||||||
|
setup();
|
||||||
|
mSetupPending = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ScaleType getScaleType() {
|
||||||
|
return SCALE_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setScaleType(ScaleType scaleType) {
|
||||||
|
if (scaleType != SCALE_TYPE) {
|
||||||
|
throw new IllegalArgumentException(String.format("ScaleType %s not supported.", scaleType));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setAdjustViewBounds(boolean adjustViewBounds) {
|
||||||
|
if (adjustViewBounds) {
|
||||||
|
throw new IllegalArgumentException("adjustViewBounds not supported.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDraw(Canvas canvas) {
|
||||||
|
if (mBitmap == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mFillColor != Color.TRANSPARENT) {
|
||||||
|
canvas.drawCircle(getWidth() / 2.0f, getHeight() / 2.0f, mDrawableRadius, mFillPaint);
|
||||||
|
}
|
||||||
|
canvas.drawCircle(getWidth() / 2.0f, getHeight() / 2.0f, mDrawableRadius, mBitmapPaint);
|
||||||
|
if (mBorderWidth != 0) {
|
||||||
|
canvas.drawCircle(getWidth() / 2.0f, getHeight() / 2.0f, mBorderRadius, mBorderPaint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
||||||
|
super.onSizeChanged(w, h, oldw, oldh);
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBorderColor() {
|
||||||
|
return mBorderColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBorderColor(@ColorInt int borderColor) {
|
||||||
|
if (borderColor == mBorderColor) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mBorderColor = borderColor;
|
||||||
|
mBorderPaint.setColor(mBorderColor);
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBorderColorResource(@ColorRes int borderColorRes) {
|
||||||
|
setBorderColor(getContext().getResources().getColor(borderColorRes));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFillColor() {
|
||||||
|
return mFillColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFillColor(@ColorInt int fillColor) {
|
||||||
|
if (fillColor == mFillColor) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mFillColor = fillColor;
|
||||||
|
mFillPaint.setColor(fillColor);
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFillColorResource(@ColorRes int fillColorRes) {
|
||||||
|
setFillColor(getContext().getResources().getColor(fillColorRes));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBorderWidth() {
|
||||||
|
return mBorderWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBorderWidth(int borderWidth) {
|
||||||
|
if (borderWidth == mBorderWidth) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mBorderWidth = borderWidth;
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isBorderOverlay() {
|
||||||
|
return mBorderOverlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBorderOverlay(boolean borderOverlay) {
|
||||||
|
if (borderOverlay == mBorderOverlay) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mBorderOverlay = borderOverlay;
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setImageBitmap(Bitmap bm) {
|
||||||
|
super.setImageBitmap(bm);
|
||||||
|
mBitmap = bm;
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setImageDrawable(Drawable drawable) {
|
||||||
|
super.setImageDrawable(drawable);
|
||||||
|
mBitmap = getBitmapFromDrawable(drawable);
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setImageResource(@DrawableRes int resId) {
|
||||||
|
super.setImageResource(resId);
|
||||||
|
mBitmap = getBitmapFromDrawable(getDrawable());
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setImageURI(Uri uri) {
|
||||||
|
super.setImageURI(uri);
|
||||||
|
mBitmap = uri != null ? getBitmapFromDrawable(getDrawable()) : null;
|
||||||
|
setup();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setColorFilter(ColorFilter cf) {
|
||||||
|
if (cf == mColorFilter) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mColorFilter = cf;
|
||||||
|
mBitmapPaint.setColorFilter(mColorFilter);
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Bitmap getBitmapFromDrawable(Drawable drawable) {
|
||||||
|
if (drawable == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (drawable instanceof BitmapDrawable) {
|
||||||
|
return ((BitmapDrawable) drawable).getBitmap();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Bitmap bitmap;
|
||||||
|
|
||||||
|
if (drawable instanceof ColorDrawable) {
|
||||||
|
bitmap = Bitmap.createBitmap(COLORDRAWABLE_DIMENSION, COLORDRAWABLE_DIMENSION, BITMAP_CONFIG);
|
||||||
|
} else {
|
||||||
|
bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), BITMAP_CONFIG);
|
||||||
|
}
|
||||||
|
|
||||||
|
Canvas canvas = new Canvas(bitmap);
|
||||||
|
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
|
||||||
|
drawable.draw(canvas);
|
||||||
|
return bitmap;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setup() {
|
||||||
|
if (!mReady) {
|
||||||
|
mSetupPending = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getWidth() == 0 && getHeight() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mBitmap == null) {
|
||||||
|
invalidate();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
|
||||||
|
|
||||||
|
mBitmapPaint.setAntiAlias(true);
|
||||||
|
mBitmapPaint.setShader(mBitmapShader);
|
||||||
|
|
||||||
|
mBorderPaint.setStyle(Paint.Style.STROKE);
|
||||||
|
mBorderPaint.setAntiAlias(true);
|
||||||
|
mBorderPaint.setColor(mBorderColor);
|
||||||
|
mBorderPaint.setStrokeWidth(mBorderWidth);
|
||||||
|
|
||||||
|
mFillPaint.setStyle(Paint.Style.FILL);
|
||||||
|
mFillPaint.setAntiAlias(true);
|
||||||
|
mFillPaint.setColor(mFillColor);
|
||||||
|
|
||||||
|
mBitmapHeight = mBitmap.getHeight();
|
||||||
|
mBitmapWidth = mBitmap.getWidth();
|
||||||
|
|
||||||
|
mBorderRect.set(0, 0, getWidth(), getHeight());
|
||||||
|
mBorderRadius = Math.min((mBorderRect.height() - mBorderWidth) / 2.0f, (mBorderRect.width() - mBorderWidth) / 2.0f);
|
||||||
|
|
||||||
|
mDrawableRect.set(mBorderRect);
|
||||||
|
if (!mBorderOverlay) {
|
||||||
|
mDrawableRect.inset(mBorderWidth, mBorderWidth);
|
||||||
|
}
|
||||||
|
mDrawableRadius = Math.min(mDrawableRect.height() / 2.0f, mDrawableRect.width() / 2.0f);
|
||||||
|
|
||||||
|
updateShaderMatrix();
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateShaderMatrix() {
|
||||||
|
float scale;
|
||||||
|
float dx = 0;
|
||||||
|
float dy = 0;
|
||||||
|
|
||||||
|
mShaderMatrix.set(null);
|
||||||
|
|
||||||
|
if (mBitmapWidth * mDrawableRect.height() > mDrawableRect.width() * mBitmapHeight) {
|
||||||
|
scale = mDrawableRect.height() / (float) mBitmapHeight;
|
||||||
|
dx = (mDrawableRect.width() - mBitmapWidth * scale) * 0.5f;
|
||||||
|
} else {
|
||||||
|
scale = mDrawableRect.width() / (float) mBitmapWidth;
|
||||||
|
dy = (mDrawableRect.height() - mBitmapHeight * scale) * 0.5f;
|
||||||
|
}
|
||||||
|
|
||||||
|
mShaderMatrix.setScale(scale, scale);
|
||||||
|
mShaderMatrix.postTranslate((int) (dx + 0.5f) + mDrawableRect.left, (int) (dy + 0.5f) + mDrawableRect.top);
|
||||||
|
|
||||||
|
mBitmapShader.setLocalMatrix(mShaderMatrix);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -33,6 +33,6 @@ interface IWindowManagerView {
|
|||||||
void hide();
|
void hide();
|
||||||
|
|
||||||
interface OnViewClickListener {
|
interface OnViewClickListener {
|
||||||
void onClick( View view );
|
void onClick( View view, float xPos, float yPos );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,10 @@ class WindowManagerImpl implements IWindowManagerView {
|
|||||||
// 只要按钮一动位置不是很大,就认为是点击事件
|
// 只要按钮一动位置不是很大,就认为是点击事件
|
||||||
if ( Math.abs( mOldOffsetX - newOffsetX ) <= 20
|
if ( Math.abs( mOldOffsetX - newOffsetX ) <= 20
|
||||||
&& Math.abs( mOldOffsetY - newOffsetY ) <= 20 ) {
|
&& Math.abs( mOldOffsetY - newOffsetY ) <= 20 ) {
|
||||||
listener.onClick( mParams.mContentView );
|
if ( listener != null ) {
|
||||||
|
listener.onClick( mParams.mContentView, x, y );
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
mOldOffsetX = newOffsetX;
|
mOldOffsetX = newOffsetX;
|
||||||
mOldOffsetY = newOffsetY;
|
mOldOffsetY = newOffsetY;
|
||||||
|
|||||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
@@ -6,4 +6,11 @@
|
|||||||
<enum name="vertical" value="1" />
|
<enum name="vertical" value="1" />
|
||||||
</attr>
|
</attr>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
|
<declare-styleable name="CustomCircleImageView">
|
||||||
|
<attr format="dimension" name="civ_border_width"/>
|
||||||
|
<attr format="color" name="civ_border_color"/>
|
||||||
|
<attr format="boolean" name="civ_border_overlay"/>
|
||||||
|
<attr format="color" name="civ_fill_color"/>
|
||||||
|
</declare-styleable>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -8,6 +8,7 @@ import androidx.lifecycle.LifecycleOwner;
|
|||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
import com.alibaba.android.arouter.launcher.ARouter;
|
||||||
import com.mogo.commons.mvp.Presenter;
|
import com.mogo.commons.mvp.Presenter;
|
||||||
import com.mogo.commons.network.Utils;
|
import com.mogo.commons.network.Utils;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.extensions.net.UserInfoNetApiServices;
|
import com.mogo.module.extensions.net.UserInfoNetApiServices;
|
||||||
import com.mogo.module.extensions.userinfo.UserInfo;
|
import com.mogo.module.extensions.userinfo.UserInfo;
|
||||||
import com.mogo.module.extensions.userinfo.UserInfoConstant;
|
import com.mogo.module.extensions.userinfo.UserInfoConstant;
|
||||||
@@ -53,8 +54,7 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
|
|||||||
public ExtensionsPresenter( ExtensionsView view ) {
|
public ExtensionsPresenter( ExtensionsView view ) {
|
||||||
super( view );
|
super( view );
|
||||||
mWeatherModel = new WeatherModel( getContext() );
|
mWeatherModel = new WeatherModel( getContext() );
|
||||||
mNetWork =
|
mNetWork = MogoApisHandler.getInstance().getApis().getNetworkApi();
|
||||||
((IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(view.getContext())).getNetworkApi();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import com.mogo.map.navi.MogoNaviInfo;
|
|||||||
import com.mogo.map.navi.MogoTraffic;
|
import com.mogo.map.navi.MogoTraffic;
|
||||||
import com.mogo.map.uicontroller.EnumMapUI;
|
import com.mogo.map.uicontroller.EnumMapUI;
|
||||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.common.dialog.WMDialog;
|
import com.mogo.module.common.dialog.WMDialog;
|
||||||
import com.mogo.module.common.glide.SkinAbleBitmapTarget;
|
import com.mogo.module.common.glide.SkinAbleBitmapTarget;
|
||||||
import com.mogo.module.common.map.CustomNaviInterrupter;
|
import com.mogo.module.common.map.CustomNaviInterrupter;
|
||||||
@@ -45,7 +46,6 @@ import com.mogo.module.extensions.utils.EntranceViewHolder;
|
|||||||
import com.mogo.module.extensions.utils.TopViewAnimHelper;
|
import com.mogo.module.extensions.utils.TopViewAnimHelper;
|
||||||
import com.mogo.module.share.manager.ServiceApisManager;
|
import com.mogo.module.share.manager.ServiceApisManager;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.service.analytics.IMogoAnalytics;
|
import com.mogo.service.analytics.IMogoAnalytics;
|
||||||
import com.mogo.service.entrance.ButtonIndex;
|
import com.mogo.service.entrance.ButtonIndex;
|
||||||
import com.mogo.service.fragmentmanager.IFragmentProvider;
|
import com.mogo.service.fragmentmanager.IFragmentProvider;
|
||||||
@@ -135,6 +135,8 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
|||||||
|
|
||||||
private boolean toggle = false;
|
private boolean toggle = false;
|
||||||
|
|
||||||
|
private View mOnlineCarEntrance;
|
||||||
|
|
||||||
private Runnable mLockCarRunnable = new Runnable() {
|
private Runnable mLockCarRunnable = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -155,7 +157,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initViews() {
|
protected void initViews() {
|
||||||
mApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(getContext());
|
mApis = MogoApisHandler.getInstance().getApis();
|
||||||
|
|
||||||
mEntrancePresenter = new EntrancePresenter(getContext(), this);
|
mEntrancePresenter = new EntrancePresenter(getContext(), this);
|
||||||
mMogoFragmentManager = mApis.getFragmentManagerApi();
|
mMogoFragmentManager = mApis.getFragmentManagerApi();
|
||||||
@@ -317,6 +319,14 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
|||||||
mUploadButtonAnimatorController = new UploadButtonAnimatorController(mUploading, mUpload,
|
mUploadButtonAnimatorController = new UploadButtonAnimatorController(mUploading, mUpload,
|
||||||
mStatusManager);
|
mStatusManager);
|
||||||
|
|
||||||
|
mOnlineCarEntrance = findViewById( R.id.module_ext_id_destination_online_car );
|
||||||
|
mOnlineCarEntrance.setOnClickListener( view -> {
|
||||||
|
MogoApisHandler.getInstance().getApis().getOnlineCarPanelApi().showPanel();
|
||||||
|
Map<String, Object> properties = new HashMap<>();
|
||||||
|
properties.put( "type", 1 );
|
||||||
|
MogoApisHandler.getInstance().getApis().getAnalyticsApi().track( "APP_Find_Mogoer", properties );
|
||||||
|
} );
|
||||||
|
|
||||||
dealWeatherContainer();
|
dealWeatherContainer();
|
||||||
|
|
||||||
debugTopView();
|
debugTopView();
|
||||||
@@ -429,6 +439,11 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
|||||||
mCameraMode.setVisibility(View.VISIBLE);
|
mCameraMode.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
mApis.getAnalyticsApi().track("Navigation_begin", new HashMap<>());
|
mApis.getAnalyticsApi().track("Navigation_begin", new HashMap<>());
|
||||||
|
if ( DebugConfig.isSupportedSearchDestinationOnlineCarList() ) {
|
||||||
|
mOnlineCarEntrance.setVisibility( View.VISIBLE );
|
||||||
|
} else {
|
||||||
|
mOnlineCarEntrance.setVisibility( View.GONE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -438,6 +453,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
|||||||
mMApUIController.changeMapMode(EnumMapUI.NorthUP_2D);
|
mMApUIController.changeMapMode(EnumMapUI.NorthUP_2D);
|
||||||
mDisplayOverview.setVisibility(View.GONE);
|
mDisplayOverview.setVisibility(View.GONE);
|
||||||
mCameraMode.setVisibility(View.GONE);
|
mCameraMode.setVisibility(View.GONE);
|
||||||
|
mOnlineCarEntrance.setVisibility( View.GONE );
|
||||||
MapCenterPointStrategy.setMapCenterPointByScene(mMApUIController, Scene.AIMLESS);
|
MapCenterPointStrategy.setMapCenterPointByScene(mMApUIController, Scene.AIMLESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import androidx.lifecycle.LifecycleOwner;
|
|||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
import com.alibaba.android.arouter.launcher.ARouter;
|
||||||
import com.mogo.commons.mvp.Presenter;
|
import com.mogo.commons.mvp.Presenter;
|
||||||
import com.mogo.commons.network.Utils;
|
import com.mogo.commons.network.Utils;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.extensions.R;
|
import com.mogo.module.extensions.R;
|
||||||
import com.mogo.module.extensions.net.UserInfoNetApiServices;
|
import com.mogo.module.extensions.net.UserInfoNetApiServices;
|
||||||
import com.mogo.module.extensions.userinfo.UserInfo;
|
import com.mogo.module.extensions.userinfo.UserInfo;
|
||||||
@@ -55,8 +56,7 @@ public class EntrancePresenter extends Presenter<EntranceView> implements Weathe
|
|||||||
public EntrancePresenter(Context context, EntranceView view) {
|
public EntrancePresenter(Context context, EntranceView view) {
|
||||||
super(view);
|
super(view);
|
||||||
mWeatherModel = new WeatherModel( getContext() );
|
mWeatherModel = new WeatherModel( getContext() );
|
||||||
mNetWork =
|
mNetWork = MogoApisHandler.getInstance().getApis().getNetworkApi();
|
||||||
((IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(view.getContext())).getNetworkApi();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
@@ -36,6 +36,30 @@
|
|||||||
app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop"
|
app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_ext_id_destination_online_car"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="@dimen/module_ext_button_height"
|
||||||
|
android:layout_marginTop="@dimen/module_ext_camera_button_marginTop"
|
||||||
|
android:background="@drawable/module_ext_dw_navi_info_panel_bkg"
|
||||||
|
android:drawableLeft="@drawable/module_ext_destination_online_car_dw"
|
||||||
|
android:gravity="center"
|
||||||
|
android:drawablePadding="@dimen/module_ext_destination_online_car_drawablePadding"
|
||||||
|
android:paddingTop="@dimen/dp_14"
|
||||||
|
android:text="@string/module_ext_destination_online_car_text"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:layout_marginLeft="@dimen/module_common_shadow_width_pos"
|
||||||
|
android:textColor="@color/module_ext_color_voice_text"
|
||||||
|
android:textSize="@dimen/module_ext_north_textSize"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingRight="@dimen/module_ext_destination_online_car_paddingRight"
|
||||||
|
android:paddingLeft="@dimen/module_ext_destination_online_car_paddingLeft"
|
||||||
|
app:layout_constraintLeft_toLeftOf="@+id/module_map_id_navi_bg"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"
|
||||||
|
app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
<com.mogo.module.extensions.navi.TopView
|
<com.mogo.module.extensions.navi.TopView
|
||||||
android:id="@+id/module_entrance_id_top_container"
|
android:id="@+id/module_entrance_id_top_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -58,7 +82,7 @@
|
|||||||
android:layout_marginLeft="@dimen/module_common_shadow_width_pos"
|
android:layout_marginLeft="@dimen/module_common_shadow_width_pos"
|
||||||
app:layout_constraintLeft_toLeftOf="@+id/module_map_id_navi_bg"
|
app:layout_constraintLeft_toLeftOf="@+id/module_map_id_navi_bg"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"
|
app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"
|
||||||
tools:visibility="visible">
|
tools:visibility="gone">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/module_ext_id_display_overview_icon"
|
android:id="@+id/module_ext_id_display_overview_icon"
|
||||||
|
|||||||
@@ -5,4 +5,7 @@
|
|||||||
<dimen name="module_ext_layout_padding">10px</dimen>
|
<dimen name="module_ext_layout_padding">10px</dimen>
|
||||||
<dimen name="module_ext_layout_paddingRight">2px</dimen>
|
<dimen name="module_ext_layout_paddingRight">2px</dimen>
|
||||||
<dimen name="module_ext_layout_paddingBottom">2px</dimen>
|
<dimen name="module_ext_layout_paddingBottom">2px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_drawablePadding">4px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_paddingLeft">14px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_paddingRight">14px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -150,4 +150,7 @@
|
|||||||
<dimen name="module_ext_layout_padding">30px</dimen>
|
<dimen name="module_ext_layout_padding">30px</dimen>
|
||||||
<dimen name="module_ext_layout_paddingRight">20px</dimen>
|
<dimen name="module_ext_layout_paddingRight">20px</dimen>
|
||||||
<dimen name="module_ext_layout_paddingBottom">20px</dimen>
|
<dimen name="module_ext_layout_paddingBottom">20px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_drawablePadding">8px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_paddingLeft">21px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_paddingRight">31px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -152,4 +152,7 @@
|
|||||||
<dimen name="module_ext_layout_padding">30px</dimen>
|
<dimen name="module_ext_layout_padding">30px</dimen>
|
||||||
<dimen name="module_ext_layout_paddingRight">20px</dimen>
|
<dimen name="module_ext_layout_paddingRight">20px</dimen>
|
||||||
<dimen name="module_ext_layout_paddingBottom">20px</dimen>
|
<dimen name="module_ext_layout_paddingBottom">20px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_drawablePadding">8px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_paddingLeft">21px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_paddingRight">31px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -157,4 +157,7 @@
|
|||||||
<dimen name="module_ext_layout_padding">10px</dimen>
|
<dimen name="module_ext_layout_padding">10px</dimen>
|
||||||
<dimen name="module_ext_layout_paddingRight">2px</dimen>
|
<dimen name="module_ext_layout_paddingRight">2px</dimen>
|
||||||
<dimen name="module_ext_layout_paddingBottom">2px</dimen>
|
<dimen name="module_ext_layout_paddingBottom">2px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_drawablePadding">4px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_paddingLeft">14px</dimen>
|
||||||
|
<dimen name="module_ext_destination_online_car_paddingRight">14px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
<string name="module_ext_str_exit_path">退出全览</string>
|
<string name="module_ext_str_exit_path">退出全览</string>
|
||||||
<string name="mode_car_up">车头</string>
|
<string name="mode_car_up">车头</string>
|
||||||
<string name="mode_north_up">正北</string>
|
<string name="mode_north_up">正北</string>
|
||||||
|
<string name="module_ext_destination_online_car_text">目的地车友</string>
|
||||||
|
|
||||||
<string-array name="module_ext_str_arr_ai_tips">
|
<string-array name="module_ext_str_arr_ai_tips">
|
||||||
<item>你好小智,播放音乐</item>
|
<item>你好小智,播放音乐</item>
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import com.mogo.map.marker.IMogoMarker;
|
|||||||
import com.mogo.map.marker.IMogoMarkerClickListener;
|
import com.mogo.map.marker.IMogoMarkerClickListener;
|
||||||
import com.mogo.map.uicontroller.EnumMapUI;
|
import com.mogo.map.uicontroller.EnumMapUI;
|
||||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.common.map.MapCenterPointStrategy;
|
import com.mogo.module.common.map.MapCenterPointStrategy;
|
||||||
import com.mogo.module.common.map.Scene;
|
import com.mogo.module.common.map.Scene;
|
||||||
import com.mogo.module.main.cards.MogoModulesManager;
|
import com.mogo.module.main.cards.MogoModulesManager;
|
||||||
@@ -135,7 +136,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
|
|||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
if ( mServiceApis == null ) {
|
if ( mServiceApis == null ) {
|
||||||
mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation();
|
mServiceApis = MogoApisHandler.getInstance().getApis();
|
||||||
}
|
}
|
||||||
mServiceApis.getShareManager().resetContext( this );
|
mServiceApis.getShareManager().resetContext( this );
|
||||||
mServiceApis.getAuthManagerApi().showAuth( this );
|
mServiceApis.getAuthManagerApi().showAuth( this );
|
||||||
@@ -189,6 +190,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
|
|||||||
mMogoFragmentManager = mServiceApis.getFragmentManagerApi();
|
mMogoFragmentManager = mServiceApis.getFragmentManagerApi();
|
||||||
mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment );
|
mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment );
|
||||||
mMogoFragmentManager.initMessageHistoryContainerId( R.id.module_main_id_message_history_fragment_container );
|
mMogoFragmentManager.initMessageHistoryContainerId( R.id.module_main_id_message_history_fragment_container );
|
||||||
|
mServiceApis.getOnlineCarPanelApi().initContainer( R.id.module_main_id_message_history_fragment_container, this );
|
||||||
mMogoFragmentManager.registerMainFragmentStackTransactionListener( ( size ) -> {
|
mMogoFragmentManager.registerMainFragmentStackTransactionListener( ( size ) -> {
|
||||||
if ( size == 0 ) {
|
if ( size == 0 ) {
|
||||||
showLayout();
|
showLayout();
|
||||||
@@ -332,7 +334,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
|
|||||||
@Override
|
@Override
|
||||||
public IMogoServiceApis getApis() {
|
public IMogoServiceApis getApis() {
|
||||||
if ( mServiceApis == null ) {
|
if ( mServiceApis == null ) {
|
||||||
mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation();
|
mServiceApis = MogoApisHandler.getInstance().getApis();
|
||||||
}
|
}
|
||||||
return mServiceApis;
|
return mServiceApis;
|
||||||
}
|
}
|
||||||
@@ -350,5 +352,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
|
|||||||
Logger.d( TAG, "destroy." );
|
Logger.d( TAG, "destroy." );
|
||||||
mServiceApis.getRefreshStrategyControllerApi().clearAllData();
|
mServiceApis.getRefreshStrategyControllerApi().clearAllData();
|
||||||
AIAssist.getInstance( this ).release();
|
AIAssist.getInstance( this ).release();
|
||||||
|
mServiceApis.getOnlineCarPanelApi().clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ public class SchemeIntent implements IMogoStatusChangedListener {
|
|||||||
|
|
||||||
public static final String TYPE_LAUNCH = "launch";
|
public static final String TYPE_LAUNCH = "launch";
|
||||||
|
|
||||||
|
public static final String TYPE_SHOW_ONLINE_CAR_PANEL = "showOnlineCarPanel";
|
||||||
|
|
||||||
private IMogoServiceApis mApis;
|
private IMogoServiceApis mApis;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
@@ -125,21 +127,23 @@ public class SchemeIntent implements IMogoStatusChangedListener {
|
|||||||
handleLaunchIntent( target );
|
handleLaunchIntent( target );
|
||||||
break;
|
break;
|
||||||
case TYPE_SEARCH_ROAD_CONDITION:
|
case TYPE_SEARCH_ROAD_CONDITION:
|
||||||
handleSearchRoadCondition(target);
|
handleSearchRoadCondition( target );
|
||||||
break;
|
break;
|
||||||
|
case TYPE_SHOW_ONLINE_CAR_PANEL:
|
||||||
|
handleShowOnlineCarPanel( target );
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleSearchRoadCondition(Uri target) {
|
private void handleSearchRoadCondition( Uri target ) {
|
||||||
if (mApis == null) {
|
if ( mApis == null ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mApis.getTanluUiApi().searchRoadCondition(target.getQueryParameter("intentStr"),
|
mApis.getTanluUiApi().searchRoadCondition( target.getQueryParameter( "intentStr" ),
|
||||||
target.getQueryParameter("data"), target.getQueryParameter("city"),
|
target.getQueryParameter( "data" ), target.getQueryParameter( "city" ),
|
||||||
target.getQueryParameter("keywords"));
|
target.getQueryParameter( "keywords" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleSwitchCardIntent( String type ) {
|
private void handleSwitchCardIntent( String type ) {
|
||||||
@@ -153,8 +157,6 @@ public class SchemeIntent implements IMogoStatusChangedListener {
|
|||||||
String lon = naviUri.getQueryParameter( "lon" );
|
String lon = naviUri.getQueryParameter( "lon" );
|
||||||
String lat = naviUri.getQueryParameter( "lat" );
|
String lat = naviUri.getQueryParameter( "lat" );
|
||||||
|
|
||||||
// TODO: 2020-04-20 补充场景
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
double dlon = Double.valueOf( lon );
|
double dlon = Double.valueOf( lon );
|
||||||
double dlat = Double.valueOf( lat );
|
double dlat = Double.valueOf( lat );
|
||||||
@@ -178,6 +180,10 @@ public class SchemeIntent implements IMogoStatusChangedListener {
|
|||||||
mApis.getAnalyticsApi().track( "appenterfront", properties );
|
mApis.getAnalyticsApi().track( "appenterfront", properties );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void handleShowOnlineCarPanel( Uri uri ) {
|
||||||
|
mApis.getOnlineCarPanelApi().showPanel();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
|
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
|
||||||
if ( descriptor == StatusDescriptor.MAIN_PAGE_RESUME ) {
|
if ( descriptor == StatusDescriptor.MAIN_PAGE_RESUME ) {
|
||||||
|
|||||||
@@ -7,15 +7,14 @@ import android.os.IBinder;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
|
||||||
import com.mogo.commons.AbsMogoApplication;
|
import com.mogo.commons.AbsMogoApplication;
|
||||||
import com.mogo.map.location.IMogoLocationClient;
|
import com.mogo.map.location.IMogoLocationClient;
|
||||||
import com.mogo.map.location.IMogoLocationListener;
|
import com.mogo.map.location.IMogoLocationListener;
|
||||||
import com.mogo.map.location.MogoLocation;
|
import com.mogo.map.location.MogoLocation;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.main.EventDispatchCenter;
|
import com.mogo.module.main.EventDispatchCenter;
|
||||||
import com.mogo.module.main.cards.MogoModulesManager;
|
import com.mogo.module.main.cards.MogoModulesManager;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.utils.UiThreadHandler;
|
import com.mogo.utils.UiThreadHandler;
|
||||||
import com.mogo.utils.logger.Logger;
|
import com.mogo.utils.logger.Logger;
|
||||||
|
|
||||||
@@ -26,7 +25,7 @@ public
|
|||||||
*
|
*
|
||||||
* 描述
|
* 描述
|
||||||
*/
|
*/
|
||||||
@Route(path = "/service/base/info")
|
@Route( path = "/service/base/info" )
|
||||||
class MogoMainService extends Service implements IMogoLocationListener {
|
class MogoMainService extends Service implements IMogoLocationListener {
|
||||||
|
|
||||||
private static final String TAG = "MogoMainService";
|
private static final String TAG = "MogoMainService";
|
||||||
@@ -39,10 +38,10 @@ class MogoMainService extends Service implements IMogoLocationListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
Logger.d(TAG, "基本服务启动");
|
Logger.d( TAG, "基本服务启动" );
|
||||||
mServiceApis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation();
|
mServiceApis = MogoApisHandler.getInstance().getApis();
|
||||||
initAndStartLocation();
|
initAndStartLocation();
|
||||||
UiThreadHandler.postDelayed(() -> {
|
UiThreadHandler.postDelayed( () -> {
|
||||||
loadBaseModules();
|
loadBaseModules();
|
||||||
startTanluService();
|
startTanluService();
|
||||||
initADAS();
|
initADAS();
|
||||||
@@ -53,53 +52,53 @@ class MogoMainService extends Service implements IMogoLocationListener {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public IBinder onBind(Intent intent) {
|
public IBinder onBind( Intent intent ) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
public int onStartCommand( Intent intent, int flags, int startId ) {
|
||||||
return START_STICKY;
|
return START_STICKY;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initAndStartLocation() {
|
private void initAndStartLocation() {
|
||||||
Logger.d(TAG, "开始定位");
|
Logger.d( TAG, "开始定位" );
|
||||||
mLocationClient = mServiceApis.getMapServiceApi().getSingletonLocationClient(AbsMogoApplication.getApp());
|
mLocationClient = mServiceApis.getMapServiceApi().getSingletonLocationClient( AbsMogoApplication.getApp() );
|
||||||
mLocationClient.addLocationListener(this);
|
mLocationClient.addLocationListener( this );
|
||||||
mLocationClient.start(2_000L);
|
mLocationClient.start( 2_000L );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initGpsSimulatorListener() {
|
private void initGpsSimulatorListener() {
|
||||||
mServiceApis.getMapServiceApi().getNavi(this).registerCarLocationChangedListener(EventDispatchCenter.getInstance());
|
mServiceApis.getMapServiceApi().getNavi( this ).registerCarLocationChangedListener( EventDispatchCenter.getInstance() );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadBaseModules() {
|
private void loadBaseModules() {
|
||||||
Logger.d(TAG, "加载基本模块");
|
Logger.d( TAG, "加载基本模块" );
|
||||||
MogoModulesManager.getInstance().loadBaseModule();
|
MogoModulesManager.getInstance().loadBaseModule();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startTanluService() {
|
private void startTanluService() {
|
||||||
UiThreadHandler.postDelayed(() -> {
|
UiThreadHandler.postDelayed( () -> {
|
||||||
Logger.d(TAG, "startTanluService ---------- ");
|
Logger.d( TAG, "startTanluService ---------- " );
|
||||||
mServiceApis.getTanluApi().startTanluService();
|
mServiceApis.getTanluApi().startTanluService();
|
||||||
}, 2_000L
|
}, 2_000L
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initADAS() {
|
private void initADAS() {
|
||||||
mServiceApis.getAdasControllerApi().init(AbsMogoApplication.getApp());
|
mServiceApis.getAdasControllerApi().init( AbsMogoApplication.getApp() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLocationChanged(MogoLocation location) {
|
public void onLocationChanged( MogoLocation location ) {
|
||||||
EventDispatchCenter.getInstance().onLocationChanged(location);
|
EventDispatchCenter.getInstance().onLocationChanged( location );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
if (mLocationClient != null) {
|
if ( mLocationClient != null ) {
|
||||||
mLocationClient.removeLocationListener(this);
|
mLocationClient.removeLocationListener( this );
|
||||||
mLocationClient.stop();
|
mLocationClient.stop();
|
||||||
mLocationClient.destroy();
|
mLocationClient.destroy();
|
||||||
mLocationClient = null;
|
mLocationClient = null;
|
||||||
|
|||||||
@@ -26,6 +26,6 @@
|
|||||||
<dimen name="module_main_entrance_fragment_container_padding_top">16px</dimen>
|
<dimen name="module_main_entrance_fragment_container_padding_top">16px</dimen>
|
||||||
<dimen name="module_main_entrance_fragment_container_width">658px</dimen>
|
<dimen name="module_main_entrance_fragment_container_width">658px</dimen>
|
||||||
<dimen name="module_event_fragment_container_padding">8px</dimen>
|
<dimen name="module_event_fragment_container_padding">8px</dimen>
|
||||||
<dimen name="module_main_apps_fragment_container_paddingTop">10px</dimen>
|
<dimen name="module_main_apps_fragment_container_paddingTop">2px</dimen>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -4,11 +4,10 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
|
||||||
import com.mogo.map.navi.MogoNaviInfo;
|
import com.mogo.map.navi.MogoNaviInfo;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.common.map.CustomNaviInterrupter;
|
import com.mogo.module.common.map.CustomNaviInterrupter;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
||||||
import com.mogo.service.statusmanager.StatusDescriptor;
|
import com.mogo.service.statusmanager.StatusDescriptor;
|
||||||
import com.mogo.utils.AppUtils;
|
import com.mogo.utils.AppUtils;
|
||||||
@@ -31,7 +30,7 @@ public class MapBroadCastHelper implements IMogoStatusChangedListener {
|
|||||||
|
|
||||||
private MapBroadCastHelper( Context context ) {
|
private MapBroadCastHelper( Context context ) {
|
||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
IMogoServiceApis api = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context );
|
IMogoServiceApis api = MogoApisHandler.getInstance().getApis();
|
||||||
api.getStatusManagerApi().registerStatusChangedListener( TAG, StatusDescriptor.AI_ASSIST_READY, this );
|
api.getStatusManagerApi().registerStatusChangedListener( TAG, StatusDescriptor.AI_ASSIST_READY, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import android.text.TextUtils;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
|
||||||
import com.mogo.commons.mvp.Presenter;
|
import com.mogo.commons.mvp.Presenter;
|
||||||
import com.mogo.commons.voice.AIAssist;
|
import com.mogo.commons.voice.AIAssist;
|
||||||
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
|
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
|
||||||
@@ -21,9 +20,9 @@ import com.mogo.map.navi.MogoNaviConfig;
|
|||||||
import com.mogo.map.navi.MogoNaviInfo;
|
import com.mogo.map.navi.MogoNaviInfo;
|
||||||
import com.mogo.map.uicontroller.EnumMapUI;
|
import com.mogo.map.uicontroller.EnumMapUI;
|
||||||
import com.mogo.map.uicontroller.MapControlResult;
|
import com.mogo.map.uicontroller.MapControlResult;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.common.map.CustomNaviInterrupter;
|
import com.mogo.module.common.map.CustomNaviInterrupter;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
|
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
|
||||||
import com.mogo.service.intent.IMogoIntentListener;
|
import com.mogo.service.intent.IMogoIntentListener;
|
||||||
import com.mogo.service.intent.IMogoIntentManager;
|
import com.mogo.service.intent.IMogoIntentManager;
|
||||||
@@ -248,7 +247,7 @@ public class MapPresenter extends Presenter< MapView > implements
|
|||||||
public void onCreate( @NonNull LifecycleOwner owner ) {
|
public void onCreate( @NonNull LifecycleOwner owner ) {
|
||||||
super.onCreate( owner );
|
super.onCreate( owner );
|
||||||
|
|
||||||
mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() );
|
mApis = MogoApisHandler.getInstance().getApis();
|
||||||
mMogoMapService = mApis.getMapServiceApi();
|
mMogoMapService = mApis.getMapServiceApi();
|
||||||
mMogoIntentManager = mApis.getIntentManagerApi();
|
mMogoIntentManager = mApis.getIntentManagerApi();
|
||||||
mSearchManager = mApis.getSearchManagerApi();
|
mSearchManager = mApis.getSearchManagerApi();
|
||||||
|
|||||||
@@ -5,13 +5,12 @@ import android.os.Handler;
|
|||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.media.MediaConstants;
|
import com.mogo.module.media.MediaConstants;
|
||||||
import com.mogo.module.media.constants.MusicConstant;
|
import com.mogo.module.media.constants.MusicConstant;
|
||||||
import com.mogo.module.media.model.MediaInfoData;
|
import com.mogo.module.media.model.MediaInfoData;
|
||||||
import com.mogo.module.media.view.IMusicView;
|
import com.mogo.module.media.view.IMusicView;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
||||||
import com.mogo.service.statusmanager.StatusDescriptor;
|
import com.mogo.service.statusmanager.StatusDescriptor;
|
||||||
|
|
||||||
@@ -108,8 +107,7 @@ public class KwPresenter extends BaseMediaPresenter<IMusicView> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
IMogoServiceApis serviceApis =
|
IMogoServiceApis serviceApis = MogoApisHandler.getInstance().getApis();
|
||||||
(IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
|
|
||||||
|
|
||||||
serviceApis.getStatusManagerApi().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
|
serviceApis.getStatusManagerApi().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -2,16 +2,12 @@ package com.mogo.module.media.presenter;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
|
||||||
|
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
|
||||||
import com.mogo.module.media.MediaConstants;
|
import com.mogo.module.media.MediaConstants;
|
||||||
import com.mogo.module.media.constants.MusicConstant;
|
import com.mogo.module.media.constants.MusicConstant;
|
||||||
import com.mogo.module.media.model.MediaInfoData;
|
import com.mogo.module.media.model.MediaInfoData;
|
||||||
import com.mogo.module.media.view.IMusicView;
|
import com.mogo.module.media.view.IMusicView;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
||||||
import com.mogo.service.statusmanager.StatusDescriptor;
|
import com.mogo.service.statusmanager.StatusDescriptor;
|
||||||
import com.mogo.utils.logger.Logger;
|
import com.mogo.utils.logger.Logger;
|
||||||
@@ -77,8 +73,7 @@ public class WeCarFlowPresenter extends BaseMediaPresenter<IMusicView> {
|
|||||||
this.context = context;
|
this.context = context;
|
||||||
currentMedia = new MediaInfoData();
|
currentMedia = new MediaInfoData();
|
||||||
|
|
||||||
serviceApis =
|
serviceApis = MogoApisHandler.getInstance().getApis();
|
||||||
(IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
|
|
||||||
|
|
||||||
serviceApis.getStatusManagerApi().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
|
serviceApis.getStatusManagerApi().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.MAIN_PAGE_RESUME, new IMogoStatusChangedListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -8,10 +8,9 @@ import android.os.Message;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
|
||||||
import com.mogo.commons.debug.DebugConfig;
|
import com.mogo.commons.debug.DebugConfig;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.service.connection.IMogoOnMessageListener;
|
import com.mogo.service.connection.IMogoOnMessageListener;
|
||||||
import com.mogo.service.monitor.IMogoMonitorProvider;
|
import com.mogo.service.monitor.IMogoMonitorProvider;
|
||||||
import com.mogo.utils.logger.LogLevel;
|
import com.mogo.utils.logger.LogLevel;
|
||||||
@@ -49,8 +48,7 @@ public class MogoMonitorProvider implements IMogoMonitorProvider,
|
|||||||
@Override
|
@Override
|
||||||
public void init(Context context) {
|
public void init(Context context) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
IMogoServiceApis apis =
|
IMogoServiceApis apis = MogoApisHandler.getInstance().getApis();
|
||||||
(IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
|
|
||||||
apis.getSocketManagerApi(context).registerOnMessageListener(MogoMonitorConst.LOG_PUSH_TYPE, this);
|
apis.getSocketManagerApi(context).registerOnMessageListener(MogoMonitorConst.LOG_PUSH_TYPE, this);
|
||||||
startRemoteCtrl();
|
startRemoteCtrl();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class PushHistoryUiProvider implements IFragmentProvider {
|
|||||||
Fragment fragment = new MessageHistoryFragment();
|
Fragment fragment = new MessageHistoryFragment();
|
||||||
activity.getSupportFragmentManager()
|
activity.getSupportFragmentManager()
|
||||||
.beginTransaction()
|
.beginTransaction()
|
||||||
.add( containerId, fragment, PushUIConstants.Push_MESSAGE_ACTIVITY_PATH )
|
.replace( containerId, fragment, PushUIConstants.Push_MESSAGE_ACTIVITY_PATH )
|
||||||
.show( fragment )
|
.show( fragment )
|
||||||
.commitNowAllowingStateLoss();
|
.commitNowAllowingStateLoss();
|
||||||
return fragment;
|
return fragment;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.mogo.map.location.IMogoLocationClient;
|
|||||||
import com.mogo.map.marker.IMogoMarkerManager;
|
import com.mogo.map.marker.IMogoMarkerManager;
|
||||||
import com.mogo.map.navi.IMogoNavi;
|
import com.mogo.map.navi.IMogoNavi;
|
||||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager;
|
import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager;
|
||||||
import com.mogo.module.navi.cp.PersonalInfoManagerImpl;
|
import com.mogo.module.navi.cp.PersonalInfoManagerImpl;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
@@ -34,15 +35,9 @@ public class SearchApisHolder {
|
|||||||
|
|
||||||
private static PersonalInfoManagerImpl mPersonalInfoManager;
|
private static PersonalInfoManagerImpl mPersonalInfoManager;
|
||||||
|
|
||||||
static {
|
|
||||||
Logger.d( TAG, "static block init." );
|
|
||||||
sApis = ARouter.getInstance().navigation( IMogoServiceApis.class );
|
|
||||||
sGpsSimulatorManager = ARouter.getInstance().navigation( IMogoGpsSimulatorManager.class );
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IMogoServiceApis getApis() {
|
public static IMogoServiceApis getApis() {
|
||||||
if ( sApis == null ) {
|
if ( sApis == null ) {
|
||||||
sApis = ARouter.getInstance().navigation( IMogoServiceApis.class );
|
sApis = MogoApisHandler.getInstance().getApis();
|
||||||
}
|
}
|
||||||
return sApis;
|
return sApis;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ android {
|
|||||||
targetCompatibility 1.8
|
targetCompatibility 1.8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lintOptions {
|
||||||
|
abortOnError false
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -47,6 +51,7 @@ dependencies {
|
|||||||
implementation rootProject.ext.dependencies.rxjava
|
implementation rootProject.ext.dependencies.rxjava
|
||||||
implementation rootProject.ext.dependencies.rxandroid
|
implementation rootProject.ext.dependencies.rxandroid
|
||||||
implementation rootProject.ext.dependencies.carcallprovider
|
implementation rootProject.ext.dependencies.carcallprovider
|
||||||
|
implementation rootProject.ext.dependencies.androidxrecyclerview
|
||||||
|
|
||||||
if (Boolean.valueOf(RELEASE)) {
|
if (Boolean.valueOf(RELEASE)) {
|
||||||
api rootProject.ext.dependencies.mogomap
|
api rootProject.ext.dependencies.mogomap
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ import com.mogo.map.marker.IMogoMarkerManager;
|
|||||||
import com.mogo.map.navi.IMogoNavi;
|
import com.mogo.map.navi.IMogoNavi;
|
||||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||||
import com.mogo.module.carchattingprovider.ICarsChattingProvider;
|
import com.mogo.module.carchattingprovider.ICarsChattingProvider;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.common.entity.MarkerResponse;
|
import com.mogo.module.common.entity.MarkerResponse;
|
||||||
import com.mogo.module.common.entity.MarkerShowEntity;
|
import com.mogo.module.common.entity.MarkerShowEntity;
|
||||||
import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager;
|
import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager;
|
||||||
import com.mogo.module.service.marker.MapMarkerManager;
|
import com.mogo.module.service.marker.MapMarkerManager;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.MogoServicePaths;
|
|
||||||
import com.mogo.service.adas.IMogoADASController;
|
import com.mogo.service.adas.IMogoADASController;
|
||||||
import com.mogo.service.analytics.IMogoAnalytics;
|
import com.mogo.service.analytics.IMogoAnalytics;
|
||||||
import com.mogo.service.cardmanager.IMogoCardManager;
|
import com.mogo.service.cardmanager.IMogoCardManager;
|
||||||
@@ -69,7 +69,7 @@ public class MarkerServiceHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context );
|
sApis = MogoApisHandler.getInstance().getApis();
|
||||||
sMapService = sApis.getMapServiceApi();
|
sMapService = sApis.getMapServiceApi();
|
||||||
sImageloader = sApis.getImageLoaderApi();
|
sImageloader = sApis.getImageLoaderApi();
|
||||||
sMogoStatusManager = sApis.getStatusManagerApi();
|
sMogoStatusManager = sApis.getStatusManagerApi();
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ import android.view.MotionEvent;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.mogo.commons.debug.DebugConfig;
|
import com.mogo.commons.debug.DebugConfig;
|
||||||
|
import com.mogo.commons.network.ParamsProvider;
|
||||||
|
import com.mogo.commons.network.SubscribeImpl;
|
||||||
|
import com.mogo.commons.storage.SpStorage;
|
||||||
import com.mogo.commons.voice.AIAssist;
|
import com.mogo.commons.voice.AIAssist;
|
||||||
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
|
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
|
||||||
import com.mogo.map.MogoLatLng;
|
import com.mogo.map.MogoLatLng;
|
||||||
@@ -38,6 +41,9 @@ import com.mogo.module.service.launchercard.LauncherCardRefresher;
|
|||||||
import com.mogo.module.service.marker.MapMarkerManager;
|
import com.mogo.module.service.marker.MapMarkerManager;
|
||||||
import com.mogo.module.service.network.RefreshCallback;
|
import com.mogo.module.service.network.RefreshCallback;
|
||||||
import com.mogo.module.service.network.RefreshModel;
|
import com.mogo.module.service.network.RefreshModel;
|
||||||
|
import com.mogo.module.service.network.bean.HomeCompanyDistanceForPushData;
|
||||||
|
import com.mogo.module.service.network.bean.HomeCompanyDistanceForPushResponse;
|
||||||
|
import com.mogo.module.service.onlinecar.panel.NavigationTargetInfo;
|
||||||
import com.mogo.module.service.receiver.MogoReceiver;
|
import com.mogo.module.service.receiver.MogoReceiver;
|
||||||
import com.mogo.module.service.refresh.AutoRefreshStrategy;
|
import com.mogo.module.service.refresh.AutoRefreshStrategy;
|
||||||
import com.mogo.module.service.refresh.CustomRefreshStrategy;
|
import com.mogo.module.service.refresh.CustomRefreshStrategy;
|
||||||
@@ -60,10 +66,16 @@ import com.mogo.service.statusmanager.StatusDescriptor;
|
|||||||
import com.mogo.utils.UiThreadHandler;
|
import com.mogo.utils.UiThreadHandler;
|
||||||
import com.mogo.utils.WorkThreadHandler;
|
import com.mogo.utils.WorkThreadHandler;
|
||||||
import com.mogo.utils.logger.Logger;
|
import com.mogo.utils.logger.Logger;
|
||||||
|
import com.mogo.utils.network.RequestOptions;
|
||||||
|
import com.mogo.utils.network.utils.GsonUtil;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author congtaowang
|
* @author congtaowang
|
||||||
@@ -243,7 +255,7 @@ public class MogoServices implements IMogoMapListener,
|
|||||||
/**
|
/**
|
||||||
* 自动刷新回调
|
* 自动刷新回调
|
||||||
*/
|
*/
|
||||||
private RefreshCallback mAutoRefreshCallback = new RefreshCallback<MarkerResponse>() {
|
private RefreshCallback mAutoRefreshCallback = new RefreshCallback< MarkerResponse >() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess( MarkerResponse o ) {
|
public void onSuccess( MarkerResponse o ) {
|
||||||
MapMarkerManager.getInstance().onSyncMarkerResponse( o );
|
MapMarkerManager.getInstance().onSyncMarkerResponse( o );
|
||||||
@@ -390,6 +402,7 @@ public class MogoServices implements IMogoMapListener,
|
|||||||
mIntentManager.registerIntentListener( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER, this );
|
mIntentManager.registerIntentListener( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER, this );
|
||||||
mIntentManager.registerIntentListener( MogoReceiver.ACTION_AUTO_NAVI_SEND, this );
|
mIntentManager.registerIntentListener( MogoReceiver.ACTION_AUTO_NAVI_SEND, this );
|
||||||
mIntentManager.registerIntentListener( MogoReceiver.ACTION_MOGO, this );
|
mIntentManager.registerIntentListener( MogoReceiver.ACTION_MOGO, this );
|
||||||
|
mIntentManager.registerIntentListener( ServiceConst.COMMAND_ONLINE_CAR_PANEL, this );
|
||||||
|
|
||||||
mADASController = MarkerServiceHandler.getADASController();
|
mADASController = MarkerServiceHandler.getADASController();
|
||||||
mLauncher = MarkerServiceHandler.getLauncher();
|
mLauncher = MarkerServiceHandler.getLauncher();
|
||||||
@@ -484,7 +497,7 @@ public class MogoServices implements IMogoMapListener,
|
|||||||
filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER );
|
filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_RECEIVER );
|
||||||
filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_SEND );
|
filter.addAction( MogoReceiver.ACTION_AUTO_NAVI_SEND );
|
||||||
filter.addAction( MogoReceiver.ACTION_MOGO );
|
filter.addAction( MogoReceiver.ACTION_MOGO );
|
||||||
filter.addAction(MogoReceiver.ACTION_TXZ_BLOCK_SEARCH);
|
filter.addAction( MogoReceiver.ACTION_TXZ_BLOCK_SEARCH );
|
||||||
try {
|
try {
|
||||||
context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
|
context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter );
|
||||||
Logger.i( TAG, "register voice receiver." );
|
Logger.i( TAG, "register voice receiver." );
|
||||||
@@ -842,6 +855,7 @@ public class MogoServices implements IMogoMapListener,
|
|||||||
@Override
|
@Override
|
||||||
public void onIntentReceived( String command, Intent intent ) {
|
public void onIntentReceived( String command, Intent intent ) {
|
||||||
|
|
||||||
|
|
||||||
if ( ServiceConst.COMMAND_NEXT.equals( command ) ) {
|
if ( ServiceConst.COMMAND_NEXT.equals( command ) ) {
|
||||||
onActionDone( MogoAction.Next );
|
onActionDone( MogoAction.Next );
|
||||||
} else if ( ServiceConst.COMMAND_PREVIOUS.equals( command ) ) {
|
} else if ( ServiceConst.COMMAND_PREVIOUS.equals( command ) ) {
|
||||||
@@ -925,4 +939,48 @@ public class MogoServices implements IMogoMapListener,
|
|||||||
AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this );
|
AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStartNavi() {
|
||||||
|
String json = SpStorage.getNavigationTarget();
|
||||||
|
if ( !TextUtils.isEmpty( json ) ) {
|
||||||
|
try {
|
||||||
|
NavigationTargetInfo info = GsonUtil.objectFromJson( json, NavigationTargetInfo.class );
|
||||||
|
|
||||||
|
Logger.d( TAG, "info = %s", info );
|
||||||
|
|
||||||
|
HomeCompanyDistanceForPushData data = new HomeCompanyDistanceForPushData();
|
||||||
|
data.lat = Double.valueOf( info.getToPoiLatitude() );
|
||||||
|
data.lon = Double.valueOf( info.getToPoiLongitude() );
|
||||||
|
|
||||||
|
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
|
||||||
|
query.put( "data", GsonUtil.jsonFromObject( data ) );
|
||||||
|
mRefreshModel.getRefreshApiService().calculationNotHomeCompanyDistanceForPush( query )
|
||||||
|
.subscribeOn( Schedulers.io() )
|
||||||
|
.observeOn( AndroidSchedulers.mainThread() )
|
||||||
|
.subscribe( new SubscribeImpl< HomeCompanyDistanceForPushResponse >( RequestOptions.create( mContext ) ) {
|
||||||
|
@Override
|
||||||
|
public void onSuccess( HomeCompanyDistanceForPushResponse o ) {
|
||||||
|
super.onSuccess( o );
|
||||||
|
if ( o != null && o.result != null ) {
|
||||||
|
Logger.d( TAG, "calculationNotHomeCompanyDistanceForPush result %s", o.result.pushFlag );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError( Throwable e ) {
|
||||||
|
super.onError( e );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError( String message, int code ) {
|
||||||
|
super.onError( message, code );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
} catch ( Exception e ) {
|
||||||
|
Logger.e( TAG, e, "onStartNavi" );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,7 +108,6 @@ public class ServiceConst {
|
|||||||
public static final int MSG_REQUEST_DATA = 0x201;
|
public static final int MSG_REQUEST_DATA = 0x201;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* 锁车消息
|
* 锁车消息
|
||||||
*/
|
*/
|
||||||
public static final int MSG_LOCK_CAR = 0x202;
|
public static final int MSG_LOCK_CAR = 0x202;
|
||||||
@@ -159,7 +158,7 @@ public class ServiceConst {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static final String CMD_BACK = "back";
|
public static final String CMD_BACK = "back";
|
||||||
public static final String[] CMD_BACK_WORDS = new String[]{"关闭", "返回"};
|
public static final String[] CMD_BACK_WORDS = new String[]{"关闭", "返回"};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -203,4 +202,10 @@ public class ServiceConst {
|
|||||||
|
|
||||||
public static final int ONLINE_SEARCH_LIMIT = 20;
|
public static final int ONLINE_SEARCH_LIMIT = 20;
|
||||||
public static final int ONLINE_SEARCH_RADIUS = 2_000;
|
public static final int ONLINE_SEARCH_RADIUS = 2_000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查找目的地车友
|
||||||
|
*/
|
||||||
|
public static final String COMMAND_ONLINE_CAR_PANEL = "com.zhidao.search.riders";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public class IntentHandlerFactory {
|
|||||||
mHandlers.put( MogoReceiver.ACTION_VOICE_READY, new AIAssistIntentHandler() );
|
mHandlers.put( MogoReceiver.ACTION_VOICE_READY, new AIAssistIntentHandler() );
|
||||||
mHandlers.put( ServiceConst.COMMAND_BACK, WholeVoiceCommandIntentHandler.getInstance() );
|
mHandlers.put( ServiceConst.COMMAND_BACK, WholeVoiceCommandIntentHandler.getInstance() );
|
||||||
mHandlers.put( MogoReceiver.ACTION_MOGO, new MogoControllerIntentHandler() );
|
mHandlers.put( MogoReceiver.ACTION_MOGO, new MogoControllerIntentHandler() );
|
||||||
|
mHandlers.put( ServiceConst.COMMAND_ONLINE_CAR_PANEL, new OnlineCarPanelIntentHandler() );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class InstanceHolder {
|
private static final class InstanceHolder {
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.mogo.module.service.intent;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
|
import com.mogo.module.service.MarkerServiceHandler;
|
||||||
|
|
||||||
|
public
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
*
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
class OnlineCarPanelIntentHandler implements IntentHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle( Context context, Intent intent ) {
|
||||||
|
if ( MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume() ) {
|
||||||
|
MarkerServiceHandler.getApis().getOnlineCarPanelApi().showPanel();
|
||||||
|
} else {
|
||||||
|
Intent start = new Intent( Intent.ACTION_VIEW );
|
||||||
|
start.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
|
||||||
|
start.setData( Uri.parse( "mogo://launcher/main/switch2?type=showOnlineCarPanel" ) );
|
||||||
|
context.startActivity( start );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -243,7 +243,7 @@ class LauncherCardRefresher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handleRefreshExplorerWayOrOnlineCarData( MogoLatLng latLng, LauncherCardRefreshType type ) {
|
private void handleRefreshExplorerWayOrOnlineCarData( MogoLatLng latLng, LauncherCardRefreshType type ) {
|
||||||
mRefreshModel.refreshDataSync( latLng,
|
mRefreshModel.refreshLauncherCardDataSync( latLng,
|
||||||
mRefreshStrategy.getRadius(),
|
mRefreshStrategy.getRadius(),
|
||||||
mRefreshStrategy.getLimit(),
|
mRefreshStrategy.getLimit(),
|
||||||
new RefreshCallback< MarkerResponse >() {
|
new RefreshCallback< MarkerResponse >() {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.mogo.module.service.network;
|
|||||||
import com.mogo.commons.data.BaseData;
|
import com.mogo.commons.data.BaseData;
|
||||||
import com.mogo.module.common.entity.MarkerResponse;
|
import com.mogo.module.common.entity.MarkerResponse;
|
||||||
import com.mogo.module.service.network.bean.DemoUserInfoEntity;
|
import com.mogo.module.service.network.bean.DemoUserInfoEntity;
|
||||||
|
import com.mogo.module.service.network.bean.HomeCompanyDistanceForPushResponse;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -37,4 +38,8 @@ public interface RefreshApiService {
|
|||||||
*/
|
*/
|
||||||
@GET( "/yycp-launcherSnapshot/mock/getMockUserInfos" )
|
@GET( "/yycp-launcherSnapshot/mock/getMockUserInfos" )
|
||||||
Observable< DemoUserInfoEntity > getMockUsers();
|
Observable< DemoUserInfoEntity > getMockUsers();
|
||||||
|
|
||||||
|
@FormUrlEncoded
|
||||||
|
@POST("/yycp-travel-condition/trajectoryPrediction/calculationNotHomeCompanyDistanceForPush")
|
||||||
|
Observable< HomeCompanyDistanceForPushResponse > calculationNotHomeCompanyDistanceForPush( @FieldMap Map< String, Object > parameters);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,51 +65,6 @@ public class RefreshModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshData( MogoLatLng latLng, int radius, int limit, final RefreshCallback callback ) {
|
|
||||||
if ( mRefreshApiService != null ) {
|
|
||||||
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
|
|
||||||
final RefreshBody refreshBody = new RefreshBody();
|
|
||||||
refreshBody.limit = limit;
|
|
||||||
refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lng );
|
|
||||||
refreshBody.radius = radius;
|
|
||||||
refreshBody.dataType.add( ServiceConst.CARD_TYPE_ROAD_CONDITION );
|
|
||||||
|
|
||||||
String data = GsonUtil.jsonFromObject( refreshBody );
|
|
||||||
query.put( "data", data );
|
|
||||||
Logger.d( TAG, data );
|
|
||||||
|
|
||||||
|
|
||||||
mRefreshApiService.refreshData( query )
|
|
||||||
.subscribeOn( Schedulers.io() )
|
|
||||||
.observeOn( AndroidSchedulers.mainThread() )
|
|
||||||
.subscribe( new SubscribeImpl< BaseData >( RequestOptions.create( mContext ) ) {
|
|
||||||
@Override
|
|
||||||
public void onSuccess( BaseData o ) {
|
|
||||||
super.onSuccess( o );
|
|
||||||
if ( callback != null ) {
|
|
||||||
callback.onSuccess( o );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError( Throwable e ) {
|
|
||||||
super.onError( e );
|
|
||||||
if ( callback != null ) {
|
|
||||||
callback.onFail();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError( String message, int code ) {
|
|
||||||
super.onError( message, code );
|
|
||||||
if ( callback != null ) {
|
|
||||||
callback.onFail();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void refreshExplorerWayData( MogoLatLng latLng, int radius, int limit, final RefreshCallback callback ) {
|
public void refreshExplorerWayData( MogoLatLng latLng, int radius, int limit, final RefreshCallback callback ) {
|
||||||
if ( mRefreshApiService != null ) {
|
if ( mRefreshApiService != null ) {
|
||||||
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
|
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
|
||||||
@@ -155,7 +110,7 @@ public class RefreshModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshDataSync( MogoLatLng latLng, int radius, int limit, final RefreshCallback callback ) {
|
public void refreshLauncherCardDataSync( MogoLatLng latLng, int radius, int limit, final RefreshCallback callback ) {
|
||||||
if ( mRefreshApiService != null ) {
|
if ( mRefreshApiService != null ) {
|
||||||
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
|
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
|
||||||
final RefreshBody refreshBody = new RefreshBody();
|
final RefreshBody refreshBody = new RefreshBody();
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.mogo.module.service.network.bean;
|
||||||
|
|
||||||
|
public
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/22
|
||||||
|
*
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
class HomeCompanyDistanceForPushData {
|
||||||
|
|
||||||
|
public double lon;
|
||||||
|
public double lat;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.mogo.module.service.network.bean;
|
||||||
|
|
||||||
|
import com.mogo.commons.data.BaseData;
|
||||||
|
|
||||||
|
public
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/22
|
||||||
|
*
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
class HomeCompanyDistanceForPushResponse extends BaseData {
|
||||||
|
|
||||||
|
public HomeCompanyDistanceForPushResult result;
|
||||||
|
|
||||||
|
public static class HomeCompanyDistanceForPushResult {
|
||||||
|
public boolean pushFlag;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.mogo.module.service.onlinecar.panel;
|
||||||
|
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
* <p>
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
class ContainerHandler {
|
||||||
|
|
||||||
|
public static int sContainerId = 0;
|
||||||
|
public static FragmentActivity sAttachContext;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.mogo.module.service.onlinecar.panel;
|
||||||
|
|
||||||
|
import com.mogo.commons.mvp.IView;
|
||||||
|
import com.mogo.module.common.entity.MarkerOnlineCar;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
* <p>
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
interface IOnlineCarPanelView extends IView {
|
||||||
|
|
||||||
|
void renderOnlineCarList( List< MarkerOnlineCar > onlineCars );
|
||||||
|
|
||||||
|
void renderEmptyUi( OnlineCarStrategy strategy );
|
||||||
|
|
||||||
|
void renderNoNavigationInfoUi();
|
||||||
|
|
||||||
|
void renderErrorUi();
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
package com.mogo.module.service.onlinecar.panel;
|
||||||
|
|
||||||
|
public
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
* <p>
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
class NavigationTargetInfo {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FromPoiName : 东城区小黄庄北街2号
|
||||||
|
* FromPoiAddr : 在中国银行(北京安贞桥支行)附近
|
||||||
|
* FromPoiLongitude : 116.41082763671875
|
||||||
|
* FromPoiLatitude : 39.96831130981445
|
||||||
|
* ToPoiName : 北京市北京市北小营镇宏大工业开发中心A座7号
|
||||||
|
* ToPoiLongitude : 116.74490356445312
|
||||||
|
* ToPoiLatitude : 40.19820785522461
|
||||||
|
*/
|
||||||
|
private String FromPoiName;
|
||||||
|
private String FromPoiAddr;
|
||||||
|
private String FromPoiLongitude;
|
||||||
|
private String FromPoiLatitude;
|
||||||
|
private String ToPoiName;
|
||||||
|
private String ToPoiLongitude;
|
||||||
|
private String ToPoiLatitude;
|
||||||
|
|
||||||
|
public String getFromPoiName() {
|
||||||
|
return FromPoiName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFromPoiName( String FromPoiName ) {
|
||||||
|
this.FromPoiName = FromPoiName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFromPoiAddr() {
|
||||||
|
return FromPoiAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFromPoiAddr( String FromPoiAddr ) {
|
||||||
|
this.FromPoiAddr = FromPoiAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFromPoiLongitude() {
|
||||||
|
return FromPoiLongitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFromPoiLongitude( String FromPoiLongitude ) {
|
||||||
|
this.FromPoiLongitude = FromPoiLongitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFromPoiLatitude() {
|
||||||
|
return FromPoiLatitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFromPoiLatitude( String FromPoiLatitude ) {
|
||||||
|
this.FromPoiLatitude = FromPoiLatitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToPoiName() {
|
||||||
|
return ToPoiName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToPoiName( String ToPoiName ) {
|
||||||
|
this.ToPoiName = ToPoiName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToPoiLongitude() {
|
||||||
|
return ToPoiLongitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToPoiLongitude( String ToPoiLongitude ) {
|
||||||
|
this.ToPoiLongitude = ToPoiLongitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getToPoiLatitude() {
|
||||||
|
return ToPoiLatitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToPoiLatitude( String ToPoiLatitude ) {
|
||||||
|
this.ToPoiLatitude = ToPoiLatitude;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
package com.mogo.module.service.onlinecar.panel;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
|
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||||
|
import com.mogo.service.MogoServicePaths;
|
||||||
|
import com.mogo.service.strategy.IMogoOnlineCarListPanelProvider;
|
||||||
|
import com.mogo.utils.logger.Logger;
|
||||||
|
|
||||||
|
public
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
*
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
@Route( path = MogoServicePaths.PATH_ONLINE_CAR_PANEL )
|
||||||
|
class OnlineCarListPanelProvider implements IMogoOnlineCarListPanelProvider {
|
||||||
|
|
||||||
|
private static final String TAG = "OnlineCarListPanelProvider";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initContainer( int containerId, FragmentActivity activity ) {
|
||||||
|
ContainerHandler.sContainerId = containerId;
|
||||||
|
ContainerHandler.sAttachContext = activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showPanel() {
|
||||||
|
if ( isFragmentExist( ContainerHandler.sAttachContext ) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Fragment fragment = new OnlineCarPanelFragment();
|
||||||
|
ContainerHandler.sAttachContext
|
||||||
|
.getSupportFragmentManager()
|
||||||
|
.beginTransaction()
|
||||||
|
.replace( ContainerHandler.sContainerId, fragment, TAG )
|
||||||
|
.commitNowAllowingStateLoss();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isFragmentExist( Context context ) {
|
||||||
|
if ( !( context instanceof FragmentActivity ) ) {
|
||||||
|
Logger.w( TAG, "context is not a instance of FragmentActivity" );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Fragment fragment = null;
|
||||||
|
return ( fragment = ( ( FragmentActivity ) context )
|
||||||
|
.getSupportFragmentManager()
|
||||||
|
.findFragmentByTag( TAG ) ) != null && fragment.isAdded();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void hidePanel() {
|
||||||
|
Fragment fragment = ContainerHandler.sAttachContext.getSupportFragmentManager().findFragmentByTag( TAG );
|
||||||
|
if ( fragment != null ) {
|
||||||
|
ContainerHandler.sAttachContext
|
||||||
|
.getSupportFragmentManager()
|
||||||
|
.beginTransaction()
|
||||||
|
.remove( fragment )
|
||||||
|
.commitNowAllowingStateLoss();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
ContainerHandler.sContainerId = 0;
|
||||||
|
ContainerHandler.sAttachContext = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init( Context context ) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
package com.mogo.module.service.onlinecar.panel;
|
||||||
|
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
|
import com.mogo.map.location.MogoLocation;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
|
import com.mogo.module.common.entity.MarkerLocation;
|
||||||
|
import com.mogo.module.common.entity.MarkerOnlineCar;
|
||||||
|
import com.mogo.module.common.glide.SkinAbleBitmapTarget;
|
||||||
|
import com.mogo.module.service.MarkerServiceHandler;
|
||||||
|
import com.mogo.module.service.R;
|
||||||
|
import com.mogo.module.service.Utils;
|
||||||
|
import com.mogo.utils.ResourcesHelper;
|
||||||
|
import com.mogo.utils.WindowUtils;
|
||||||
|
import com.mogo.utils.glide.GlideApp;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
* <p>
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
class OnlineCarPanelAdapter extends RecyclerView.Adapter< OnlineCarPanelAdapter.VH > {
|
||||||
|
|
||||||
|
private List< MarkerOnlineCar > mDatums;
|
||||||
|
|
||||||
|
public OnlineCarPanelAdapter( List< MarkerOnlineCar > mDatums ) {
|
||||||
|
this.mDatums = mDatums;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDatums( List< MarkerOnlineCar > mDatums ) {
|
||||||
|
this.mDatums = mDatums;
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public OnlineCarPanelAdapter.VH onCreateViewHolder( @NonNull ViewGroup parent, int viewType ) {
|
||||||
|
return new VH( LayoutInflater.from( parent.getContext() ).inflate( R.layout.module_services_online_car_panel_item, null ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder( @NonNull OnlineCarPanelAdapter.VH holder, int position ) {
|
||||||
|
holder.bind( mDatums.get( position ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return mDatums == null ? 0 : mDatums.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class VH extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
private ImageView avatar;
|
||||||
|
private TextView nickname;
|
||||||
|
private TextView distance;
|
||||||
|
private TextView detail;
|
||||||
|
|
||||||
|
public VH( @NonNull View itemView ) {
|
||||||
|
super( itemView );
|
||||||
|
RecyclerView.LayoutParams params = new RecyclerView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT );
|
||||||
|
params.bottomMargin = ResourcesHelper.getDimensionPixelSize( itemView.getContext(), R.dimen.module_services_panel_item_marginBottom );
|
||||||
|
itemView.setLayoutParams( params );
|
||||||
|
avatar = itemView.findViewById( R.id.module_services_id_panel_item_avatar );
|
||||||
|
nickname = itemView.findViewById( R.id.module_services_id_panel_item_nickname );
|
||||||
|
distance = itemView.findViewById( R.id.module_services_id_panel_item_distance );
|
||||||
|
detail = itemView.findViewById( R.id.module_services_id_panel_item_detail );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void bind( MarkerOnlineCar car ) {
|
||||||
|
RequestOptions options = new RequestOptions().circleCrop().placeholder( R.drawable.module_common_default_user_head ).error( R.drawable.module_common_default_user_head );
|
||||||
|
GlideApp.with( itemView.getContext() ).asBitmap().apply( options ).load( car.getUserInfo().getUserHead() ).into( new SkinAbleBitmapTarget( avatar, options ) );
|
||||||
|
nickname.setText( car.getUserInfo().getUserName() );
|
||||||
|
String content = getDistanceStr( car.getLocation() );
|
||||||
|
distance.setText( content );
|
||||||
|
detail.setOnClickListener( view -> {
|
||||||
|
MogoApisHandler.getInstance().getApis().getAnalyticsApi().track( "Mogoer_List_click", null );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getDistanceStr( MarkerLocation location ) {
|
||||||
|
MogoLocation mogoLocation = MarkerServiceHandler.getApis().getMapServiceApi().getSingletonLocationClient( itemView.getContext() ).getLastKnowLocation();
|
||||||
|
if ( location == null ) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if ( mogoLocation == null ) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
float distance = Utils.calculateLineDistance( location.getLon(), location.getLat(), mogoLocation.getLongitude(), mogoLocation.getLatitude() );
|
||||||
|
if ( distance >= 1000 ) {
|
||||||
|
return String.format( "%.1fKM", distance / 1000 );
|
||||||
|
} else {
|
||||||
|
return String.format( "%.1fM", distance );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
package com.mogo.module.service.onlinecar.panel;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.mogo.commons.mvp.MvpFragment;
|
||||||
|
import com.mogo.commons.voice.AIAssist;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
|
import com.mogo.module.common.entity.MarkerOnlineCar;
|
||||||
|
import com.mogo.module.service.MarkerServiceHandler;
|
||||||
|
import com.mogo.module.service.R;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
* <p>
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
public class OnlineCarPanelFragment extends MvpFragment< IOnlineCarPanelView, OnlineCarPanelPresenter > implements IOnlineCarPanelView {
|
||||||
|
|
||||||
|
private RecyclerView mList;
|
||||||
|
private View mRefreshPanel;
|
||||||
|
private View mErrorPanel;
|
||||||
|
|
||||||
|
private OnlineCarPanelAdapter mOnlineCarPanelAdapter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutId() {
|
||||||
|
return R.layout.module_services_fragment_online_car_panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initViews() {
|
||||||
|
findViewById( R.id.module_services_id_close ).setOnClickListener( view -> {
|
||||||
|
MarkerServiceHandler.getApis().getOnlineCarPanelApi().hidePanel();
|
||||||
|
} );
|
||||||
|
mList = findViewById( R.id.module_services_id_recycler_view );
|
||||||
|
mRefreshPanel = findViewById( R.id.module_services_id_load_strategy_container );
|
||||||
|
mErrorPanel = findViewById( R.id.module_services_id_error_container );
|
||||||
|
|
||||||
|
mList.setLayoutManager( new LinearLayoutManager( getContext(), LinearLayoutManager.VERTICAL, false ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
protected OnlineCarPanelPresenter createPresenter() {
|
||||||
|
return new OnlineCarPanelPresenter( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderOnlineCarList( List< MarkerOnlineCar > onlineCars ) {
|
||||||
|
mRefreshPanel.setVisibility( View.GONE );
|
||||||
|
mErrorPanel.setVisibility( View.GONE );
|
||||||
|
mList.setVisibility( View.VISIBLE );
|
||||||
|
if ( mOnlineCarPanelAdapter == null ) {
|
||||||
|
mOnlineCarPanelAdapter = new OnlineCarPanelAdapter( onlineCars );
|
||||||
|
mList.setAdapter( mOnlineCarPanelAdapter );
|
||||||
|
} else {
|
||||||
|
mOnlineCarPanelAdapter.setDatums( onlineCars );
|
||||||
|
}
|
||||||
|
AIAssist.getInstance( getContext() ).speakTTSVoice( String.format( "为您找到%s个车友", onlineCars.size() ) );
|
||||||
|
Map< String, Object > properties = new HashMap<>();
|
||||||
|
properties.put( "number", onlineCars.size() );
|
||||||
|
MogoApisHandler.getInstance().getApis().getAnalyticsApi().track( "Mogoer_List_number", properties );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderEmptyUi( OnlineCarStrategy strategy ) {
|
||||||
|
mErrorPanel.setVisibility( View.GONE );
|
||||||
|
mList.setVisibility( View.GONE );
|
||||||
|
mRefreshPanel.setVisibility( View.VISIBLE );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderNoNavigationInfoUi() {
|
||||||
|
mList.setVisibility( View.GONE );
|
||||||
|
mRefreshPanel.setVisibility( View.GONE );
|
||||||
|
mErrorPanel.setVisibility( View.VISIBLE );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderErrorUi() {
|
||||||
|
mList.setVisibility( View.GONE );
|
||||||
|
mRefreshPanel.setVisibility( View.GONE );
|
||||||
|
mErrorPanel.setVisibility( View.VISIBLE );
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
package com.mogo.module.service.onlinecar.panel;
|
||||||
|
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
|
|
||||||
|
import com.mogo.commons.mvp.Presenter;
|
||||||
|
import com.mogo.commons.storage.SpStorage;
|
||||||
|
import com.mogo.map.MogoLatLng;
|
||||||
|
import com.mogo.module.common.entity.MarkerResponse;
|
||||||
|
import com.mogo.module.service.network.RefreshCallback;
|
||||||
|
import com.mogo.module.service.network.RefreshModel;
|
||||||
|
import com.mogo.utils.network.utils.GsonUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
* <p>
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
class OnlineCarPanelPresenter extends Presenter< IOnlineCarPanelView > implements RefreshCallback< MarkerResponse > {
|
||||||
|
|
||||||
|
public static final int LIMIT = 20;
|
||||||
|
private RefreshModel mRefreshModel;
|
||||||
|
private OnlineCarStrategy mStrategy;
|
||||||
|
private NavigationTargetInfo mNavigationTargetInfo;
|
||||||
|
|
||||||
|
public OnlineCarPanelPresenter( IOnlineCarPanelView view ) {
|
||||||
|
super( view );
|
||||||
|
mRefreshModel = new RefreshModel( getContext() );
|
||||||
|
mStrategy = OnlineCarStrategy.Default;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate( @NonNull LifecycleOwner owner ) {
|
||||||
|
super.onCreate( owner );
|
||||||
|
String json = SpStorage.getNavigationTarget();
|
||||||
|
if ( TextUtils.isEmpty( json ) ) {
|
||||||
|
mView.renderNoNavigationInfoUi();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mNavigationTargetInfo = GsonUtil.objectFromJson( json, NavigationTargetInfo.class );
|
||||||
|
loadOnlineCar();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadOnlineCar() {
|
||||||
|
if ( mNavigationTargetInfo == null ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
double toLat = Double.valueOf( mNavigationTargetInfo.getToPoiLatitude() );
|
||||||
|
double toLon = Double.valueOf( mNavigationTargetInfo.getToPoiLongitude() );
|
||||||
|
mRefreshModel.queryOnLineCarWithRoute( new MogoLatLng( toLat, toLon ),
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
mStrategy.getRadius(),
|
||||||
|
LIMIT,
|
||||||
|
this
|
||||||
|
);
|
||||||
|
} catch ( Exception e ) {
|
||||||
|
mView.renderNoNavigationInfoUi();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess( MarkerResponse o ) {
|
||||||
|
if ( o == null || o.getResult() == null ) {
|
||||||
|
mView.renderErrorUi();
|
||||||
|
} else {
|
||||||
|
if ( o.getResult().getOnlineCar() == null || o.getResult().getOnlineCar().isEmpty() ) {
|
||||||
|
mView.renderEmptyUi( mStrategy );
|
||||||
|
} else {
|
||||||
|
mView.renderOnlineCarList( o.getResult().getOnlineCar() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFail() {
|
||||||
|
mView.renderErrorUi();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.mogo.module.service.onlinecar.panel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author congtaowang
|
||||||
|
* @since 2020/9/21
|
||||||
|
* <p>
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
enum OnlineCarStrategy {
|
||||||
|
|
||||||
|
Strategy3( 40_000, null ),
|
||||||
|
Strategy2( 20_000, Strategy3 ),
|
||||||
|
Default( 10_000, Strategy2 ),
|
||||||
|
;
|
||||||
|
|
||||||
|
private int radius;
|
||||||
|
private OnlineCarStrategy next;
|
||||||
|
|
||||||
|
OnlineCarStrategy( int radius, OnlineCarStrategy next ) {
|
||||||
|
this.radius = radius;
|
||||||
|
this.next = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRadius() {
|
||||||
|
return radius;
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
modules/mogo-module-service/src/main/res/drawable-ldpi/module_services_close.png
Executable file
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 583 B |
|
After Width: | Height: | Size: 52 KiB |
BIN
modules/mogo-module-service/src/main/res/drawable-mdpi/module_services_close.png
Executable file
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 583 B |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 144 KiB |
BIN
modules/mogo-module-service/src/main/res/drawable/module_services_close.png
Executable file
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 583 B |
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="#1F2131"/>
|
||||||
|
<corners android:radius="@dimen/module_services_panel_item_corner"/>
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<gradient android:angle="0" android:endColor="#676982" android:startColor="#8384A9" />
|
||||||
|
<corners android:radius="@dimen/module_services_panel_item_detail_bkg_corner" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<gradient android:angle="0" android:endColor="#585E8B" android:startColor="#2E324B" />
|
||||||
|
<corners android:radius="@dimen/module_services_panel_strategy_button_bkg_corner" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
<?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"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginLeft="@dimen/module_services_online_car_panel_marginRight"
|
||||||
|
android:layout_marginTop="@dimen/module_services_online_car_panel_marginTop"
|
||||||
|
android:layout_marginRight="@dimen/module_services_online_car_panel_marginRight"
|
||||||
|
android:layout_marginBottom="@dimen/module_services_online_car_panel_marginBottom"
|
||||||
|
android:background="@drawable/module_services_online_car_panel_background"
|
||||||
|
android:paddingLeft="@dimen/module_services_online_car_panel_paddingLeft"
|
||||||
|
android:paddingRight="@dimen/module_services_online_car_panel_paddingLeft">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_services_id_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/module_services_online_car_panel_close_margin_top"
|
||||||
|
android:text="目的地车友"
|
||||||
|
android:textColor="@color/module_services_online_car_panel_title_textColor"
|
||||||
|
android:textSize="@dimen/module_services_online_car_panel_title_text_size" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/module_services_id_close"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:layout_marginTop="@dimen/module_services_online_car_panel_close_margin_top"
|
||||||
|
android:src="@drawable/module_services_close" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/module_services_id_recycler_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginTop="@dimen/module_services_online_car_panel_recycler_view_margin_top"
|
||||||
|
android:overScrollMode="never" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/module_services_id_load_strategy_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/module_services_online_car_panel_empty_icon" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_services_empty_tip"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/module_services_empty_tip_marginTop"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@color/module_services_empty_tip_textColor"
|
||||||
|
android:textSize="@dimen/module_services_empty_tip_textSize"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="很抱歉,目的地10km内未找到车友" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/module_services_panel_strategy_button_marginTop"
|
||||||
|
android:gravity="center">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_services_id_20Km_radius"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginRight="@dimen/module_services_load_strategy_marginRight"
|
||||||
|
android:background="@drawable/module_services_panel_strategy_button_bkg"
|
||||||
|
android:paddingLeft="@dimen/module_services_load_strategy_paddingLeft"
|
||||||
|
android:paddingTop="@dimen/module_services_load_strategy_paddingTop"
|
||||||
|
android:paddingRight="@dimen/module_services_load_strategy_paddingLeft"
|
||||||
|
android:paddingBottom="@dimen/module_services_load_strategy_paddingTop"
|
||||||
|
android:text="@string/module_services_str_20Km_radius"
|
||||||
|
android:textColor="@color/module_services_load_strategy_textColor"
|
||||||
|
android:textSize="@dimen/module_services_load_strategy_textSize"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_services_id_40Km_radius"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/module_services_panel_strategy_button_bkg"
|
||||||
|
android:paddingLeft="@dimen/module_services_load_strategy_paddingLeft"
|
||||||
|
android:paddingTop="@dimen/module_services_load_strategy_paddingTop"
|
||||||
|
android:paddingRight="@dimen/module_services_load_strategy_paddingLeft"
|
||||||
|
android:paddingBottom="@dimen/module_services_load_strategy_paddingTop"
|
||||||
|
android:text="@string/module_services_str_40Km_radius"
|
||||||
|
android:textColor="@color/module_services_load_strategy_textColor"
|
||||||
|
android:textSize="@dimen/module_services_load_strategy_textSize"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/module_services_id_error_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginTop="@dimen/module_services_online_car_panel_recycler_view_margin_top"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="加载失败,请点击重试"
|
||||||
|
android:textColor="#FFFFFF" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="@dimen/module_services_panel_item_marginBottom"
|
||||||
|
android:background="@drawable/module_services_panel_item_bkg"
|
||||||
|
android:padding="@dimen/module_services_panel_item_padding">
|
||||||
|
|
||||||
|
<com.mogo.module.common.widget.CustomCircleImageView
|
||||||
|
android:id="@+id/module_services_id_panel_item_avatar"
|
||||||
|
android:layout_width="@dimen/module_services_panel_item_avatar_size"
|
||||||
|
android:layout_height="@dimen/module_services_panel_item_avatar_size"
|
||||||
|
android:src="@drawable/module_common_default_user_head"
|
||||||
|
app:civ_border_color="@color/module_services_id_panel_item_avatar_border_color"
|
||||||
|
app:civ_border_width="@dimen/module_services_id_panel_item_avatar_border_width"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_services_id_panel_item_nickname"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="@dimen/module_services_panel_item_nickname_marginLeft"
|
||||||
|
android:textColor="@color/module_services_panel_item_nickname_textColor"
|
||||||
|
android:textSize="@dimen/module_services_panel_item_nickname_textSize"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/module_services_id_panel_item_avatar"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:text="1111111" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_services_id_panel_item_distance_tag"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@color/module_services_panel_item_distance_textColor"
|
||||||
|
android:textSize="@dimen/module_services_panel_item_distance_textSize"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintLeft_toLeftOf="@+id/module_services_id_panel_item_nickname"
|
||||||
|
android:text="@string/module_services_panel_item_distance_tag_text" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_services_id_panel_item_distance"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="@dimen/module_services_id_panel_item_distance_marginLeft"
|
||||||
|
android:textColor="@color/module_services_panel_item_nickname_textColor"
|
||||||
|
android:textSize="@dimen/module_services_panel_item_distance_textSize"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/module_services_id_panel_item_distance_tag"
|
||||||
|
tools:text="980M" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_services_id_panel_item_detail"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:background="@drawable/module_services_panel_item_detail_bkg"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="@dimen/module_services_panel_item_detail_padding"
|
||||||
|
android:text="@string/module_services_panel_item_detail_text"
|
||||||
|
android:textColor="@color/module_services_panel_item_detail_textColor"
|
||||||
|
android:textSize="@dimen/module_services_panel_item_detail_textSize"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -22,4 +22,35 @@
|
|||||||
<dimen name="module_service_content_minWidth">64px</dimen>
|
<dimen name="module_service_content_minWidth">64px</dimen>
|
||||||
<dimen name="module_service_id_marker_content_paddingRight">6.5px</dimen>
|
<dimen name="module_service_id_marker_content_paddingRight">6.5px</dimen>
|
||||||
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">10px</dimen>
|
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">10px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_marginTop">2px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginBottom">2px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginRight">8px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingLeft">28px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingBottom">16px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_close_margin_top">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_margin_top">28px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_text_size">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_recycler_view_margin_top">84px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_avatar_size">58px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_textSize">14px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_distance_textSize">16px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_avatar_border_width">5px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_padding">20px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_marginLeft">13px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_distance_marginLeft">42px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_bkg_corner">8.89px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_padding">13px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_marginBottom">16px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_bkg_corner">25px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingTop">13px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingLeft">26px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_marginRight">20px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_marginTop">17px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_marginTop">60px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_corner">12.5px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -22,4 +22,35 @@
|
|||||||
<dimen name="module_service_content_minWidth">64px</dimen>
|
<dimen name="module_service_content_minWidth">64px</dimen>
|
||||||
<dimen name="module_service_id_marker_content_paddingRight">6.5px</dimen>
|
<dimen name="module_service_id_marker_content_paddingRight">6.5px</dimen>
|
||||||
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">10px</dimen>
|
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">10px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_marginTop">2px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginBottom">2px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginRight">8px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingLeft">28px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingBottom">16px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_close_margin_top">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_margin_top">28px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_text_size">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_recycler_view_margin_top">84px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_avatar_size">58px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_textSize">14px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_distance_textSize">16px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_avatar_border_width">5px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_padding">20px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_marginLeft">13px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_distance_marginLeft">42px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_bkg_corner">8.89px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_padding">13px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_marginBottom">16px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_bkg_corner">25px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingTop">13px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingLeft">26px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_marginRight">40px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_marginTop">28px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_marginTop">108px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_corner">12.5px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -22,4 +22,35 @@
|
|||||||
<dimen name="module_service_tag_textSize">20px</dimen>
|
<dimen name="module_service_tag_textSize">20px</dimen>
|
||||||
<dimen name="module_service_content_minWidth">120px</dimen>
|
<dimen name="module_service_content_minWidth">120px</dimen>
|
||||||
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">20px</dimen>
|
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">20px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_marginTop">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginBottom">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginRight">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingLeft">50px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingBottom">28px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_close_margin_top">36px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_margin_top">50px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_text_size">36px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_recycler_view_margin_top">151px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_textSize">33px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_avatar_size">102px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_textSize">26px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_distance_textSize">30px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_textSize">34px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_avatar_border_width">9px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_padding">40px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_marginLeft">20px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_distance_marginLeft">70px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_bkg_corner">16px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_padding">21px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_marginBottom">28px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_bkg_corner">45px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingTop">22px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingLeft">42px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_marginRight">40px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_textSize">34px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_marginTop">17px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_marginTop">108px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_corner">22.5px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -22,4 +22,35 @@
|
|||||||
<dimen name="module_service_tag_textSize">20px</dimen>
|
<dimen name="module_service_tag_textSize">20px</dimen>
|
||||||
<dimen name="module_service_content_minWidth">120px</dimen>
|
<dimen name="module_service_content_minWidth">120px</dimen>
|
||||||
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">20px</dimen>
|
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">20px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_marginTop">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginBottom">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginRight">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingLeft">50px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingBottom">28px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_close_margin_top">36px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_margin_top">50px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_text_size">36px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_recycler_view_margin_top">151px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_textSize">33px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_avatar_size">102px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_textSize">26px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_distance_textSize">30px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_textSize">34px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_avatar_border_width">9px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_padding">40px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_marginLeft">20px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_distance_marginLeft">70px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_bkg_corner">16px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_padding">21px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_marginBottom">28px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_bkg_corner">45px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingTop">22px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingLeft">42px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_marginRight">20px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_textSize">34px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_marginTop">28px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_marginTop">60px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_corner">22.5px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1,4 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<color name="module_service_info_window_content_textColor">#ffffff</color>
|
<color name="module_service_info_window_content_textColor">#ffffff</color>
|
||||||
|
<color name="module_services_online_car_panel_title_textColor">#FFFFFFFF</color>
|
||||||
|
<color name="module_services_load_strategy_textColor">#FFFFFF</color>
|
||||||
|
<color name="module_services_panel_item_nickname_textColor">#FFFFFF</color>
|
||||||
|
<color name="module_services_panel_item_distance_textColor">#7FFFFFFF</color>
|
||||||
|
<color name="module_services_panel_item_detail_textColor">#FFFFFF</color>
|
||||||
|
<color name="module_services_id_panel_item_avatar_border_color">#3081A4DC</color>
|
||||||
|
<color name="module_services_empty_tip_textColor">#B2FFFFFF</color>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -22,4 +22,35 @@
|
|||||||
<dimen name="module_service_tag_textSize">20px</dimen>
|
<dimen name="module_service_tag_textSize">20px</dimen>
|
||||||
<dimen name="module_service_content_minWidth">120px</dimen>
|
<dimen name="module_service_content_minWidth">120px</dimen>
|
||||||
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">20px</dimen>
|
<dimen name="module_service_id_marker_content_paddingRight_widthoutCall">20px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_marginTop">2px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginBottom">2px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_marginRight">8px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingLeft">28px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_paddingBottom">16px</dimen>
|
||||||
|
|
||||||
|
<dimen name="module_services_online_car_panel_close_margin_top">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_margin_top">28px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_title_text_size">20px</dimen>
|
||||||
|
<dimen name="module_services_online_car_panel_recycler_view_margin_top">84px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_avatar_size">58px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_textSize">14px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_distance_textSize">16px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_avatar_border_width">5px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_padding">20px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_nickname_marginLeft">13px</dimen>
|
||||||
|
<dimen name="module_services_id_panel_item_distance_marginLeft">42px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_bkg_corner">8.89px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_detail_padding">13px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_marginBottom">16px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_bkg_corner">25px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingTop">13px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_paddingLeft">26px</dimen>
|
||||||
|
<dimen name="module_services_load_strategy_marginRight">20px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_textSize">18px</dimen>
|
||||||
|
<dimen name="module_services_empty_tip_marginTop">17px</dimen>
|
||||||
|
<dimen name="module_services_panel_strategy_button_marginTop">60px</dimen>
|
||||||
|
<dimen name="module_services_panel_item_corner">12.5px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -4,4 +4,8 @@
|
|||||||
<string name="module_service_launcher_card_tips">你的周围有%d个%s,请点击查看,你也可以对我说打开蘑菇出行</string>
|
<string name="module_service_launcher_card_tips">你的周围有%d个%s,请点击查看,你也可以对我说打开蘑菇出行</string>
|
||||||
<string name="module_service_launcher_card_info">周围有%d个%s</string>
|
<string name="module_service_launcher_card_info">周围有%d个%s</string>
|
||||||
<string name="module_service_open_app_tip">建议开启蘑菇出行,守护你的每一段行程,你可以直接对我说,打开蘑菇出行</string>
|
<string name="module_service_open_app_tip">建议开启蘑菇出行,守护你的每一段行程,你可以直接对我说,打开蘑菇出行</string>
|
||||||
|
<string name="module_services_str_20Km_radius">扩大到20KM半径</string>
|
||||||
|
<string name="module_services_str_40Km_radius">扩大到40KM半径</string>
|
||||||
|
<string name="module_services_panel_item_distance_tag_text">距离导航目的地</string>
|
||||||
|
<string name="module_services_panel_item_detail_text">查看车友信息</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -2,18 +2,26 @@ package com.mogo.module.widgets;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Rect;
|
||||||
|
import android.net.Uri;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.alibaba.android.arouter.launcher.ARouter;
|
||||||
import com.mogo.commons.AbsMogoApplication;
|
import com.mogo.commons.AbsMogoApplication;
|
||||||
import com.mogo.commons.debug.DebugConfig;
|
import com.mogo.commons.debug.DebugConfig;
|
||||||
import com.mogo.commons.voice.AIAssist;
|
import com.mogo.commons.voice.AIAssist;
|
||||||
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
|
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.module.common.wm.WindowManagerView;
|
import com.mogo.module.common.wm.WindowManagerView;
|
||||||
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.utils.CommonUtils;
|
import com.mogo.utils.CommonUtils;
|
||||||
import com.mogo.utils.LaunchUtils;
|
import com.mogo.utils.LaunchUtils;
|
||||||
import com.mogo.utils.ResourcesHelper;
|
import com.mogo.utils.ResourcesHelper;
|
||||||
|
import com.mogo.utils.TipToast;
|
||||||
import com.mogo.utils.logger.Logger;
|
import com.mogo.utils.logger.Logger;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -50,6 +58,12 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
|
|||||||
private WindowManagerView mWindowManagerView;
|
private WindowManagerView mWindowManagerView;
|
||||||
private Map< String, Object > mProperties = new HashMap<>();
|
private Map< String, Object > mProperties = new HashMap<>();
|
||||||
|
|
||||||
|
private TextView mEnterApp;
|
||||||
|
private TextView mConsult;
|
||||||
|
private View mHandler;
|
||||||
|
|
||||||
|
private boolean mLargeStyle = true;
|
||||||
|
|
||||||
public synchronized void release() {
|
public synchronized void release() {
|
||||||
sInstance = null;
|
sInstance = null;
|
||||||
}
|
}
|
||||||
@@ -97,9 +111,12 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
|
|||||||
.gravity( Gravity.LEFT | Gravity.TOP )
|
.gravity( Gravity.LEFT | Gravity.TOP )
|
||||||
.position( ResourcesHelper.getDimensionPixelSize( context, R.dimen.module_widgets_app_entrance_x ), ResourcesHelper.getDimensionPixelSize( AbsMogoApplication.getApp(), R.dimen.module_widgets_app_entrance_y ) )
|
.position( ResourcesHelper.getDimensionPixelSize( context, R.dimen.module_widgets_app_entrance_x ), ResourcesHelper.getDimensionPixelSize( AbsMogoApplication.getApp(), R.dimen.module_widgets_app_entrance_y ) )
|
||||||
.showInWindowManager();
|
.showInWindowManager();
|
||||||
mWindowManagerView.attachTouchEvent( view -> {
|
mWindowManagerView.attachTouchEvent( ( view, xPos, yPos ) -> {
|
||||||
enterApp( context );
|
chooseAction( view, xPos, yPos );
|
||||||
} );
|
} );
|
||||||
|
mEnterApp = mWindowManagerView.findViewById( R.id.module_widgets_app_entrance );
|
||||||
|
mConsult = mWindowManagerView.findViewById( R.id.module_widgets_app_consult );
|
||||||
|
mHandler = mWindowManagerView.findViewById( R.id.module_widgets_app_handler );
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if ( mWindowManagerView.isShowing() ) {
|
if ( mWindowManagerView.isShowing() ) {
|
||||||
@@ -113,6 +130,62 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void chooseAction( View root, float xPos, float yPos ) {
|
||||||
|
if ( isInViewArea( mEnterApp, xPos, yPos ) ) {
|
||||||
|
enterApp( root.getContext() );
|
||||||
|
} else if ( isInViewArea( mHandler, xPos, yPos ) ) {
|
||||||
|
handleStyle( mHandler.getContext() );
|
||||||
|
} else if ( isInViewArea( mConsult, xPos, yPos ) ) {
|
||||||
|
consultUser( root.getContext() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isInViewArea( View target, float xPos, float yPos ) {
|
||||||
|
if ( xPos >= target.getLeft()
|
||||||
|
&& xPos <= target.getRight()
|
||||||
|
&& yPos >= target.getTop()
|
||||||
|
&& yPos <= target.getBottom() ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 咨询用户
|
||||||
|
*
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
private void consultUser( Context context ) {
|
||||||
|
Map<String, Object> properties = new HashMap<>();
|
||||||
|
properties.put( "type", 1 );
|
||||||
|
MogoApisHandler.getInstance().getApis().getAnalyticsApi().track( "NAVI_Find_Mogoer", properties );
|
||||||
|
if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageOnResume() ) {
|
||||||
|
MogoApisHandler.getInstance().getApis().getOnlineCarPanelApi().showPanel();
|
||||||
|
} else {
|
||||||
|
Intent start = new Intent( Intent.ACTION_VIEW );
|
||||||
|
start.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
|
||||||
|
start.setData( Uri.parse( "mogo://launcher/main/switch2?type=showOnlineCarPanel" ) );
|
||||||
|
context.startActivity( start );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleStyle( Context context ) {
|
||||||
|
if ( mLargeStyle ) {
|
||||||
|
mEnterApp.setText( R.string.module_widgets_app_entrance_short );
|
||||||
|
mConsult.setText( R.string.module_widgets_app_consult_short );
|
||||||
|
mLargeStyle = false;
|
||||||
|
} else {
|
||||||
|
mEnterApp.setText( R.string.module_widgets_app_entrance_text );
|
||||||
|
mConsult.setText( R.string.module_widgets_app_entrance_consult );
|
||||||
|
mLargeStyle = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进入app
|
||||||
|
*
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
private void enterApp( Context context ) {
|
private void enterApp( Context context ) {
|
||||||
try {
|
try {
|
||||||
if ( DebugConfig.isLauncher() ) {
|
if ( DebugConfig.isLauncher() ) {
|
||||||
@@ -162,7 +235,7 @@ class AutoNaviIntentHandler implements IMogoVoiceCmdCallBack {
|
|||||||
@Override
|
@Override
|
||||||
public void onCmdSelected( String cmd ) {
|
public void onCmdSelected( String cmd ) {
|
||||||
if ( TextUtils.equals( OPEN, cmd ) ) {
|
if ( TextUtils.equals( OPEN, cmd ) ) {
|
||||||
Logger.d(TAG, "recognized open command.");
|
Logger.d( TAG, "recognized open command." );
|
||||||
enterApp( AbsMogoApplication.getApp() );
|
enterApp( AbsMogoApplication.getApp() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,9 @@ package com.mogo.module.widgets;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
|
||||||
import com.alibaba.android.arouter.launcher.ARouter;
|
import com.mogo.commons.storage.SpStorage;
|
||||||
import com.mogo.map.navi.IMogoNaviListener2;
|
import com.mogo.map.navi.IMogoNaviListener2;
|
||||||
|
import com.mogo.module.common.MogoApisHandler;
|
||||||
import com.mogo.service.IMogoServiceApis;
|
import com.mogo.service.IMogoServiceApis;
|
||||||
import com.mogo.service.intent.IMogoIntentListener;
|
import com.mogo.service.intent.IMogoIntentListener;
|
||||||
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
||||||
@@ -60,7 +61,7 @@ class MogoWidgetManger implements IMogoNaviListener2, IMogoIntentListener, IMogo
|
|||||||
|
|
||||||
public void init( Context context ) {
|
public void init( Context context ) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mApis = ARouter.getInstance().navigation( IMogoServiceApis.class );
|
mApis = MogoApisHandler.getInstance().getApis();
|
||||||
initMapStatusListener();
|
initMapStatusListener();
|
||||||
initStatusListener();
|
initStatusListener();
|
||||||
initIntentListener();
|
initIntentListener();
|
||||||
@@ -82,6 +83,7 @@ class MogoWidgetManger implements IMogoNaviListener2, IMogoIntentListener, IMogo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStopNavi() {
|
public void onStopNavi() {
|
||||||
|
SpStorage.setNavigationTarget( "" );
|
||||||
AutoNaviIntentHandler.getInstance().closeEntrance();
|
AutoNaviIntentHandler.getInstance().closeEntrance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<corners android:bottomLeftRadius="@dimen/module_widgets_app_bkg_corner" android:bottomRightRadius="@dimen/module_widgets_app_bkg_corner" android:topLeftRadius="0px" android:topRightRadius="0px" />
|
||||||
|
<solid android:color="#3D3F44" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape>
|
||||||
|
<corners android:bottomLeftRadius="0px" android:bottomRightRadius="0px" android:topLeftRadius="@dimen/module_widgets_app_bkg_corner" android:topRightRadius="@dimen/module_widgets_app_bkg_corner" />
|
||||||
|
<solid android:color="#3D3F44" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
@@ -1,17 +1,66 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/module_widgets_app_entrance_root"
|
android:id="@+id/module_widgets_app_entrance_root"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/module_widgets_app_entrance_img_bkg"
|
|
||||||
android:gravity="center"
|
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/module_widgets_app_handler_container"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/module_widgets_app_entrance_size"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:background="@drawable/module_widgets_app_handler_bkg">
|
||||||
android:text="@string/module_widgets_app_entrance_text"
|
|
||||||
android:textColor="#FFFFFF"
|
<ImageView
|
||||||
android:textSize="@dimen/module_widgets_app_entrance_textSize" />
|
android:id="@+id/module_widgets_app_handler"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="right"
|
||||||
|
android:src="@drawable/ic_1" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/module_widgets_app_body_bkg">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_widgets_app_entrance"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingLeft="@dimen/module_widgets_app_entrance_paddingLeft"
|
||||||
|
android:paddingTop="@dimen/module_widgets_app_entrance_paddingTop"
|
||||||
|
android:paddingRight="@dimen/module_widgets_app_entrance_paddingLeft"
|
||||||
|
android:paddingBottom="@dimen/module_widgets_app_entrance_paddingTop"
|
||||||
|
android:text="@string/module_widgets_app_entrance_text"
|
||||||
|
android:textColor="@color/module_widgets_app_entrance_textColor"
|
||||||
|
android:textSize="@dimen/module_widgets_app_entrance_textSize"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="1px"
|
||||||
|
android:layout_height="50px"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:background="#7FFFFFFF" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/module_widgets_app_consult"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:paddingLeft="@dimen/module_widgets_app_entrance_paddingLeft"
|
||||||
|
android:paddingTop="@dimen/module_widgets_app_entrance_paddingTop"
|
||||||
|
android:paddingRight="@dimen/module_widgets_app_entrance_paddingLeft"
|
||||||
|
android:paddingBottom="@dimen/module_widgets_app_entrance_paddingTop"
|
||||||
|
android:text="@string/module_widgets_app_entrance_consult"
|
||||||
|
android:textColor="@color/module_widgets_app_entrance_textColor"
|
||||||
|
android:textSize="@dimen/module_widgets_app_entrance_textSize"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<dimen name="module_widgets_app_entrance_textSize">20px</dimen>
|
<dimen name="module_widgets_app_entrance_textSize">22px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_padding">15px</dimen>
|
<dimen name="module_widgets_app_entrance_padding">15px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_corner_size">2px</dimen>
|
<dimen name="module_widgets_app_entrance_corner_size">2px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_y">505px</dimen>
|
<dimen name="module_widgets_app_entrance_y">505px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_x">501px</dimen>
|
<dimen name="module_widgets_app_entrance_x">501px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_paddingTop">10px</dimen>
|
<dimen name="module_widgets_app_entrance_paddingTop">20px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_paddingLeft">15px</dimen>
|
<dimen name="module_widgets_app_entrance_paddingLeft">27px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_size">71px</dimen>
|
<dimen name="module_widgets_app_entrance_size">71px</dimen>
|
||||||
|
<dimen name="module_widgets_app_bkg_corner">4px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<dimen name="module_widgets_app_entrance_textSize">20px</dimen>
|
<dimen name="module_widgets_app_entrance_textSize">22px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_padding">15px</dimen>
|
<dimen name="module_widgets_app_entrance_padding">15px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_corner_size">2px</dimen>
|
<dimen name="module_widgets_app_entrance_corner_size">2px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_y">505px</dimen>
|
<dimen name="module_widgets_app_entrance_y">505px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_x">501px</dimen>
|
<dimen name="module_widgets_app_entrance_x">501px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_paddingTop">10px</dimen>
|
<dimen name="module_widgets_app_entrance_paddingTop">20px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_paddingLeft">15px</dimen>
|
<dimen name="module_widgets_app_entrance_paddingLeft">27px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_size">71px</dimen>
|
<dimen name="module_widgets_app_entrance_size">71px</dimen>
|
||||||
|
<dimen name="module_widgets_app_bkg_corner">4px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
<dimen name="module_widgets_app_entrance_corner_size">4px</dimen>
|
<dimen name="module_widgets_app_entrance_corner_size">4px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_y">48px</dimen>
|
<dimen name="module_widgets_app_entrance_y">48px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_x">1000px</dimen>
|
<dimen name="module_widgets_app_entrance_x">1000px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_paddingTop">10px</dimen>
|
<dimen name="module_widgets_app_entrance_paddingTop">37px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_paddingLeft">15px</dimen>
|
<dimen name="module_widgets_app_entrance_paddingLeft">50px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_size">71px</dimen>
|
<dimen name="module_widgets_app_entrance_size">71px</dimen>
|
||||||
|
<dimen name="module_widgets_app_bkg_corner">8px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -5,7 +5,8 @@
|
|||||||
<dimen name="module_widgets_app_entrance_corner_size">4px</dimen>
|
<dimen name="module_widgets_app_entrance_corner_size">4px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_y">48px</dimen>
|
<dimen name="module_widgets_app_entrance_y">48px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_x">1000px</dimen>
|
<dimen name="module_widgets_app_entrance_x">1000px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_paddingTop">10px</dimen>
|
<dimen name="module_widgets_app_entrance_paddingTop">37px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_paddingLeft">15px</dimen>
|
<dimen name="module_widgets_app_entrance_paddingLeft">50px</dimen>
|
||||||
<dimen name="module_widgets_app_entrance_size">71px</dimen>
|
<dimen name="module_widgets_app_entrance_size">71px</dimen>
|
||||||
|
<dimen name="module_widgets_app_bkg_corner">8px</dimen>
|
||||||
</resources>
|
</resources>
|
||||||