diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 77f6cae560..8853517620 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -79,7 +79,6 @@
-
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/marker/PoiWrapper.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/marker/PoiWrapper.java
new file mode 100644
index 0000000000..dbaeb372c9
--- /dev/null
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/marker/PoiWrapper.java
@@ -0,0 +1,85 @@
+package com.mogo.module.common.marker;
+
+/**
+ * poi信息封装
+ *
+ * @author tongchenfei
+ */
+public class PoiWrapper {
+ private int id;
+ private String poiType;
+ private int iconRes;
+ private int iconInfoRes;
+ private String iconUrl = "";
+ // "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/VN000012.jpg";
+ private String iconInfoUrl = "";
+ // "http://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/sso-server-image/1596705960869.png";
+ private String title = "拥堵";
+
+ public PoiWrapper(){
+
+ }
+
+ public PoiWrapper(String poiType, int iconRes,int iconInfoRes, String title) {
+ this.poiType = poiType;
+ this.iconRes = iconRes;
+ this.iconInfoRes = iconInfoRes;
+ this.title = title;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getPoiType() {
+ return poiType;
+ }
+
+ public void setPoiType(String poiType) {
+ this.poiType = poiType;
+ }
+
+ public int getIconRes() {
+ return iconRes;
+ }
+
+ public void setIconRes(int iconRes) {
+ this.iconRes = iconRes;
+ }
+
+ public String getIconUrl() {
+ return iconUrl;
+ }
+
+ public void setIconUrl(String iconUrl) {
+ this.iconUrl = iconUrl;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public int getIconInfoRes() {
+ return iconInfoRes;
+ }
+
+ public void setIconInfoRes(int iconInfoRes) {
+ this.iconInfoRes = iconInfoRes;
+ }
+
+ public String getIconInfoUrl() {
+ return iconInfoUrl;
+ }
+
+ public void setIconInfoUrl(String iconInfoUrl) {
+ this.iconInfoUrl = iconInfoUrl;
+ }
+}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
index c790f05e65..4ffecc4c40 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
@@ -15,9 +15,12 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
+import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder;
+import com.facebook.drawee.interfaces.DraweeController;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.module.common.entity.MarkerShowEntity;
+import com.mogo.module.common.marker.PoiWrapper;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
@@ -39,7 +42,7 @@ public abstract class MapMarkerBaseView extends LinearLayout implements IMarkerV
protected Context mContext;
protected MogoMarkerOptions mOptions;
protected MogoImageView ivUserHead;
- protected ImageView ivIcon;
+ protected MogoImageView ivIcon;
protected ImageView ivCar;
protected IMogoMarker mMarker;
@@ -81,6 +84,48 @@ public abstract class MapMarkerBaseView extends LinearLayout implements IMarkerV
}
}
+ protected void loadPoiTypeIcon(String url,int res) {
+ if ( Looper.myLooper() != Looper.getMainLooper() ) {
+ UiThreadHandler.post( ()-> loadPoiTypeIconInUiThread(url, res));
+ } else {
+ loadPoiTypeIconInUiThread(url, res);
+ }
+ }
+
+ private void loadPoiTypeIconInUiThread(String url,int res) {
+ if (!url.isEmpty()) {
+ ivIcon.setPlaceHolder(res);
+ ivIcon.setFailureHolder(res);
+ MarkerServiceHandler.getImageloader().displayImage(url,
+ ivIcon, WindowUtils.dip2px(mContext, 50), WindowUtils.dip2px(mContext, 50),
+ new IMogoImageLoaderListener() {
+ @Override
+ public void onStart() {
+
+ }
+
+ @Override
+ public void onCompleted(Bitmap bitmap) {
+ Logger.d(TAG, "loadImageWithMarker loaded.");
+ // 使用view渲染地图marker,刷新纹理的时候,需要重新用view生成纹理,然后在设置
+ if (mMarker != null) {
+ mMarker.setIcon(fromView(MapMarkerBaseView.this));
+ }
+ }
+
+ @Override
+ public void onFailure(Exception e) {
+ Logger.e(TAG, "loadImageWithMarker onFailure.");
+ }
+ });
+ }else{
+ ivIcon.setImageResource(res);
+ }
+ if (mMarker != null) {
+ mMarker.setIcon(fromView(MapMarkerBaseView.this));
+ }
+ }
+
private void runOnUiThread(final MarkerShowEntity markerShowEntity){
if (!TextUtils.isEmpty(markerShowEntity.getIconUrl())) {
MarkerServiceHandler.getImageloader().displayImage(markerShowEntity.getIconUrl(),
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java
index b106e6f283..bf3e59126e 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java
@@ -16,8 +16,11 @@ import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.entity.MarkerShareMusic;
import com.mogo.module.common.entity.MarkerShowEntity;
+import com.mogo.module.common.marker.PoiWrapper;
import com.mogo.module.service.R;
import com.mogo.module.service.ServiceConst;
+import com.mogo.utils.glide.GlideApp;
+import com.mogo.utils.logger.Logger;
/**
* author : donghongyu
@@ -51,16 +54,19 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
updateView( markerShowEntity );
}
+ @Override
protected void initView( Context context ) {
LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout_info, this );
ivUserHead = findViewById( R.id.ivUserHead );
- ivIcon = findViewById( R.id.ivIcon );
+// ivIcon = findViewById( R.id.ivIcon );
+ ivIcon = findViewById(R.id.ivIcon);
clMarkerContent = findViewById( R.id.clMarkerContent );
ivReverseTriangle = findViewById( R.id.ivReverseTriangle );
ivCar = findViewById( R.id.ivCar );
tvMarkerContent = findViewById( R.id.tvMarkerContent );
}
+ @Override
public void updateView( MarkerShowEntity markerShowEntity ) {
try {
@@ -85,58 +91,15 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
ivIcon.setVisibility( View.VISIBLE );
if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) {
- switch ( ( ( MarkerExploreWay ) bindObj ).getPoiType() ) {
- case MarkerPoiTypeEnum.GAS_STATION:
- ivIcon.setImageResource( R.drawable.icon_map_marker_refuel );
- break;
- case MarkerPoiTypeEnum.TRAFFIC_CHECK:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_check2_white );
- break;
- case MarkerPoiTypeEnum.ROAD_CLOSED:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_off2_white );
- break;
- case MarkerPoiTypeEnum.SHOP_DISCOUNT:
- ivIcon.setImageResource( R.drawable.icon_map_marker_shop_discount );
- break;
- case MarkerPoiTypeEnum.FOURS_4S:
- ivIcon.setImageResource( R.drawable.icon_map_marker_4s );
- break;
- case MarkerPoiTypeEnum.FOURS_ROAD_WORK:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_work2_white );
- break;
- case MarkerPoiTypeEnum.FOURS_BLOCK_UP:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_white );
- break;
- case MarkerPoiTypeEnum.FOURS_PONDING:
- ivIcon.setImageResource( R.drawable.icon_map_marker_pondingl2_white );
- break;
- case MarkerPoiTypeEnum.FOURS_SHOP_FREE:
- ivIcon.setImageResource( R.drawable.icon_map_marker_shop );
- break;
- case MarkerPoiTypeEnum.FOURS_FOG:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_dark_frog2_white );
- break;
- case MarkerPoiTypeEnum.FOURS_ICE:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_freeze2_white );
- break;
- case MarkerPoiTypeEnum.FOURS_PARKING:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_parking2 );
- break;
- case MarkerPoiTypeEnum.FOURS_ACCIDENT:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_accident3_white );
- break;
- case MarkerPoiTypeEnum.FOURS_NEALY:
- ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news );
- break;
- case MarkerPoiTypeEnum.FOURS_LIVING:
- ivIcon.setImageResource( R.drawable.icon_map_marker_living_white );
- break;
- case MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_illegal_park_white );
- break;
- default:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_white );
- break;
+ // 根据poiType获取对应的图片
+ String poiType = ((MarkerExploreWay) bindObj).getPoiType();
+ PoiWrapper poiWrapper =
+ MapMarkerManager.getInstance().getWrapperByPoiType(poiType);
+ if (poiWrapper != null) {
+ // 加载图片
+ loadPoiTypeIcon(poiWrapper.getIconInfoUrl(),poiWrapper.getIconInfoRes());
+ }else{
+ Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染info marker====" + poiType);
}
}
break;
@@ -162,6 +125,8 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
}
}
+ break;
+ default:
break;
}
if ( !TextUtils.isEmpty( markerShowEntity.getTextContent() ) ) {
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
index d6830582c0..cd352781d6 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
@@ -3,6 +3,7 @@ package com.mogo.module.service.marker;
import android.content.Context;
import android.graphics.Rect;
import android.text.TextUtils;
+import android.util.ArrayMap;
import android.view.animation.LinearInterpolator;
import com.mogo.commons.AbsMogoApplication;
@@ -22,9 +23,11 @@ import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.MarkerNoveltyInfo;
import com.mogo.module.common.entity.MarkerOnlineCar;
+import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.common.entity.MarkerShareMusic;
import com.mogo.module.common.entity.MarkerShowEntity;
+import com.mogo.module.common.marker.PoiWrapper;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R;
import com.mogo.module.service.ServiceConst;
@@ -41,6 +44,8 @@ import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.utils.GsonUtil;
+import com.mogo.utils.storage.SharedPrefsMgr;
import org.json.JSONArray;
import org.json.JSONException;
@@ -107,7 +112,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
mContext = context.getApplicationContext();
mRefreshModel = new RefreshModel( mContext );
-
+ updateIconWithPoiType();
MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this );
MarkerServiceHandler.getApis().getRegisterCenterApi().registerADASControlStatusChangedListener( TAG, this );
@@ -204,6 +209,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object;
markerShowEntity.setChecked( true );
IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() );
+ markerView.setMarker(mogoMarker);
if ( markerView instanceof OnlineCarMarkerView ) {
try {
mogoMarker.setIcon( markerView.getBitmap( ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getCarInfo().getVehicleType() ) );
@@ -249,6 +255,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object;
markerShowEntity.setChecked( false );
IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() );
+ markerView.setMarker(mogoMarker);
if ( markerView instanceof OnlineCarMarkerView ) {
try {
mogoMarker.setIcon( markerView.getBitmap( ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getCarInfo().getVehicleType() ) );
@@ -1025,4 +1032,67 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
mLastCheckMarker = null;
}
}
+
+ private Map poiIconMap = new ArrayMap<>();
+ public void updateIconWithPoiType(){
+ // 先生成本地默认map
+ poiIconMap.put(MarkerPoiTypeEnum.GAS_STATION, new PoiWrapper(MarkerPoiTypeEnum.GAS_STATION,R.drawable.icon_map_marker_refuel,
+ R.drawable.icon_map_marker_refuel, "加油站"));
+ poiIconMap.put(MarkerPoiTypeEnum.TRAFFIC_CHECK, new PoiWrapper(MarkerPoiTypeEnum.TRAFFIC_CHECK,
+ R.drawable.icon_map_marker_road_check2,R.drawable.icon_map_marker_road_check2_white, "交通检查"));
+ poiIconMap.put(MarkerPoiTypeEnum.ROAD_CLOSED, new PoiWrapper(MarkerPoiTypeEnum.ROAD_CLOSED,
+ R.drawable.icon_map_marker_road_block_off2,R.drawable.icon_map_marker_road_block_off2_white, "封路"));
+ poiIconMap.put(MarkerPoiTypeEnum.SHOP_DISCOUNT, new PoiWrapper(MarkerPoiTypeEnum.SHOP_DISCOUNT,
+ R.drawable.icon_map_marker_shop_discount,R.drawable.icon_map_marker_shop_discount, "商场打折"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_4S, new PoiWrapper(MarkerPoiTypeEnum.FOURS_4S,
+ R.drawable.icon_map_marker_4s,R.drawable.icon_map_marker_4s, "4S店"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_ROAD_WORK, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ROAD_WORK,
+ R.drawable.icon_map_marker_road_work2,R.drawable.icon_map_marker_road_work2_white, "施工"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_BLOCK_UP, new PoiWrapper(MarkerPoiTypeEnum.FOURS_BLOCK_UP,
+ R.drawable.icon_map_marker_road_block_up2,R.drawable.icon_map_marker_road_block_up2_white, "拥堵"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_PONDING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PONDING,
+ R.drawable.icon_map_marker_pondingl2,R.drawable.icon_map_marker_pondingl2_white, "积水"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_SHOP_FREE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_SHOP_FREE,
+ R.drawable.icon_map_marker_shop,R.drawable.icon_map_marker_shop, "超时打折"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_FOG, new PoiWrapper(MarkerPoiTypeEnum.FOURS_FOG,
+ R.drawable.module_service_ic_rc_dark_frog2,R.drawable.module_service_ic_rc_dark_frog2_white, "浓雾"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_ICE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ICE,
+ R.drawable.module_service_ic_rc_freeze2,R.drawable.module_service_ic_rc_freeze2_white, "结冰"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_PARKING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PARKING,
+ R.drawable.module_service_ic_rc_parking2,R.drawable.module_service_ic_rc_parking2, "停车场"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_ACCIDENT, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT,
+ R.drawable.module_service_ic_rc_accident3,R.drawable.module_service_ic_rc_accident3_white, "事故"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_NEALY, new PoiWrapper(MarkerPoiTypeEnum.FOURS_NEALY,
+ R.drawable.icon_map_marker_shear_news,R.drawable.icon_map_marker_shear_news, "身边"));
+ poiIconMap.put(MarkerPoiTypeEnum.FOURS_LIVING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_LIVING,
+ R.drawable.icon_map_marker_living,R.drawable.icon_map_marker_living_white, "实时路况"));
+ poiIconMap.put(MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING, new PoiWrapper(MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING,
+ R.drawable.module_service_ic_rc_illegal_park,R.drawable.module_service_ic_rc_illegal_park_white, "违章停车"));
+ // 从sp中获取config属性,将服务端配置内容合并到本地
+ String config = SharedPrefsMgr.getInstance(mContext).getString("SHARE_BUTTON_CONFIG", "");
+ if (!config.isEmpty()) {
+ List configWrappers = GsonUtil.arrayFromJson(config, PoiWrapper.class);
+ if(configWrappers!=null) {
+ for (PoiWrapper wrapper : configWrappers) {
+ wrapper.setIconInfoRes(R.drawable.icon_map_marker_road_block_up2_white);
+ wrapper.setIconRes(R.drawable.icon_map_marker_road_block_up2);
+ if(poiIconMap.containsKey(wrapper.getPoiType())) {
+ PoiWrapper defWrapper = poiIconMap.get(wrapper.getPoiType());
+ if(defWrapper!=null) {
+ wrapper.setIconRes(defWrapper.getIconRes());
+ wrapper.setIconInfoRes(defWrapper.getIconInfoRes());
+ }
+ }
+ poiIconMap.put(wrapper.getPoiType(), wrapper);
+ }
+ }else{
+ Logger.e(TAG, "解析configWrapper异常: " + config);
+ }
+ }
+ }
+
+ public PoiWrapper getWrapperByPoiType(String poiType) {
+ return poiIconMap.get(poiType);
+ }
+
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
index f9664bcc23..cecd7b4908 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java
@@ -10,8 +10,11 @@ import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.entity.MarkerShowEntity;
+import com.mogo.module.common.marker.PoiWrapper;
import com.mogo.module.service.R;
import com.mogo.module.service.ServiceConst;
+import com.mogo.utils.glide.GlideApp;
+import com.mogo.utils.logger.Logger;
/**
* author : donghongyu
@@ -41,12 +44,14 @@ public class MapMarkerView extends MapMarkerBaseView {
updateView( markerShowEntity );
}
+ @Override
protected void initView( Context context ) {
LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout, this );
ivIcon = findViewById( R.id.ivIcon );
ivCar = findViewById( R.id.ivCar );
}
+ @Override
public void updateView( MarkerShowEntity markerShowEntity ) {
try {
Object bindObj = markerShowEntity.getBindObj();
@@ -54,59 +59,20 @@ public class MapMarkerView extends MapMarkerBaseView {
case ServiceConst.CARD_TYPE_ROAD_CONDITION:
case ServiceConst.CARD_TYPE_NOVELTY:
if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) {
- switch ( ( ( MarkerExploreWay ) bindObj ).getPoiType() ) {
- case MarkerPoiTypeEnum.GAS_STATION:
- ivIcon.setImageResource( R.drawable.icon_map_marker_refuel );
- break;
- case MarkerPoiTypeEnum.TRAFFIC_CHECK:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_check2 );
- break;
- case MarkerPoiTypeEnum.ROAD_CLOSED:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_off2 );
- break;
- case MarkerPoiTypeEnum.SHOP_DISCOUNT:
- ivIcon.setImageResource( R.drawable.icon_map_marker_shop_discount );
- break;
- case MarkerPoiTypeEnum.FOURS_4S:
- ivIcon.setImageResource( R.drawable.icon_map_marker_4s );
- break;
- case MarkerPoiTypeEnum.FOURS_ROAD_WORK:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_work2 );
- break;
- case MarkerPoiTypeEnum.FOURS_BLOCK_UP:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2 );
- break;
- case MarkerPoiTypeEnum.FOURS_PONDING:
- ivIcon.setImageResource( R.drawable.icon_map_marker_pondingl2 );
- break;
- case MarkerPoiTypeEnum.FOURS_SHOP_FREE:
- ivIcon.setImageResource( R.drawable.icon_map_marker_shop );
- break;
- case MarkerPoiTypeEnum.FOURS_FOG:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_dark_frog2 );
- break;
- case MarkerPoiTypeEnum.FOURS_ICE:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_freeze2 );
- break;
- case MarkerPoiTypeEnum.FOURS_ACCIDENT:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_accident3 );
- break;
- case MarkerPoiTypeEnum.FOURS_NEALY:
- ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news );
- break;
- case MarkerPoiTypeEnum.FOURS_LIVING:
- ivIcon.setImageResource( R.drawable.icon_map_marker_living );
- break;
- case MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING:
- ivIcon.setImageResource( R.drawable.module_service_ic_rc_illegal_park );
- break;
- case MarkerPoiTypeEnum.FOURS_PARKING:
- default:
- ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2 );
- break;
+ // 根据poiType获取对应的图片
+ String poiType = ((MarkerExploreWay) bindObj).getPoiType();
+ PoiWrapper poiWrapper =
+ MapMarkerManager.getInstance().getWrapperByPoiType(poiType);
+ if (poiWrapper != null) {
+ // 加载图片
+ loadPoiTypeIcon(poiWrapper.getIconUrl(),poiWrapper.getIconRes());
+ }else{
+ Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType);
}
}
break;
+ default:
+ break;
}
} catch ( Exception e ) {
diff --git a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
index c8b06a6245..d056cf267e 100644
--- a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
+++ b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
@@ -15,7 +15,7 @@
android:background="@drawable/module_services_marker_bkg"
android:layout_height="@dimen/module_service_marker_bubble_height">
-
- = ArrayMap()
+ properties["type"] = 9999
+ properties["from"] = from
+ AnalyticsUtils.track("v2x_share_type", properties)
+
ServiceApisManager.serviceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) {
override fun onSuccess(o: BaseData?) {
super.onSuccess(o)
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java
index d1f9b455a4..bc638a88b4 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java
@@ -69,7 +69,6 @@ public class V2XShareEventsFragment extends MvpFragment {
close();
});
- mVideoView.setOnClickListener(v -> {
- mThumbnailImageView.setVisibility(View.GONE);
- if (mVideoView.isPlaying()) {
- videoPause();
- } else {
- videoResume();
+ simpleCoverVideoPlayer.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Log.d(TAG, "onClick啦啦啦啦啦啦啦啦");
+ if (simpleCoverVideoPlayer.getCurrentState() == GSYVideoView.CURRENT_STATE_PAUSE) {/*播放中*/
+ resume();
+ } else {
+ pause();
+ }
}
});
}
+ /*
+ * 开始播放
+ * */
+ private void startPlayWithVideoUrl(String videoUrl) {
+ gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG)
+ .build(simpleCoverVideoPlayer);
+ simpleCoverVideoPlayer.getStartButton().performClick();
+ thumbnailImage.setVisibility(View.GONE);
+ playImageView.setVisibility(View.GONE);
+ playImageView.setImageResource(R.drawable.v2x_video_pause);
+ playImageView.setVisibility(View.GONE);
+ }
+
+ /*
+ * 暂停
+ * */
+ private void pause() {
+ playImageView.setVisibility(View.VISIBLE);
+ thumbnailImage.setVisibility(View.GONE);
+ playImageView.setOnClickListener(v -> {
+ simpleCoverVideoPlayer.onVideoResume();
+ });
+ thumbnailImage.setOnClickListener(v -> {
+ simpleCoverVideoPlayer.onVideoResume();
+ });
+ }
+
+ /*
+ * 继续
+ * */
+ private void resume() {
+ playImageView.setVisibility(View.GONE);
+ thumbnailImage.setVisibility(View.GONE);
+ }
+
+ /*
+ * 播放结束后
+ * */
+ private void complete(Bitmap firstbitmap, String path) {
+ thumbnailImage.setVisibility(View.VISIBLE);
+ thumbnailImage.setImageBitmap(firstbitmap);
+ playImageView.setImageResource(R.drawable.v2x_icon_event_play);
+ playImageView.setVisibility(View.VISIBLE);
+ playImageView.setOnClickListener(v -> {
+ startPlayWithVideoUrl(path);
+ });
+ thumbnailImage.setOnClickListener(v -> {
+ startPlayWithVideoUrl(path);
+ });
+ }
+
@Override
public void show(Object entity) {
V2XEventShowEntity showEntity = (V2XEventShowEntity) entity;
@@ -82,68 +156,110 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID
return;
}
if (path.contains(".mp4")) {
- videoViewStartWithPath(path);
+ startPlayWithVideoUrl(path);
+ Bitmap firstbitmap = BitmapHelper.getVideoThumbnail(path);/*获取第一帧图*/
- mVideoView.setOnCompletionListener(mediaPlayer -> {
- Logger.w(MODULE_NAME, "视频播放结束...");
- videoPlayEnd(path);
+ simpleCoverVideoPlayer.setVideoAllCallBack(new VideoAllCallBack() {
+ @Override
+ public void onAutoComplete(String url, Object... objects) {
+ complete(firstbitmap, path);
+ }
+
+ @Override
+ public void onClickResume(String url, Object... objects) {
+ thumbnailImage.setVisibility(View.GONE);
+ playImageView.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onClickStop(String url, Object... objects) {
+ Log.d(TAG,"onClickStop");
+ }
+
+ @Override
+ public void onStartPrepared(String url, Object... objects) {
+ Log.d(TAG,"onStartPrepared");
+ }
+
+ @Override
+ public void onPrepared(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickStartIcon(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickStartError(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickStopFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickResumeFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickSeekbar(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickSeekbarFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onEnterFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onQuitFullscreen(String url, Object... objects) {
+ }
+
+ @Override
+ public void onQuitSmallWidget(String url, Object... objects) {
+ }
+
+ @Override
+ public void onEnterSmallWidget(String url, Object... objects) {
+ }
+
+ @Override
+ public void onTouchScreenSeekVolume(String url, Object... objects) {
+ }
+
+ @Override
+ public void onTouchScreenSeekPosition(String url, Object... objects) {
+ }
+
+ @Override
+ public void onTouchScreenSeekLight(String url, Object... objects) {
+ }
+
+ @Override
+ public void onPlayError(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickStartThumb(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickBlank(String url, Object... objects) {
+ }
+
+ @Override
+ public void onClickBlankFullscreen(String url, Object... objects) {
+ Log.d(TAG, "onClickBlankFullscreen");
+
+ }
});
-
}
}
}
- /*
- * 视频开始播放
- * */
- private void videoViewStartWithPath(String path) {
- mVideoView.setVisibility(VISIBLE);
- mVideoView.setVideoPath(path);
- mVideoView.setOnPreparedListener(mediaPlayer -> {
- mThumbnailImageView.setVisibility(View.GONE);
- windowPalyImageView.setVisibility(View.GONE);
- });
- mVideoView.start();
- }
-
- /*
- * 视频暂停播放
- * */
- private void videoPause() {
- mVideoView.pause();
- windowPalyImageView.setVisibility(View.VISIBLE);
- windowPalyImageView.setOnClickListener(v -> {
- videoResume();
- });
- }
-
- /*
- * 视频暂停后继续播放
- * */
- private void videoResume() {
- mThumbnailImageView.setVisibility(View.INVISIBLE);
- mVideoView.resume();
- }
-
- /*
- * 视频播放结束
- * */
- private void videoPlayEnd(String path) {
- Bitmap bitmap = BitmapHelper.getVideoThumbnail(path);
- mThumbnailImageView.setVisibility(View.VISIBLE);
- mThumbnailImageView.setImageBitmap(bitmap);
-
- windowPalyImageView.setVisibility(View.VISIBLE);
- windowPalyImageView.setOnClickListener(v -> {
- videoViewStartWithPath(path);
-
- });
- if (mV2XWindowStatusListener != null) {
- mV2XWindowStatusListener.onViewClose();
- }
- }
-
@Override
public void close() {
//移除窗体
@@ -166,4 +282,14 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID
public void destroy() {
}
+
+ @Override
+ public void videoPlayWithVideoUrl(String videoUrl) {
+
+ }
+
+ @Override
+ public void closeVideoWindow() {
+
+ }
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/SimpleCoverVideoPlayer.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/SimpleCoverVideoPlayer.kt
index 21e8e1a035..d8f2f27e4e 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/SimpleCoverVideoPlayer.kt
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/SimpleCoverVideoPlayer.kt
@@ -1,8 +1,7 @@
-package com.mogo.module.tanlu.video
+package com.mogo.module.v2x.view
import android.content.Context
import android.util.AttributeSet
-import android.util.Log
import android.view.Surface
import android.view.View
import android.widget.ImageView
@@ -34,11 +33,11 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer {
override fun init(context: Context) {
super.init(context)
- coverImage = findViewById(R.id.thumbnail_image)
+ coverImage = findViewById(R.id.thumbImage)
start = findViewById(R.id.start)
fullscreen = findViewById(R.id.fullscreen)
if (mThumbImageViewLayout != null
- && (mCurrentState == -1 || mCurrentState == GSYVideoView.CURRENT_STATE_NORMAL || mCurrentState == GSYVideoView.CURRENT_STATE_ERROR)
+ && (mCurrentState == -1 || mCurrentState == GSYVideoView.CURRENT_STATE_NORMAL || mCurrentState == GSYVideoView.CURRENT_STATE_ERROR)
) {
mThumbImageViewLayout.visibility = View.VISIBLE
}
@@ -65,19 +64,27 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer {
//加载图片
val requestOptions = RequestOptions()
// .placeholder(R.drawable.tanlu_normal_image)
- .error(R.drawable.video_loading)
+ .error(R.drawable.video_loading_img)
Glide.with(mContext).asBitmap()
- .load(url)
- .apply(requestOptions)
- .into(SkinAbleBitmapTarget(coverImage, requestOptions))
+ .load(url)
+ .apply(requestOptions)
+ .into(SkinAbleBitmapTarget(coverImage, requestOptions))
}
+ /*
+ * 默认双击暂停
+ * */
+ override fun onClickUiToggle(){
+ super.touchDoubleUp()
+ }
+
+
override fun updateStartImage() {
when (mCurrentState) {
-// GSYVideoView.CURRENT_STATE_PLAYING -> start.setImageResource(R.drawable.selector_bg_btn_pause)
-// GSYVideoView.CURRENT_STATE_ERROR -> start.setImageResource(R.drawable.main_video_refresh_btn)
-// else -> start.setImageResource(R.drawable.selector_bg_btn_play)
+ GSYVideoView.CURRENT_STATE_PLAYING -> start.setImageResource(R.drawable.v2x_video_pause)
+// GSYVideoView.CURRENT_STATE_ERROR -> start.setImageResource(R.drawable.live_error)
+ else -> start.setImageResource(R.drawable.v2x_icon_event_play)
}
}
@@ -153,7 +160,7 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer {
start -> {
}
- else -> {
+ else -> {
}
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/VideoInit.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/VideoInit.kt
index b7962f3acc..d3e9c2c7e6 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/VideoInit.kt
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/VideoInit.kt
@@ -1,4 +1,4 @@
-package com.mogo.module.tanlu.video
+package com.mogo.module.v2x
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.cache.CacheFactory
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_video_pause.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_video_pause.png
new file mode 100644
index 0000000000..90b401f17f
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_video_pause.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_video_pause.png b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_video_pause.png
new file mode 100644
index 0000000000..90b401f17f
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_video_pause.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_video_pause.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_video_pause.png
new file mode 100644
index 0000000000..cbd22bb486
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_video_pause.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_video_pause.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_video_pause.png
new file mode 100644
index 0000000000..cbd22bb486
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_video_pause.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml
index d43b868146..0eebfbca02 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml
@@ -1,57 +1,81 @@
+ android:layout_height="match_parent">
-
+ android:gravity="center">
-
+
-
+
-
-
-
+ android:scaleType="centerCrop" />
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout.xml
new file mode 100644
index 0000000000..ec3e8626d3
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/imageloader/glide/GlideImageLoader.java b/services/mogo-service/src/main/java/com/mogo/service/impl/imageloader/glide/GlideImageLoader.java
index 3fdf131786..077fdf0c7e 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/imageloader/glide/GlideImageLoader.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/imageloader/glide/GlideImageLoader.java
@@ -134,20 +134,20 @@ public class GlideImageLoader implements IMogoImageloader {
.into( new SimpleTarget< Bitmap >() {
@Override
public void onResourceReady( @NonNull Bitmap resource, @Nullable Transition< ? super Bitmap > transition ) {
+ imageView.setImageResource( 0 );
+ imageView.setImageBitmap( resource );
if ( listener != null ) {
listener.onCompleted( resource );
}
- imageView.setImageResource( 0 );
- imageView.setImageBitmap( resource );
}
@Override
public void onLoadStarted( @Nullable Drawable placeholder ) {
super.onLoadStarted( placeholder );
+ imageView.setImageResource( imageView.getPlaceHolder() );
if ( listener != null ) {
listener.onStart();
}
- imageView.setImageResource( imageView.getPlaceHolder() );
}
@Override
@@ -159,10 +159,10 @@ public class GlideImageLoader implements IMogoImageloader {
@Override
public void onLoadFailed( @Nullable Drawable errorDrawable ) {
super.onLoadFailed( errorDrawable );
+ imageView.setImageResource( imageView.getFailureHolder() );
if ( listener != null ) {
listener.onFailure( new Exception( "onLoadFailed" ) );
}
- imageView.setImageResource( imageView.getFailureHolder() );
}
} );
}