diff --git a/app/build.gradle b/app/build.gradle index 4d3fc0e9b1..11fb01ca5c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,11 +4,11 @@ android { compileSdkVersion rootProject.ext.android.compileSdkVersion buildToolsVersion rootProject.ext.android.buildToolsVersion defaultConfig { - applicationId rootProject.ext.android.applicationId minSdkVersion rootProject.ext.android.minSdkVersion targetSdkVersion rootProject.ext.android.targetSdkVersion versionCode rootProject.ext.android.versionCode versionName rootProject.ext.android.versionName + applicationId rootProject.ext.android.applicationId testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" javaCompileOptions { @@ -54,6 +54,16 @@ dependencies { testImplementation rootProject.ext.dependencies.leakcanary releaseImplementation rootProject.ext.dependencies.leakcanarynoop releaseImplementation rootProject.ext.dependencies.androidxmultidex - implementation project(':modules:mogo-module-main') - implementation project(':foudations:mogo-commons') + + if (Boolean.valueOf(RELEASE)) { + api rootProject.ext.dependencies.modulemain + api rootProject.ext.dependencies.mogocommons + implementation rootProject.ext.dependencies.moduledemo + implementation rootProject.ext.dependencies.moduledemo2 + } else { + implementation project(':modules:mogo-module-main') + implementation project(':foudations:mogo-commons') + implementation project(':demo:demo-module-map') + implementation project(':demo:demo-module-map2') + } } diff --git a/build.gradle b/build.gradle index f672c71300..51e13205f9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. apply from: "config.gradle" +apply from: "javadoc.gradle" buildscript { ext.kotlin_version = '1.3.61+' repositories { @@ -38,14 +39,51 @@ allprojects { google() jcenter() // flatDir { - // 由于Library module中引用了 youkuplayer 库的 aar,在多 module 的情况下, - // 其他的module编译会报错,所以需要在所有工程的repositories - // 下把Library module中的libs目录添加到依赖关系中 + // 由于Library module中引用了 youkuplayer 库的 aar,在多 module 的情况下, + // 其他的module编译会报错,所以需要在所有工程的repositories + // 下把Library module中的libs目录添加到依赖关系中 // dirs project(':libraries:map-baidu').file('libs') // } } + } task clean(type: Delete) { delete rootProject.buildDir } + +def getValueFromRootProperties(String key) { + File file = rootProject.file('gradle.properties') + String value = ""; + if (file.exists()) { + //加载资源 + InputStream inputStream = file.newDataInputStream(); + Properties properties = new Properties() + properties.load(inputStream) + + if (properties.containsKey(key)) { + value = properties.getProperty(key) + } + } + return value +} + +afterEvaluate { + rootProject.subprojects { project -> + project.afterEvaluate { + dependencies{ + components { + all { ComponentMetadataDetails details -> + if (details.toString().endsWith("-SNAPSHOT")) { + details.changing = true + } + } + } + } + it.configurations.all { + resolutionStrategy.cacheChangingModulesFor 0, 'minutes' + } + + } + } +} \ No newline at end of file diff --git a/config.gradle b/config.gradle index a1ee099928..62dedc2903 100644 --- a/config.gradle +++ b/config.gradle @@ -14,6 +14,8 @@ ext { androidxappcompat : "androidx.appcompat:appcompat:1.0.2", androidxconstraintlayout: "androidx.constraintlayout:constraintlayout:1.1.3", androidxmultidex : "androidx.multidex:multidex:2.0.1", + androidxviewpager2 : "androidx.viewpager2:viewpager2:1.0.0", + androidxrecyclerview : "androidx.recyclerview:recyclerview:1.1.0", // 测试 junit : "junit:junit:4.12", androidxjunit : "androidx.test.ext:junit:1.1.0", @@ -56,5 +58,24 @@ ext { // leakcanary leakcanary : 'com.squareup.leakcanary:leakcanary-android:1.5.4', leakcanarynoop : 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4', + + // material + material : 'com.google.android.material:material:1.0.0', + + + // modules + moduledemo : "com.mogo.module:module-demo:${DEMO_MODULE_MAP_VERSION}", + moduledemo2 : "com.mogo.module:module-demo:${DEMO_MODULE_MAP2_VERSION}", + mogocommons : "com.mogo.commons:mogo-commons:${MOGO_COMMONS_VERSION}", + mogoutils : "com.mogo.commons:mogo-utils:${MOGO_UTILS_VERSION}", + mapamap : "com.mogo.map:map-amap:${MAP_AMAP_VERSION}", + mogomap : "com.mogo.map:mogo-map:${MOGO_MAP_VERSION}", + mogomapapi : "com.mogo.map:mogo-map-api:${MOGO_MAP_API_VERSION}", + modulecommon : "com.mogo.module:module-common:${MOGO_MODULE_COMMON_VERSION}", + modulemain : "com.mogo.module:module-main:${MOGO_MODULE_MAIN_VERSION}", + modulemap : "com.mogo.module:module-map:${MOGO_MODULE_MAP_VERSION}", + mogoservice : "com.mogo.service:mogo-service:${MOGO_SERVICE_VERSION}", + mogoserviceapi : "com.mogo.service:mogo-service-api:${MOGO_SERVICE_API_VERSION}", + moduleapps : "com.mogo.module:module-apps:${MOGO_MODULE_APPS_VERSION}", ] } \ No newline at end of file diff --git a/demo/demo-module-map/build.gradle b/demo/demo-module-map/build.gradle index 0290a16845..4cdc37ad48 100644 --- a/demo/demo-module-map/build.gradle +++ b/demo/demo-module-map/build.gradle @@ -2,15 +2,13 @@ apply plugin: 'com.android.library' apply plugin: 'com.alibaba.arouter' android { - compileSdkVersion 29 - buildToolsVersion "29.0.2" - - + compileSdkVersion rootProject.ext.android.compileSdkVersion + buildToolsVersion rootProject.ext.android.buildToolsVersion defaultConfig { - minSdkVersion 19 - targetSdkVersion 29 - versionCode 1 - versionName "1.0" + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode Integer.valueOf(VERSION_CODE) + versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' @@ -34,13 +32,22 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(":libraries:mogo-map") - implementation project(":foudations:mogo-utils") - api project(":foudations:mogo-commons") - implementation project(':services:mogo-service-api') - implementation project(':modules:mogo-module-common') + if (Boolean.valueOf(RELEASE)) { + implementation rootProject.ext.dependencies.mogomap + implementation rootProject.ext.dependencies.mogoutils + implementation rootProject.ext.dependencies.mogocommons + implementation rootProject.ext.dependencies.mogoserviceapi + implementation rootProject.ext.dependencies.modulecommon + } else { + implementation project(":libraries:mogo-map") + implementation project(":foudations:mogo-utils") + api project(":foudations:mogo-commons") + implementation project(':services:mogo-service-api') + implementation project(':modules:mogo-module-common') + } implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler } +apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() diff --git a/demo/demo-module-map/gradle.properties b/demo/demo-module-map/gradle.properties new file mode 100644 index 0000000000..cc80da2676 --- /dev/null +++ b/demo/demo-module-map/gradle.properties @@ -0,0 +1,3 @@ +GROUP=com.mogo.module +POM_ARTIFACT_ID=module-demo +VERSION_CODE=1 diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java index 5845a754b9..25c2a73663 100644 --- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java @@ -1,11 +1,8 @@ package com.mogo.demo.module.map; -import android.app.AlertDialog; -import android.content.DialogInterface; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; -import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.Button; @@ -38,6 +35,7 @@ import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.service.MogoServicePaths; +import com.mogo.service.imageloader.IMogoImageloader; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.utils.TipToast; @@ -84,6 +82,9 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > private IMogoMapUIController mMapUIController; private DemoInfoWindowAdapter mDemoInfoWindowAdapter; + private MogoLocation mLocation; + + private IMogoImageloader mImageloader; @Override protected int getLayoutId() { @@ -96,10 +97,11 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > mNaviMode = findViewById( R.id.demo_module_id_navi_mode ); mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( getContext() ); + mImageloader = ( IMogoImageloader ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_IMAGE_LOADER ).navigation( getContext() ); mPoiSearch = mMapService.getPoiSearch( getContext(), new MogoPoiSearchQuery() ); mPoiSearch.setPoiSearchListener( this ); - mLocationClient = mMapService.getSingletonLocationClient( getContext() ); - mLocationClient.addLocationListener( this ); + mLocationClient = mMapService.getLocationClient( getContext() ); + mLocation = mLocationClient.getLastKnowLocation(); mMarkerManager = mMapService.getMarkerManager( getContext() ); mNavi = mMapService.getNavi( getContext() ); mMapUIController = mMapService.getMapUIController(); @@ -112,12 +114,12 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > new View.OnClickListener() { @Override public void onClick( View v ) { - mLocationClient.start( 1_000L ); + mLocationClient.start( 4_000L ); } } ); - mDemoInfoWindowAdapter = new DemoInfoWindowAdapter( getContext(), mNavi ); + mDemoInfoWindowAdapter = new DemoInfoWindowAdapter( getContext(), mNavi, mImageloader ); mMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_search_poi_location ); mClickedMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_search_choice_point ); @@ -128,6 +130,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > MogoMarkerOptions options = new MogoMarkerOptions() .icon( mMarkerIcon ) .latitude( 39.974525d ) + .owner( DemoConstants.TAG ) .longitude( 116.41733d ); IMogoMarker marker = mMarkerManager.addMarker( DemoConstants.TAG, options ); marker.setInfoWindowAdapter( mDemoInfoWindowAdapter ); @@ -142,9 +145,14 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > ArrayList< MogoMarkerOptions > optionsList = new ArrayList<>(); for ( int i = 0; i < 10; i++ ) { MogoMarkerOptions options = new MogoMarkerOptions() - .icon( mMarkerIcon ) + .owner( DemoConstants.TAG ) .latitude( 39.974525d + new Random().nextDouble() ) .longitude( 116.41733d + new Random().nextDouble() ); + if ( i % 2 == 0 ) { + options.icon( mMarkerIcon ); + } else { + options.icon( mDemoInfoWindowAdapter.getMarkerView( options ) ); + } optionsList.add( options ); } List< IMogoMarker > iMogoMarkers = mMarkerManager.addMarkers( DemoConstants.TAG, optionsList, true ); @@ -176,7 +184,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > findViewById( R.id.demo_module_id_current ).setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { - mMapUIController.moveToCurrentLocation(); + mMapUIController.moveToCenter( new MogoLatLng( mLocation.getLatitude(), mLocation.getLongitude() ) ); } } ); @@ -251,6 +259,14 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > mMapUIController.recoverLockMode(); } } ); + + mLocationClient.addLocationListener( new IMogoLocationListener() { + @Override + public void onLocationChanged( MogoLocation location ) { + mLocation = location; + Logger.d( TAG, "demo模块定位,定位间隔4s" ); + } + } ); } @Override @@ -261,13 +277,13 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public boolean onMarkerClicked( IMogoMarker marker ) { - if ( mLastClickedMarker != null ) { - mLastClickedMarker.setIcon( this.mMarkerIcon ); - } - marker.setIcon( mClickedMarkerIcon ); - mLastClickedMarker = marker; +// if ( mLastClickedMarker != null ) { +// mLastClickedMarker.setIcon( this.mMarkerIcon ); +// } +// marker.setIcon( mClickedMarkerIcon ); +// mLastClickedMarker = marker; - marker.showInfoWindow(); +// marker.showInfoWindow(); return true; } @@ -280,12 +296,12 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onPerform() { - TipToast.shortTip( "卡片有效" ); + Logger.d( TAG, "卡片demo有效" ); } @Override public void onDisable() { - TipToast.shortTip( "卡片无效" ); + Logger.d( TAG, "卡片demo无效" ); } @@ -335,8 +351,8 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onLocationChanged( MogoLocation location ) { - mLocationClient.stop(); - Logger.i( TAG, location.toString() ); + mLocation = location; + Logger.i( TAG, "接受到的地图模块定位信息" ); if ( mLocInfo != null ) { if ( location.getErrCode() == 0 ) { mLocInfo.setText( "当前位置:" + location.getAddress() ); @@ -363,6 +379,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onDestroyView() { + Logger.w( TAG, "onDestroyView" ); super.onDestroyView(); getViewLifecycleOwner().getLifecycle().removeObserver( mPresenter ); mLocationClient.removeLocationListener( this ); diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java index 4c6f0c0c55..bc5287e8dc 100644 --- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java @@ -2,16 +2,28 @@ package com.mogo.demo.module.map; import android.content.Context; import android.os.Bundle; +import android.view.MotionEvent; import android.view.View; import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.map.MogoLatLng; import com.mogo.map.listener.IMogoMapListener; +import com.mogo.map.location.IMogoLocationListener; +import com.mogo.map.location.MogoLocation; +import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.marker.IMogoMarkerClickListener; +import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.map.search.geo.MogoPoiItem; +import com.mogo.map.search.poisearch.IMogoPoiSearchListener; +import com.mogo.map.search.poisearch.MogoPoiResult; +import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoModulePaths; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; +import com.mogo.utils.logger.Logger; /** * @author congtaowang @@ -22,12 +34,15 @@ import com.mogo.service.module.IMogoModuleProvider; @Route( path = MogoModulePaths.PATH_MODULE_DEMO ) public class DemoCardViewProvider implements IMogoModuleProvider { + private static final String TAG = "DemoCardViewProvider"; + private DemoCardViewFragment fragment; @Override public Fragment createFragment( Context context, Bundle data ) { fragment = new DemoCardViewFragment(); fragment.setArguments( data ); + Logger.i( TAG, "createFragment" ); return fragment; } @@ -41,22 +56,12 @@ public class DemoCardViewProvider implements IMogoModuleProvider { return DemoConstants.TAG; } - @Override - public IMogoModuleLifecycle getCardLifecycle() { - return fragment; - } - @Override public View createView( Context context ) { // don't return null; } - @Override - public IMogoMapListener getMapListener() { - return fragment; - } - @Override public int getType() { return IMogoModuleProvider.TYPE_FRAGMENT; @@ -66,4 +71,20 @@ public class DemoCardViewProvider implements IMogoModuleProvider { public IMogoNaviListener getNaviListener() { return null; } + + + @Override + public IMogoModuleLifecycle getCardLifecycle() { + return fragment; + } + + @Override + public IMogoMapListener getMapListener() { + return fragment; + } + + @Override + public IMogoLocationListener getLocationListener() { + return fragment; + } } diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java index f0fb866a28..e5e0dc8043 100644 --- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java @@ -1,6 +1,7 @@ package com.mogo.demo.module.map; import android.content.Context; +import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -8,9 +9,16 @@ import android.widget.TextView; import com.mogo.map.marker.IMogoInfoWindowAdapter; import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.MogoNaviConfig; import com.mogo.map.search.geo.MogoPoiItem; +import com.mogo.service.imageloader.IMogoImageLoaderListener; +import com.mogo.service.imageloader.IMogoImageloader; +import com.mogo.service.imageloader.MogoImageView; +import com.mogo.utils.WindowUtils; +import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.utils.Util; import java.text.SimpleDateFormat; import java.util.Date; @@ -23,12 +31,16 @@ import java.util.Date; */ public class DemoInfoWindowAdapter implements IMogoInfoWindowAdapter { + private static final String TAG = "DemoInfoWindowAdapter"; + private Context mContext; private IMogoNavi mNavi; + private IMogoImageloader mImageloader; - public DemoInfoWindowAdapter( Context mContext, IMogoNavi mNavi ) { + public DemoInfoWindowAdapter( Context mContext, IMogoNavi mNavi, IMogoImageloader iMogoImageloader ) { this.mContext = mContext; this.mNavi = mNavi; + this.mImageloader = iMogoImageloader; } @Override @@ -90,5 +102,31 @@ public class DemoInfoWindowAdapter implements IMogoInfoWindowAdapter { } } ); } + + public View getMarkerView( final MogoMarkerOptions options ) { + final View view = LayoutInflater.from( mContext ).inflate( R.layout.demo_module_demo_bubble_marker, null ); + final MogoImageView icon = view.findViewById( R.id.icon ); + mImageloader.displayImage( "http://imgnews.gmw.cn/attachement/jpg/site2/20191229/00d86176ed0b1f71f4580f.jpg", icon, WindowUtils.dip2px( mContext, 50 ), WindowUtils.dip2px( mContext, 50 ), + new IMogoImageLoaderListener() { + @Override + public void onStart() { + + } + + @Override + public void onCompleted( Bitmap bitmap ) { + // 刷新图标 + Logger.d( TAG, "loaded." ); + options.icon( view ); + options.notifyObservers(); + } + + @Override + public void onFailure( Exception e ) { + + } + } ); + return view; + } } diff --git a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml index 75efba6ac9..3a5cf150c4 100644 --- a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml +++ b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml @@ -1,159 +1,152 @@ - + + + + - - - - - -