From 8cb48df54243f2c1b271ad003dbc2bdf344fecfa Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 21 Oct 2020 20:34:14 +0800 Subject: [PATCH 01/12] =?UTF-8?q?poi=E5=9B=BE=E7=89=87=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF=E5=8F=AF=E9=85=8D=E9=9C=80=E6=B1=82=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/common/marker/PoiWrapper.java | 64 +++++++++++++++++ .../service/marker/MapMarkerInfoView.java | 72 ++++++------------- .../service/marker/MapMarkerManager.java | 61 +++++++++++++++- .../com/mogo/module/share/ShareControl.java | 2 + 4 files changed, 146 insertions(+), 53 deletions(-) create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/marker/PoiWrapper.java 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..cf2918373c --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/marker/PoiWrapper.java @@ -0,0 +1,64 @@ +package com.mogo.module.common.marker; + +/** + * poi信息封装 + * + * @author tongchenfei + */ +public class PoiWrapper { + private int id; + private String poiType; + private int iconRes; + private String iconUrl; + private String title; + + public PoiWrapper(){ + + } + + public PoiWrapper(String poiType, int iconRes, String title) { + this.poiType = poiType; + this.iconRes = iconRes; + 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; + } +} 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..aa520db71d 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 @@ -85,58 +88,21 @@ 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) { + // 加载图片 + if(poiWrapper.getIconUrl().isEmpty()){ + // 没有网络图片 + GlideApp.with(ivIcon).load(poiWrapper.getIconRes()).into(ivIcon); + }else{ + // 有网络图片 + GlideApp.with(ivIcon).load(poiWrapper.getIconUrl()).placeholder(poiWrapper.getIconRes()).into(ivIcon); + } + }else{ + Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType); } } break; @@ -162,6 +128,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..92fccbf0ff 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 ); @@ -1025,4 +1030,58 @@ 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, "加油站")); + poiIconMap.put(MarkerPoiTypeEnum.TRAFFIC_CHECK, new PoiWrapper(MarkerPoiTypeEnum.TRAFFIC_CHECK, + 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_white, "封路")); + poiIconMap.put(MarkerPoiTypeEnum.SHOP_DISCOUNT, new PoiWrapper(MarkerPoiTypeEnum.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, "4S店")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_ROAD_WORK, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ROAD_WORK, + 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_white, "拥堵")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_PONDING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PONDING, + 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, "超时打折")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_FOG, new PoiWrapper(MarkerPoiTypeEnum.FOURS_FOG, + 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_white, "结冰")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_PARKING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PARKING, + R.drawable.module_service_ic_rc_parking2, "停车场")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_ACCIDENT, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT, + 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, "身边")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_LIVING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_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_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) { + 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-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java index 2b98266a01..dc4b8e040b 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java @@ -21,6 +21,7 @@ import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.common.dialog.BaseFloatDialog; +import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.module.share.bean.FixableButton; import com.mogo.module.share.bean.ShareButtonConfigResponse; import com.mogo.module.share.bean.ShareConfigRequest; @@ -477,6 +478,7 @@ public class ShareControl implements IMogoShareManager, Handler.Callback { } Logger.d(TAG, "获取分享框配置成功: " + config); SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config); + MapMarkerManager.getInstance().updateIconWithPoiType(); } @Override From 4438b6c2000fbfd9244f68e0c8f134dcb2112561 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 21 Oct 2020 20:53:34 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=95=85=E9=9A=9C?= =?UTF-8?q?=E6=B1=82=E5=8A=A9=E5=9F=8B=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/share/VoiceCmdService.kt | 2 +- .../share/dialog/GridFixableShareDialog.kt | 2 +- .../share/dialog/LaucherShareDialog.java | 2 +- .../module/share/manager/SeekHelpManager.kt | 19 ++++++++++++++----- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt index ae1c6924c9..ff2b90c445 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt @@ -42,7 +42,7 @@ class VoiceCmdService:Service() { if (intent.getIntExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY,0) == ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP) { // 收到语音指令,准备上报求助 Logger.i(TAG, "收到语音指令,准备上报求助") - SeekHelpManager.seekHelp(this,seekListener) + SeekHelpManager.seekHelp(this,seekListener,"2") } } return super.onStartCommand(intent, flags, startId) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt index c3d16fe965..9c623aa55a 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/GridFixableShareDialog.kt @@ -63,7 +63,7 @@ class GridFixableShareDialog(context: Context) : BaseFloatDialog(context) { if (it.poiType == IMogoTanluProvider.TYPE_SEEK_HELP) { // 发起故障求助 Logger.d(TAG, "发起故障求助====") - seekHelp(context, seekListener, true) + seekHelp(context, seekListener, "1", true) } else { // 上报道路事件 Logger.d(TAG, "上报道路事件=====") diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java index bf5bcf8365..1d1aa71708 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java @@ -161,7 +161,7 @@ public class LaucherShareDialog extends BaseFloatDialog implements View.OnClickL } else if (id == R.id.ivSeekHelp) { // 故障求助 Logger.d(TAG,"点击求助"); - SeekHelpManager.INSTANCE.seekHelp(mContext,seekListener,true); + SeekHelpManager.INSTANCE.seekHelp(mContext, seekListener, "1", true); dismiss(); } else if (id == R.id.ivAccident) { // 事故 diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt index e55988e46c..8eb55c6bf3 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt @@ -3,6 +3,8 @@ package com.mogo.module.share.manager import android.annotation.SuppressLint import android.content.Context import android.os.SystemClock +import android.util.ArrayMap +import com.mogo.commons.analytics.AnalyticsUtils import com.mogo.commons.data.BaseData import com.mogo.commons.network.SubscribeImpl import com.mogo.commons.network.Utils @@ -61,7 +63,7 @@ object SeekHelpManager { Logger.d(TAG, "onSpeakEnd: $it") if (it == VOICE_WILL_SEEK_HELP) { // 请求帮助语音播放完成,开始真正寻求帮助 - realSeekHelp() + realSeekHelp("1") } } } @@ -76,8 +78,10 @@ object SeekHelpManager { * 由于当前需求仅需要提供这一个方法,所以context的初始化放到了此方法,后面如果有增加,需要把这部分提出去 * * @param useLocalVoiceNotice 使用自己的语音播报,如果是从语音助手过来的请求,语音助手可能会走自己的播报,默认是使用自己的播报 + * + * @param from 1 - 手动发起求助 2 - 语音发起求助 */ - fun seekHelp(context: Context, seekHelpListener: ISeekHelpListener, useLocalVoiceNotice: Boolean = true) { + fun seekHelp(context: Context, seekHelpListener: ISeekHelpListener,from:String = "1", useLocalVoiceNotice: Boolean = true) { Logger.d(TAG, "seekHelp: $isSeeking") if(!isSeeking) { isSeeking = true @@ -110,10 +114,10 @@ object SeekHelpManager { // 语音说完再请求,要不然可能请求的太快 Logger.d(TAG, "使用本地播报: $aiAssist") aiAssist?.speakTTSVoice(VOICE_WILL_SEEK_HELP) - realSeekHelp() + realSeekHelp(from) } else { Logger.d(TAG, "不使用本地语音播报,直接开始发起求助") - realSeekHelp() + realSeekHelp(from) } } } @@ -149,12 +153,17 @@ object SeekHelpManager { /** * 真正开始寻求帮助,实际就是请求接口 */ - private fun realSeekHelp() { + private fun realSeekHelp(from:String) { Logger.d(TAG, "realSeekHelp") // 请求故障求助接口 val seekRequest = SeekRequest(Utils.getSn()) val param = mutableMapOf("data" to seekRequest.getJson()) + val properties: MutableMap = 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) From bb7f9a14fc6e02aec226d24f6258617f335aa12d Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 22 Oct 2020 10:14:18 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/service/marker/MapMarkerManager.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 92fccbf0ff..47782c379b 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 @@ -1072,6 +1072,13 @@ public class MapMarkerManager implements IMogoMarkerClickListener, List configWrappers = GsonUtil.arrayFromJson(config, PoiWrapper.class); if(configWrappers!=null) { for (PoiWrapper wrapper : configWrappers) { + wrapper.setIconRes(R.drawable.icon_map_marker_road_block_up2_white); + if(poiIconMap.containsKey(wrapper.getPoiType())) { + PoiWrapper defWrapper = poiIconMap.get(wrapper.getPoiType()); + if(defWrapper!=null) { + wrapper.setIconRes(defWrapper.getIconRes()); + } + } poiIconMap.put(wrapper.getPoiType(), wrapper); } }else{ From 258452a63371fa7bcfa9059d49ee96b501794d06 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 22 Oct 2020 15:24:46 +0800 Subject: [PATCH 04/12] opt --- .../mogo/module/common/marker/PoiWrapper.java | 25 ++++++- .../service/marker/MapMarkerInfoView.java | 8 +-- .../service/marker/MapMarkerManager.java | 36 +++++----- .../module/service/marker/MapMarkerView.java | 70 ++++++------------- .../layout/modudle_services_marker_layout.xml | 1 + .../modudle_services_marker_layout_info.xml | 1 + .../com/mogo/module/share/ShareControl.java | 4 +- 7 files changed, 69 insertions(+), 76 deletions(-) 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 index cf2918373c..4c7f3e977a 100644 --- 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 @@ -9,16 +9,19 @@ public class PoiWrapper { private int id; private String poiType; private int iconRes; - private String iconUrl; - private String title; + private int iconInfoRes; + private String iconUrl = ""; + private String iconInfoUrl = ""; + private String title = "拥堵"; public PoiWrapper(){ } - public PoiWrapper(String poiType, int iconRes, String title) { + public PoiWrapper(String poiType, int iconRes,int iconInfoRes, String title) { this.poiType = poiType; this.iconRes = iconRes; + this.iconInfoRes = iconInfoRes; this.title = title; } @@ -61,4 +64,20 @@ public class PoiWrapper { 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/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java index aa520db71d..97ade941ab 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 @@ -94,15 +94,15 @@ public class MapMarkerInfoView extends MapMarkerBaseView { MapMarkerManager.getInstance().getWrapperByPoiType(poiType); if (poiWrapper != null) { // 加载图片 - if(poiWrapper.getIconUrl().isEmpty()){ + if(poiWrapper.getIconInfoUrl().isEmpty()){ // 没有网络图片 - GlideApp.with(ivIcon).load(poiWrapper.getIconRes()).into(ivIcon); + GlideApp.with(getContext()).load(poiWrapper.getIconInfoRes()).into(ivIcon); }else{ // 有网络图片 - GlideApp.with(ivIcon).load(poiWrapper.getIconUrl()).placeholder(poiWrapper.getIconRes()).into(ivIcon); + GlideApp.with(getContext()).load(poiWrapper.getIconInfoUrl()).placeholder(poiWrapper.getIconInfoRes()).into(ivIcon); } }else{ - Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType); + Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染info marker====" + poiType); } } break; 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 47782c379b..d7e275b973 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 @@ -1034,49 +1034,51 @@ public class MapMarkerManager implements IMogoMarkerClickListener, private Map poiIconMap = new ArrayMap<>(); public void updateIconWithPoiType(){ // 先生成本地默认map - poiIconMap.put(MarkerPoiTypeEnum.GAS_STATION, new PoiWrapper(MarkerPoiTypeEnum.GAS_STATION, + 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_white, "交通检查")); + 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_white, "封路")); + 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,R.drawable.icon_map_marker_shop_discount, "商场打折")); poiIconMap.put(MarkerPoiTypeEnum.FOURS_4S, new PoiWrapper(MarkerPoiTypeEnum.FOURS_4S, - R.drawable.icon_map_marker_4s, "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_white, "施工")); + 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_white, "拥堵")); + R.drawable.icon_map_marker_road_block_up2_white,R.drawable.icon_map_marker_road_block_up2, "拥堵")); poiIconMap.put(MarkerPoiTypeEnum.FOURS_PONDING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PONDING, - R.drawable.icon_map_marker_pondingl2_white, "积水")); + 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,R.drawable.icon_map_marker_shop, "超时打折")); poiIconMap.put(MarkerPoiTypeEnum.FOURS_FOG, new PoiWrapper(MarkerPoiTypeEnum.FOURS_FOG, - R.drawable.module_service_ic_rc_dark_frog2_white, "浓雾")); + 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_white, "结冰")); + 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,R.drawable.module_service_ic_rc_parking2, "停车场")); poiIconMap.put(MarkerPoiTypeEnum.FOURS_ACCIDENT, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT, - R.drawable.module_service_ic_rc_accident3_white, "事故")); + 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,R.drawable.icon_map_marker_shear_news, "身边")); poiIconMap.put(MarkerPoiTypeEnum.FOURS_LIVING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_LIVING, - R.drawable.icon_map_marker_living_white, "实时路况")); + 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_white, "违章停车")); + 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.setIconRes(R.drawable.icon_map_marker_road_block_up2_white); + 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); 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..ea07feb9cd 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 @@ -54,59 +57,26 @@ 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) { + // 加载图片 + if(poiWrapper.getIconUrl().isEmpty()){ + // 没有网络图片 + GlideApp.with(getContext()).load(poiWrapper.getIconRes()).into(ivIcon); + }else{ + // 有网络图片 + GlideApp.with(getContext()).load(poiWrapper.getIconUrl()).placeholder(poiWrapper.getIconRes()).into(ivIcon); + } + }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..077f3060a0 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 @@ -20,6 +20,7 @@ android:layout_width="@dimen/module_service_marker_bubble_icon_width" android:layout_height="@dimen/module_service_marker_bubble_icon_height" android:layout_gravity="center" + android:background="#fff" android:layout_marginBottom="@dimen/module_service_marker_bubble_icon_marginBottom" tools:src="@drawable/icon_map_marker_road_block_up2" /> diff --git a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml index 444e398c97..716498569a 100644 --- a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml +++ b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml @@ -35,6 +35,7 @@ android:layout_width="@dimen/module_service_marker_bubble_icon_width" android:layout_height="@dimen/module_service_marker_bubble_icon_height" android:layout_gravity="center" + android:background="#000" android:layout_marginLeft="@dimen/dp_15" android:visibility="invisible" app:layout_constraintBottom_toBottomOf="parent" diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java index dc4b8e040b..c71eddd8b3 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java @@ -477,8 +477,8 @@ public class ShareControl implements IMogoShareManager, Handler.Callback { Logger.d(TAG, "获取分享框成功,但是detailMsg没有内容"); } Logger.d(TAG, "获取分享框配置成功: " + config); - SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config); - MapMarkerManager.getInstance().updateIconWithPoiType(); +// SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config); +// MapMarkerManager.getInstance().updateIconWithPoiType(); } @Override From e86dfdb8678c2eb0dec9b95eea66513806d2e7a5 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Fri, 23 Oct 2020 09:50:38 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E6=89=93=E7=82=B9?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=A0=B7=E5=BC=8F=E6=9C=8D=E5=8A=A1=E7=AB=AF?= =?UTF-8?q?=E5=8F=AF=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 - .../mogo/module/common/marker/PoiWrapper.java | 2 + .../service/marker/MapMarkerBaseView.java | 47 ++++++++++++++++++- .../service/marker/MapMarkerInfoView.java | 13 ++--- .../service/marker/MapMarkerManager.java | 4 +- .../module/service/marker/MapMarkerView.java | 10 ++-- .../layout/modudle_services_marker_layout.xml | 3 +- .../modudle_services_marker_layout_info.xml | 3 +- .../com/mogo/module/share/ShareControl.java | 4 +- .../imageloader/glide/GlideImageLoader.java | 8 ++-- 10 files changed, 67 insertions(+), 28 deletions(-) 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 index 4c7f3e977a..dbaeb372c9 100644 --- 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 @@ -11,7 +11,9 @@ public class PoiWrapper { 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(){ 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 97ade941ab..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 @@ -54,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 { @@ -94,13 +97,7 @@ public class MapMarkerInfoView extends MapMarkerBaseView { MapMarkerManager.getInstance().getWrapperByPoiType(poiType); if (poiWrapper != null) { // 加载图片 - if(poiWrapper.getIconInfoUrl().isEmpty()){ - // 没有网络图片 - GlideApp.with(getContext()).load(poiWrapper.getIconInfoRes()).into(ivIcon); - }else{ - // 有网络图片 - GlideApp.with(getContext()).load(poiWrapper.getIconInfoUrl()).placeholder(poiWrapper.getIconInfoRes()).into(ivIcon); - } + loadPoiTypeIcon(poiWrapper.getIconInfoUrl(),poiWrapper.getIconInfoRes()); }else{ Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染info marker====" + poiType); } 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 d7e275b973..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 @@ -209,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() ) ); @@ -254,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() ) ); @@ -1047,7 +1049,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, 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_white,R.drawable.icon_map_marker_road_block_up2, "拥堵")); + 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, 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 ea07feb9cd..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 @@ -44,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(); @@ -63,13 +65,7 @@ public class MapMarkerView extends MapMarkerBaseView { MapMarkerManager.getInstance().getWrapperByPoiType(poiType); if (poiWrapper != null) { // 加载图片 - if(poiWrapper.getIconUrl().isEmpty()){ - // 没有网络图片 - GlideApp.with(getContext()).load(poiWrapper.getIconRes()).into(ivIcon); - }else{ - // 有网络图片 - GlideApp.with(getContext()).load(poiWrapper.getIconUrl()).placeholder(poiWrapper.getIconRes()).into(ivIcon); - } + loadPoiTypeIcon(poiWrapper.getIconUrl(),poiWrapper.getIconRes()); }else{ Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType); } 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 077f3060a0..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,12 +15,11 @@ android:background="@drawable/module_services_marker_bkg" android:layout_height="@dimen/module_service_marker_bubble_height"> - diff --git a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml index 716498569a..a8b9a0e207 100644 --- a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml +++ b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml @@ -30,12 +30,11 @@ app:miv_placeHolder="@drawable/icon_default_user_head" app:miv_shape="circle" /> - () { @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() ); } } ); } From c2c9a82705a3e333b28bd6c3de47b70d5aa60736 Mon Sep 17 00:00:00 2001 From: liujing Date: Wed, 21 Oct 2020 17:43:17 +0800 Subject: [PATCH 06/12] no message --- .../scene/road/V2XRoadVideoWindow.java | 54 +++++++++++-------- .../module/v2x/view/SimpleCoverVideoPlayer.kt | 2 +- .../com/mogo/module/v2x/view/VideoInit.kt | 2 +- .../src/main/res/layout/window_road_video.xml | 4 +- 4 files changed, 35 insertions(+), 27 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java index 268fa90b4b..810473ea01 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java @@ -13,15 +13,17 @@ import com.mogo.module.common.entity.MarkerExploreWayItem; import com.mogo.module.common.entity.V2XEventShowEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.module.v2x.R; +import com.mogo.module.v2x.SimpleCoverVideoPlayer; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.scenario.view.IV2XWindow; import com.mogo.module.v2x.view.TextureVideoView; import com.mogo.utils.BitmapHelper; import com.mogo.utils.logger.Logger; +import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; import java.util.ArrayList; - +import com.mogo.module.v2x.VideoInitKt; import static com.mogo.module.v2x.V2XConst.MODULE_NAME; @@ -29,10 +31,11 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID private static final String TAG = "V2XRoadVideoWindow"; private V2XWindowStatusListener mV2XWindowStatusListener; - private TextureVideoView mVideoView; + private SimpleCoverVideoPlayer simpleCoverVideoPlayer; private ImageView closeImage; private ImageView mThumbnailImageView; private ImageView windowPalyImageView; + private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); public V2XRoadVideoWindow() { this(V2XServiceManager.getContext(), null); @@ -53,20 +56,20 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID private void initView(Context context) { LayoutInflater.from(context).inflate(R.layout.window_road_video, this); - mVideoView = findViewById(R.id.roadVideoView);/*播放器*/ + simpleCoverVideoPlayer = findViewById(R.id.roadVideoView);/*播放器*/ windowPalyImageView = findViewById(R.id.window_video_play);/*播放键*/ mThumbnailImageView = findViewById(R.id.thumbnail_image);/*第一帧图片*/ closeImage = findViewById(R.id.roadVideoClose); closeImage.setOnClickListener(v -> { close(); }); - mVideoView.setOnClickListener(v -> { + simpleCoverVideoPlayer.setOnClickListener(v -> { mThumbnailImageView.setVisibility(View.GONE); - if (mVideoView.isPlaying()) { - videoPause(); - } else { - videoResume(); - } +// if (simpleCoverVideoPlayer.isPlaying()) { +// videoPause(); +// } else { +// videoResume(); +// } }); } @@ -84,10 +87,10 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID if (path.contains(".mp4")) { videoViewStartWithPath(path); - mVideoView.setOnCompletionListener(mediaPlayer -> { - Logger.w(MODULE_NAME, "视频播放结束..."); - videoPlayEnd(path); - }); +// mVideoView.setOnCompletionListener(mediaPlayer -> { +// Logger.w(MODULE_NAME, "视频播放结束..."); +// videoPlayEnd(path); +// }); } @@ -98,20 +101,25 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID * 视频开始播放 * */ private void videoViewStartWithPath(String path) { - mVideoView.setVisibility(VISIBLE); - mVideoView.setVideoPath(path); - mVideoView.setOnPreparedListener(mediaPlayer -> { - mThumbnailImageView.setVisibility(View.GONE); - windowPalyImageView.setVisibility(View.GONE); - }); - mVideoView.start(); + simpleCoverVideoPlayer.setVisibility(View.VISIBLE); + //加载封面图 +// simpleCoverVideoPlayer.loadCoverImage(path, getContext()); + gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) + .build(simpleCoverVideoPlayer); + simpleCoverVideoPlayer.getStartButton().performClick(); + +// simpleCoverVideoPlayer.setOnPreparedListener(mediaPlayer -> { +// mThumbnailImageView.setVisibility(View.GONE); +// windowPalyImageView.setVisibility(View.GONE); +// }); +// simpleCoverVideoPlayer.start(); } /* * 视频暂停播放 * */ private void videoPause() { - mVideoView.pause(); +// simpleCoverVideoPlayer.pause(); windowPalyImageView.setVisibility(View.VISIBLE); windowPalyImageView.setOnClickListener(v -> { videoResume(); @@ -122,8 +130,8 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID * 视频暂停后继续播放 * */ private void videoResume() { - mThumbnailImageView.setVisibility(View.INVISIBLE); - mVideoView.resume(); +// mThumbnailImageView.setVisibility(View.INVISIBLE); +// mVideoView.resume(); } /* 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..77cb118d27 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,4 +1,4 @@ -package com.mogo.module.tanlu.video +package com.mogo.module.v2x import android.content.Context import android.util.AttributeSet 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/layout/window_road_video.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_video.xml index d43b868146..e7216d6a89 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 @@ -14,7 +14,7 @@ android:layout_margin="@dimen/dp_30" app:roundLayoutRadius="@dimen/dp_28"> - - + Date: Wed, 21 Oct 2020 18:01:50 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=99=A8=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/v2x/scenario/scene/road/V2XRoadVideoWindow.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java index 810473ea01..e18a4955e3 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java @@ -17,14 +17,11 @@ import com.mogo.module.v2x.SimpleCoverVideoPlayer; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.scenario.view.IV2XWindow; -import com.mogo.module.v2x.view.TextureVideoView; import com.mogo.utils.BitmapHelper; -import com.mogo.utils.logger.Logger; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; import java.util.ArrayList; -import com.mogo.module.v2x.VideoInitKt; -import static com.mogo.module.v2x.V2XConst.MODULE_NAME; +import static com.mogo.module.v2x.VideoInitKt.initVideo; public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, IDestroyable { @@ -56,6 +53,7 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID private void initView(Context context) { LayoutInflater.from(context).inflate(R.layout.window_road_video, this); + initVideo(); simpleCoverVideoPlayer = findViewById(R.id.roadVideoView);/*播放器*/ windowPalyImageView = findViewById(R.id.window_video_play);/*播放键*/ mThumbnailImageView = findViewById(R.id.thumbnail_image);/*第一帧图片*/ From fddad1dd8757bc22c0704b7a84dfe7e20b372fda Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 22 Oct 2020 14:11:16 +0800 Subject: [PATCH 08/12] zancun --- .../scene/road/V2XRoadVideoWindow.java | 33 +++++----- .../src/main/res/layout/window_road_video.xml | 22 +++++-- .../res/layout/window_road_video_item.xml | 62 +++++++++++++++++++ 3 files changed, 98 insertions(+), 19 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java index e18a4955e3..9284c45710 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java @@ -4,6 +4,7 @@ import android.content.Context; import android.graphics.Bitmap; import android.util.AttributeSet; import android.view.LayoutInflater; +import android.view.TextureView; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; @@ -21,6 +22,7 @@ import com.mogo.utils.BitmapHelper; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; import java.util.ArrayList; + import static com.mogo.module.v2x.VideoInitKt.initVideo; @@ -53,22 +55,22 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID private void initView(Context context) { LayoutInflater.from(context).inflate(R.layout.window_road_video, this); - initVideo(); - simpleCoverVideoPlayer = findViewById(R.id.roadVideoView);/*播放器*/ + simpleCoverVideoPlayer = this.findViewById(R.id.roadVideoView);/*播放器*/ + TextureView textureView = findViewById(R.id.tex); windowPalyImageView = findViewById(R.id.window_video_play);/*播放键*/ mThumbnailImageView = findViewById(R.id.thumbnail_image);/*第一帧图片*/ - closeImage = findViewById(R.id.roadVideoClose); - closeImage.setOnClickListener(v -> { - close(); - }); - simpleCoverVideoPlayer.setOnClickListener(v -> { - mThumbnailImageView.setVisibility(View.GONE); -// if (simpleCoverVideoPlayer.isPlaying()) { -// videoPause(); -// } else { -// videoResume(); -// } - }); +// closeImage = findViewById(R.id.roadVideoClose); +// closeImage.setOnClickListener(v -> { +// close(); +// }); +// simpleCoverVideoPlayer.setOnClickListener(v -> { +// mThumbnailImageView.setVisibility(View.GONE); +//// if (simpleCoverVideoPlayer.isPlaying()) { +//// videoPause(); +//// } else { +//// videoResume(); +//// } +// }); } @Override @@ -99,9 +101,10 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID * 视频开始播放 * */ private void videoViewStartWithPath(String path) { + initVideo(); simpleCoverVideoPlayer.setVisibility(View.VISIBLE); //加载封面图 -// simpleCoverVideoPlayer.loadCoverImage(path, getContext()); + simpleCoverVideoPlayer.loadCoverImage(path, getContext()); gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) .build(simpleCoverVideoPlayer); simpleCoverVideoPlayer.getStartButton().performClick(); 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 e7216d6a89..6c0898cf0f 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 @@ -14,25 +14,32 @@ android:layout_margin="@dimen/dp_30" app:roundLayoutRadius="@dimen/dp_28"> - + - + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml new file mode 100644 index 0000000000..cbfe283897 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From d2ec559f030d61dcc21215e2c0c4a1c6c70bcb59 Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 22 Oct 2020 21:23:13 +0800 Subject: [PATCH 09/12] [add] adapter --- .../v2x/adapter/V2XRoadVideoAdapter.java | 89 +++++++++++++ .../v2x/fragment/V2XShareEventsFragment.java | 1 - .../v2x/listener/VideoAdapterCallBack.java | 10 ++ .../scene/road/V2XRoadVideoWindow.java | 120 +++++------------- .../module/v2x/view/SimpleCoverVideoPlayer.kt | 2 +- .../src/main/res/layout/window_road_video.xml | 64 +--------- .../res/layout/window_road_video_item.xml | 13 -- 7 files changed, 139 insertions(+), 160 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/VideoAdapterCallBack.java diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java new file mode 100644 index 0000000000..9488f14e61 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java @@ -0,0 +1,89 @@ +package com.mogo.module.v2x.adapter; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.mogo.module.v2x.R; +import com.mogo.module.v2x.SimpleCoverVideoPlayer; +import com.mogo.module.v2x.listener.AdapterCallback; +import com.mogo.module.v2x.listener.VideoAdapterCallBack; +import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; + +import java.util.ArrayList; + +public class V2XRoadVideoAdapter extends RecyclerView.Adapter { + private static final String TAG = "V2XRoadVideoAdapter"; + private final LayoutInflater shareLayoutInflater; + private VideoAdapterCallBack mCallback; + private SimpleCoverVideoPlayer simpleCoverVideoPlayer; + private Context mContext; + + private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); + + public V2XRoadVideoAdapter(Context context, VideoAdapterCallBack callback) { + mContext = context; + shareLayoutInflater = LayoutInflater.from(context); + mCallback = callback; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View v = shareLayoutInflater.inflate(R.layout.window_road_video_item, parent, + false); + RoadVideoVH holder = new RoadVideoVH(v); + return holder; + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + Log.d(TAG, "onBindViewHolder"); + } + + @Override + public int getItemCount() { + return 1; + } + + public void videoPlayWithVideoUrl(String videoUrl) { +// gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG) +// .build(simpleCoverVideoPlayer); +// simpleCoverVideoPlayer.getStartButton().performClick(); + } + + public class RoadVideoVH extends RecyclerView.ViewHolder { + private ImageView playImageView; + private ImageView closeImage; + + public RoadVideoVH(@NonNull View itemView) { + super(itemView); + playImageView = itemView.findViewById(R.id.window_video_play); + simpleCoverVideoPlayer = itemView.findViewById(R.id.roadVideoView); + closeImage = itemView.findViewById(R.id.roadVideoClose); + + playImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mCallback.videoPlayWithVideoUrl(""); + } + + }); + simpleCoverVideoPlayer.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mCallback.videoPlayWithVideoUrl(""); + } + }); + closeImage.setOnClickListener(v -> { + mCallback.closeVideoWindow(); + }); + } + } +} 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(); -// }); -// simpleCoverVideoPlayer.setOnClickListener(v -> { -// mThumbnailImageView.setVisibility(View.GONE); -//// if (simpleCoverVideoPlayer.isPlaying()) { -//// videoPause(); -//// } else { -//// videoResume(); -//// } -// }); + mContext = context; + LayoutInflater.from(mContext).inflate(R.layout.window_road_video, this); + initVideo(); + roadVideoRecyclerView = findViewById(R.id.video_recycleview); + mV2XRoadVideoAdapter = new V2XRoadVideoAdapter(mContext, this); + roadVideoRecyclerView.setAdapter(mV2XRoadVideoAdapter); + LinearLayoutManager linearLayoutManager = + new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false); + roadVideoRecyclerView.setLayoutManager(linearLayoutManager); } @Override @@ -85,74 +85,12 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID return; } if (path.contains(".mp4")) { - videoViewStartWithPath(path); - -// mVideoView.setOnCompletionListener(mediaPlayer -> { -// Logger.w(MODULE_NAME, "视频播放结束..."); -// videoPlayEnd(path); -// }); - + mV2XRoadVideoAdapter.videoPlayWithVideoUrl(path); } } } - /* - * 视频开始播放 - * */ - private void videoViewStartWithPath(String path) { - initVideo(); - simpleCoverVideoPlayer.setVisibility(View.VISIBLE); - //加载封面图 - simpleCoverVideoPlayer.loadCoverImage(path, getContext()); - gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) - .build(simpleCoverVideoPlayer); - simpleCoverVideoPlayer.getStartButton().performClick(); - -// simpleCoverVideoPlayer.setOnPreparedListener(mediaPlayer -> { -// mThumbnailImageView.setVisibility(View.GONE); -// windowPalyImageView.setVisibility(View.GONE); -// }); -// simpleCoverVideoPlayer.start(); - } - - /* - * 视频暂停播放 - * */ - private void videoPause() { -// simpleCoverVideoPlayer.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() { //移除窗体 @@ -175,4 +113,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 77cb118d27..cd246a5f61 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 @@ -36,7 +36,7 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer { super.init(context) coverImage = findViewById(R.id.thumbnail_image) start = findViewById(R.id.start) - fullscreen = findViewById(R.id.fullscreen) +// fullscreen = findViewById(R.id.fullscreen) if (mThumbImageViewLayout != null && (mCurrentState == -1 || mCurrentState == GSYVideoView.CURRENT_STATE_NORMAL || mCurrentState == GSYVideoView.CURRENT_STATE_ERROR) ) { 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 6c0898cf0f..ce6f2f91c1 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,71 +1,17 @@ - - - - - - - - - - - - - - - - - - + android:layout_height="match_parent" /> \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml index cbfe283897..f10bc55235 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml @@ -17,19 +17,6 @@ android:layout_height="match_parent" android:layout_centerInParent="true" android:visibility="visible" /> - - - - - - - - - - - - - Date: Thu, 22 Oct 2020 21:40:53 +0800 Subject: [PATCH 10/12] no message --- .../v2x/adapter/V2XRoadVideoAdapter.java | 5 +-- .../scene/road/V2XRoadVideoWindow.java | 43 ++++++++++++++----- .../src/main/res/layout/window_road_video.xml | 2 +- ..._item.xml => window_road_video_layout.xml} | 7 +-- 4 files changed, 39 insertions(+), 18 deletions(-) rename modules/mogo-module-v2x/src/main/res/layout/{window_road_video_item.xml => window_road_video_layout.xml} (90%) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java index 9488f14e61..d4fe35c96e 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java @@ -12,12 +12,9 @@ import androidx.recyclerview.widget.RecyclerView; import com.mogo.module.v2x.R; import com.mogo.module.v2x.SimpleCoverVideoPlayer; -import com.mogo.module.v2x.listener.AdapterCallback; import com.mogo.module.v2x.listener.VideoAdapterCallBack; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; -import java.util.ArrayList; - public class V2XRoadVideoAdapter extends RecyclerView.Adapter { private static final String TAG = "V2XRoadVideoAdapter"; private final LayoutInflater shareLayoutInflater; @@ -36,7 +33,7 @@ public class V2XRoadVideoAdapter extends RecyclerView.Adapter { @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = shareLayoutInflater.inflate(R.layout.window_road_video_item, parent, + View v = shareLayoutInflater.inflate(R.layout.window_road_video_layout, parent, false); RoadVideoVH holder = new RoadVideoVH(v); return holder; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java index bc51d897bd..bf989b8921 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java @@ -38,9 +38,17 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID private RecyclerView roadVideoRecyclerView; V2XRoadVideoAdapter mV2XRoadVideoAdapter; private V2XWindowStatusListener mV2XWindowStatusListener; + private ImageView playImageView; + private ImageView closeImage; + + private SimpleCoverVideoPlayer simpleCoverVideoPlayer; private Context mContext; + private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); + +// private Context mContext; + public V2XRoadVideoWindow() { this(V2XServiceManager.getContext(), null); } @@ -57,20 +65,19 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID public V2XRoadVideoWindow(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - initView(context); mContext = context; + initView(mContext); } private void initView(Context context) { - mContext = context; - LayoutInflater.from(mContext).inflate(R.layout.window_road_video, this); + LayoutInflater.from(mContext).inflate(R.layout.window_road_video_layout, this); initVideo(); - roadVideoRecyclerView = findViewById(R.id.video_recycleview); - mV2XRoadVideoAdapter = new V2XRoadVideoAdapter(mContext, this); - roadVideoRecyclerView.setAdapter(mV2XRoadVideoAdapter); - LinearLayoutManager linearLayoutManager = - new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false); - roadVideoRecyclerView.setLayoutManager(linearLayoutManager); + playImageView = this.findViewById(R.id.window_video_play); + simpleCoverVideoPlayer = this.findViewById(R.id.roadVideoView); + closeImage = this.findViewById(R.id.roadVideoClose); + closeImage.setOnClickListener(v -> { + + }); } @Override @@ -85,7 +92,23 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID return; } if (path.contains(".mp4")) { - mV2XRoadVideoAdapter.videoPlayWithVideoUrl(path); + playImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) + .build(simpleCoverVideoPlayer); + simpleCoverVideoPlayer.getStartButton().performClick(); + } + + }); + simpleCoverVideoPlayer.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) + .build(simpleCoverVideoPlayer); + simpleCoverVideoPlayer.getStartButton().performClick(); + } + }); } } 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 ce6f2f91c1..2e61ee01a9 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 @@ -10,7 +10,7 @@ diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout.xml similarity index 90% rename from modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml rename to modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout.xml index f10bc55235..a89e378a3d 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_road_video_item.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_video_layout.xml @@ -2,7 +2,9 @@ + android:layout_height="match_parent" + android:background="#99000000" + android:paddingStart="@dimen/module_main_v2x_animation_width"> + android:layout_centerInParent="true" /> Date: Fri, 23 Oct 2020 13:42:40 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E8=A7=86=E9=A2=91=E9=80=82=E9=85=8D?= =?UTF-8?q?=E7=88=B6=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v2x/adapter/V2XRoadVideoAdapter.java | 86 ------------------ .../scene/road/V2XRoadVideoWindow.java | 40 +++------ .../module/v2x/view/SimpleCoverVideoPlayer.kt | 6 +- .../src/main/res/layout/window_road_video.xml | 87 ++++++++++++++++--- .../res/layout/window_road_video_layout.xml | 50 +++++------ 5 files changed, 111 insertions(+), 158 deletions(-) delete mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java deleted file mode 100644 index d4fe35c96e..0000000000 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XRoadVideoAdapter.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.mogo.module.v2x.adapter; - -import android.content.Context; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.module.v2x.R; -import com.mogo.module.v2x.SimpleCoverVideoPlayer; -import com.mogo.module.v2x.listener.VideoAdapterCallBack; -import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; - -public class V2XRoadVideoAdapter extends RecyclerView.Adapter { - private static final String TAG = "V2XRoadVideoAdapter"; - private final LayoutInflater shareLayoutInflater; - private VideoAdapterCallBack mCallback; - private SimpleCoverVideoPlayer simpleCoverVideoPlayer; - private Context mContext; - - private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); - - public V2XRoadVideoAdapter(Context context, VideoAdapterCallBack callback) { - mContext = context; - shareLayoutInflater = LayoutInflater.from(context); - mCallback = callback; - } - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = shareLayoutInflater.inflate(R.layout.window_road_video_layout, parent, - false); - RoadVideoVH holder = new RoadVideoVH(v); - return holder; - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - Log.d(TAG, "onBindViewHolder"); - } - - @Override - public int getItemCount() { - return 1; - } - - public void videoPlayWithVideoUrl(String videoUrl) { -// gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG) -// .build(simpleCoverVideoPlayer); -// simpleCoverVideoPlayer.getStartButton().performClick(); - } - - public class RoadVideoVH extends RecyclerView.ViewHolder { - private ImageView playImageView; - private ImageView closeImage; - - public RoadVideoVH(@NonNull View itemView) { - super(itemView); - playImageView = itemView.findViewById(R.id.window_video_play); - simpleCoverVideoPlayer = itemView.findViewById(R.id.roadVideoView); - closeImage = itemView.findViewById(R.id.roadVideoClose); - - playImageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mCallback.videoPlayWithVideoUrl(""); - } - - }); - simpleCoverVideoPlayer.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mCallback.videoPlayWithVideoUrl(""); - } - }); - closeImage.setOnClickListener(v -> { - mCallback.closeVideoWindow(); - }); - } - } -} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java index bf989b8921..36a9a38f4d 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java @@ -1,42 +1,34 @@ package com.mogo.module.v2x.scenario.scene.road; import android.content.Context; -import android.graphics.Bitmap; import android.util.AttributeSet; -import android.util.Log; import android.view.LayoutInflater; -import android.view.TextureView; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import com.mogo.map.IDestroyable; import com.mogo.module.common.entity.MarkerExploreWayItem; import com.mogo.module.common.entity.V2XEventShowEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.module.v2x.R; -import com.mogo.module.v2x.SimpleCoverVideoPlayer; import com.mogo.module.v2x.V2XServiceManager; -import com.mogo.module.v2x.adapter.V2XRoadVideoAdapter; import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.listener.VideoAdapterCallBack; import com.mogo.module.v2x.scenario.view.IV2XWindow; -import com.mogo.utils.BitmapHelper; +import com.mogo.module.v2x.view.SimpleCoverVideoPlayer; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; +import com.shuyu.gsyvideoplayer.utils.GSYVideoType; import java.util.ArrayList; import static com.mogo.module.v2x.VideoInitKt.initVideo; +import static com.shuyu.gsyvideoplayer.utils.GSYVideoType.SCREEN_MATCH_FULL; public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, IDestroyable, VideoAdapterCallBack { private static final String TAG = "V2XRoadVideoWindow"; - private RecyclerView roadVideoRecyclerView; - V2XRoadVideoAdapter mV2XRoadVideoAdapter; private V2XWindowStatusListener mV2XWindowStatusListener; private ImageView playImageView; private ImageView closeImage; @@ -47,7 +39,6 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder(); -// private Context mContext; public V2XRoadVideoWindow() { this(V2XServiceManager.getContext(), null); @@ -74,9 +65,12 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID initVideo(); playImageView = this.findViewById(R.id.window_video_play); simpleCoverVideoPlayer = this.findViewById(R.id.roadVideoView); + GSYVideoType.setShowType(SCREEN_MATCH_FULL); + //mCurrentAspectRatio +// simpleCoverVideoPlayer. closeImage = this.findViewById(R.id.roadVideoClose); closeImage.setOnClickListener(v -> { - + close(); }); } @@ -92,23 +86,9 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID return; } if (path.contains(".mp4")) { - playImageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) - .build(simpleCoverVideoPlayer); - simpleCoverVideoPlayer.getStartButton().performClick(); - } - - }); - simpleCoverVideoPlayer.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) - .build(simpleCoverVideoPlayer); - simpleCoverVideoPlayer.getStartButton().performClick(); - } - }); + gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) + .build(simpleCoverVideoPlayer); + simpleCoverVideoPlayer.getStartButton().performClick(); } } 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 cd246a5f61..bf8302607e 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,4 +1,4 @@ -package com.mogo.module.v2x +package com.mogo.module.v2x.view import android.content.Context import android.util.AttributeSet @@ -34,9 +34,9 @@ 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) + fullscreen = findViewById(R.id.fullscreen) if (mThumbImageViewLayout != null && (mCurrentState == -1 || mCurrentState == GSYVideoView.CURRENT_STATE_NORMAL || mCurrentState == GSYVideoView.CURRENT_STATE_ERROR) ) { 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 2e61ee01a9..04c2ed5bb4 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,17 +1,82 @@ + android:layout_height="match_parent"> - + android:layout_height="match_parent" + android:gravity="center"> - \ 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 index a89e378a3d..6bfd64acd8 100644 --- 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 @@ -1,35 +1,28 @@ - + android:layout_height="@dimen/dp_674" + android:layout_marginTop="@dimen/dp_30" + android:layout_marginLeft="@dimen/dp_30" + android:layout_marginRight="@dimen/dp_30" + android:layout_marginBottom="@dimen/dp_327" + app:roundLayoutRadius="@dimen/dp_28" + android:background="#D9FFFFFF"> - - + android:layout_height="@dimen/dp_674" + android:layout_alignParentTop="true" + android:layout_alignParentBottom="true"/> + android:visibility="gone" /> + + - - \ No newline at end of file + \ No newline at end of file From 73b6565c6fc3b01099b82c85483494a450d7607e Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 23 Oct 2020 20:18:09 +0800 Subject: [PATCH 12/12] =?UTF-8?q?[add]=20=E5=85=A8=E5=B1=8F=E6=98=BE?= =?UTF-8?q?=E7=A4=BA+=E5=8D=95=E5=87=BB=E6=9A=82=E5=81=9C=E5=92=8C?= =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E6=92=AD=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/road/V2XRoadVideoWindow.java | 178 +++++++++++++++++- .../module/v2x/view/SimpleCoverVideoPlayer.kt | 27 ++- .../res/drawable-ldpi/v2x_video_pause.png | Bin 0 -> 817 bytes .../res/drawable-mdpi/v2x_video_pause.png | Bin 0 -> 817 bytes .../v2x_video_pause.png | Bin 0 -> 3048 bytes .../res/drawable-xhdpi/v2x_video_pause.png | Bin 0 -> 3048 bytes .../src/main/res/layout/window_road_video.xml | 17 +- .../res/layout/window_road_video_layout.xml | 22 ++- 8 files changed, 215 insertions(+), 29 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-ldpi/v2x_video_pause.png create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-mdpi/v2x_video_pause.png create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_video_pause.png create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_video_pause.png diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java index 36a9a38f4d..16307d9c9c 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoWindow.java @@ -1,7 +1,9 @@ package com.mogo.module.v2x.scenario.scene.road; import android.content.Context; +import android.graphics.Bitmap; import android.util.AttributeSet; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; @@ -17,20 +19,26 @@ import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.listener.VideoAdapterCallBack; import com.mogo.module.v2x.scenario.view.IV2XWindow; import com.mogo.module.v2x.view.SimpleCoverVideoPlayer; +import com.mogo.utils.BitmapHelper; import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; +import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack; import com.shuyu.gsyvideoplayer.utils.GSYVideoType; +import com.shuyu.gsyvideoplayer.video.base.GSYVideoView; import java.util.ArrayList; import static com.mogo.module.v2x.VideoInitKt.initVideo; import static com.shuyu.gsyvideoplayer.utils.GSYVideoType.SCREEN_MATCH_FULL; - +/* +https://github.com/CarGuo/GSYVideoPlayer/tree/master/doc SimpleCoverVideoPlayer文档 +* */ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, IDestroyable, VideoAdapterCallBack { private static final String TAG = "V2XRoadVideoWindow"; private V2XWindowStatusListener mV2XWindowStatusListener; private ImageView playImageView; + private ImageView thumbnailImage; private ImageView closeImage; @@ -64,14 +72,76 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID LayoutInflater.from(mContext).inflate(R.layout.window_road_video_layout, this); initVideo(); playImageView = this.findViewById(R.id.window_video_play); + thumbnailImage = this.findViewById(R.id.thumbnail_image); simpleCoverVideoPlayer = this.findViewById(R.id.roadVideoView); GSYVideoType.setShowType(SCREEN_MATCH_FULL); - //mCurrentAspectRatio -// simpleCoverVideoPlayer. + closeImage = this.findViewById(R.id.roadVideoClose); closeImage.setOnClickListener(v -> { close(); }); + 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 @@ -86,9 +156,105 @@ public class V2XRoadVideoWindow extends RelativeLayout implements IV2XWindow, ID return; } if (path.contains(".mp4")) { - gsyVideoOptionBuilder.setUrl(path).setCacheWithPlay(false).setPlayTag(TAG) - .build(simpleCoverVideoPlayer); - simpleCoverVideoPlayer.getStartButton().performClick(); + startPlayWithVideoUrl(path); + Bitmap firstbitmap = BitmapHelper.getVideoThumbnail(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"); + + } + }); } } 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 bf8302607e..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 @@ -2,7 +2,6 @@ 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 @@ -38,7 +37,7 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer { 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/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 0000000000000000000000000000000000000000..90b401f17f34e25ad8c118ef2ac75ed33c9f99ff GIT binary patch literal 817 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q3?%1AoYnzSjKx9jP7LeL$-D$|4g~mwxB_YV z17>EBo0yoGfFuV82ax3A;^N`qL34?^y84P0D^{*txo6Lwy?ggQdGh4x)2A<9ym!8OD*qk9tg=Uzt$T5`*nGqCWp6n-JS)mR zzvP-$wbh2r&G3AcuWRAYzSD|9ciuiZ8*_A0LFlDbGj_~+P~aSM<*b%<>?~-%^Z0&E&;G#r&HdFIUe2v6 zRVs~oZ2FxuSBz!xqQBF({+;r5bIZR)7u$uF_BpTYb7K_Pv+J2$l@deW^LVe*oCi`? zF8*o3&~>kwsayQ(@~{ghpSfq6FD}`3`C^)rzN3IE>%QHJ1#740o9?)J(TZi)`xcem zmwzA3H1{+z+by3`)+VCIZ!gEO$6=Ka^C_)NP9BY@lmi9|(i0RD93&ncw98vv`{%f$ zJo_)E1?y#gO`3h`RhsRqO?g|9i% z^07hvI*>O+4{%j>vaV3iEXJb6Mw<&;$SlkUDe# literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..90b401f17f34e25ad8c118ef2ac75ed33c9f99ff GIT binary patch literal 817 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q3?%1AoYnzSjKx9jP7LeL$-D$|4g~mwxB_YV z17>EBo0yoGfFuV82ax3A;^N`qL34?^y84P0D^{*txo6Lwy?ggQdGh4x)2A<9ym!8OD*qk9tg=Uzt$T5`*nGqCWp6n-JS)mR zzvP-$wbh2r&G3AcuWRAYzSD|9ciuiZ8*_A0LFlDbGj_~+P~aSM<*b%<>?~-%^Z0&E&;G#r&HdFIUe2v6 zRVs~oZ2FxuSBz!xqQBF({+;r5bIZR)7u$uF_BpTYb7K_Pv+J2$l@deW^LVe*oCi`? zF8*o3&~>kwsayQ(@~{ghpSfq6FD}`3`C^)rzN3IE>%QHJ1#740o9?)J(TZi)`xcem zmwzA3H1{+z+by3`)+VCIZ!gEO$6=Ka^C_)NP9BY@lmi9|(i0RD93&ncw98vv`{%f$ zJo_)E1?y#gO`3h`RhsRqO?g|9i% z^07hvI*>O+4{%j>vaV3iEXJb6Mw<&;$SlkUDe# literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cbd22bb4860b02c0497f8fcf5acab7a058405302 GIT binary patch literal 3048 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 + android:scaleType="centerCrop" /> @@ -49,10 +48,10 @@ android:layout_gravity="bottom" android:background="@null" android:max="100" - android:visibility="gone" android:maxHeight="@dimen/dp_6" android:minHeight="@dimen/dp_6" - android:thumb="@null" /> + android:thumb="@null" + android:visibility="gone" /> + android:layout_gravity="center_vertical" + android:visibility="gone" /> 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 index 6bfd64acd8..ec3e8626d3 100644 --- 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 @@ -10,19 +10,33 @@ android:id="@+id/rlRoadEventList" android:layout_width="match_parent" android:layout_height="@dimen/dp_674" - android:layout_marginTop="@dimen/dp_30" android:layout_marginLeft="@dimen/dp_30" + android:layout_marginTop="@dimen/dp_30" android:layout_marginRight="@dimen/dp_30" android:layout_marginBottom="@dimen/dp_327" - app:roundLayoutRadius="@dimen/dp_28" - android:background="#D9FFFFFF"> + android:background="#D9FFFFFF" + app:roundLayoutRadius="@dimen/dp_28"> + android:layout_alignParentBottom="true" + android:clickable="true" /> + + +