Merge branch 'feature/v1.0.0' of gitlab.zhidaoauto.com:ecos/yycp-service/Launcher into feature/v1.0.0

This commit is contained in:
wangcongtao
2020-01-13 15:30:01 +08:00
36 changed files with 458 additions and 153 deletions

View File

@@ -19,7 +19,6 @@ 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.service.marker.MapMarkerAdapter;
import com.mogo.module.service.marker.MapMarkerView;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.connection.IMogoSocketManager;
@@ -29,7 +28,6 @@ import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.logger.Logger;
import java.util.List;
import java.util.Random;
/**
* author : donghongyu
@@ -122,22 +120,34 @@ public class MarkerServiceHandler {
@Override
public boolean onMarkerClicked(IMogoMarker marker) {
Logger.e(TAG, "点击了大而全中的Marker");
Logger.e(TAG, "onMarkerClicked 点击了大而全中的Marker" + marker);
if (lastMarker != null) {
// 设置未选中状态
MarkerShowEntity markerShowEntity = (MarkerShowEntity) marker.getObject();
markerShowEntity.setChecked(false);
drawMapMarker(markerShowEntity);
// 判断点击的是否是同一个
if (marker.equals(lastMarker)) {
Logger.w(TAG, "onMarkerClicked 与上一次点击的Marker一样不做处理" + marker);
return false;
}
lastMarker.destroy();
// 将上次选中 Marker 设置为未选中状态
MarkerShowEntity lastMarkerShowEntity = (MarkerShowEntity) lastMarker.getObject();
Logger.e(TAG, "onMarkerClicked 点击了大而全中的Marker lastMarkerShowEntity" + lastMarkerShowEntity);
lastMarkerShowEntity.setChecked(false);
drawMapMarker(lastMarkerShowEntity);
lastMarker.remove();
}
// 绘制选中的状态
// 将当前的Marker设置为选中
MarkerShowEntity markerShowEntity = (MarkerShowEntity) marker.getObject();
Logger.e(TAG, "onMarkerClicked 点击了大而全中的Marker markerShowEntity" + markerShowEntity);
markerShowEntity.setChecked(true);
lastMarker = drawMapMarker(markerShowEntity);
marker.destroy();
marker.remove();
return false;
}
}
@@ -147,6 +157,7 @@ public class MarkerServiceHandler {
* 绘制Marker
*/
public static void drawMapMarker(MarkerResponse response) {
lastMarker = null;
getMarkerManager().removeMarkers();
// 解析不同的Marker类型然后对应的进行绘制
@@ -245,19 +256,19 @@ public class MarkerServiceHandler {
//TODO 这里是用来测试的
public static void drawMapMarker() {
Logger.e(TAG, "=====绘制Marker====");
MapMarkerView mapMarkerView = new MapMarkerView(mContext);
MogoMarkerOptions options = new MogoMarkerOptions()
.icon(mapMarkerView)
.owner("CARD_TYPE_USER_DATA")
.latitude(39.574525d + new Random().nextDouble())
.longitude(116.21733d + new Random().nextDouble());
IMogoMarker marker = getMarkerManager().addMarker("CARD_TYPE_USER_DATA", options);
marker.setOnMarkerClickListener(mogoMarkerClickListener);
marker.setObject("我是Marker上面绑定的数据");
getMapUIController().changeZoom(8);
// Logger.e(TAG, "=====绘制Marker====");
//
// MapMarkerView mapMarkerView = new MapMarkerView(mContext);
//
// MogoMarkerOptions options = new MogoMarkerOptions()
// .icon(mapMarkerView)
// .owner("CARD_TYPE_USER_DATA")
// .latitude(39.574525d + new Random().nextDouble())
// .longitude(116.21733d + new Random().nextDouble());
// IMogoMarker marker = getMarkerManager().addMarker("CARD_TYPE_USER_DATA", options);
// marker.setOnMarkerClickListener(mogoMarkerClickListener);
// marker.setObject("我是Marker上面绑定的数据");
//
// getMapUIController().changeZoom(8);
}
}

View File

@@ -23,13 +23,9 @@ public class MapMarkerAdapter {
*/
public static View getMarkerView(Context context, MarkerShowEntity markerShowEntity) {
if (markerShowEntity.isChecked()) {
MapMarkerInfoView mapMarkerInfoView = new MapMarkerInfoView(context);
mapMarkerInfoView.updateView(markerShowEntity);
return mapMarkerInfoView;
return new MapMarkerInfoView(context, markerShowEntity);
} else {
MapMarkerView mapMarkerView = new MapMarkerView(context);
mapMarkerView.updateView(markerShowEntity);
return mapMarkerView;
return new MapMarkerView(context, markerShowEntity);
}
}
}

View File

@@ -0,0 +1,83 @@
package com.mogo.module.service.marker;
import android.content.Context;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.MogoImageView;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
* date : 2020-01-1310:55
* desc : 地图上抽离的Marker的共性
* version: 1.0
*/
public abstract class MapMarkerBaseView extends ConstraintLayout {
private String TAG = "MapMarkerBaseView";
protected Context mContext;
protected MogoImageView ivUserHead;
protected ImageView ivIconForeground;
protected ImageView ivCar;
public MapMarkerBaseView(Context context) {
super(context);
mContext = context;
initView(context);
}
public MapMarkerBaseView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mContext = context;
initView(context);
}
public MapMarkerBaseView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContext = context;
initView(context);
}
protected abstract void initView(Context context);
public abstract void updateView(MarkerShowEntity markerShowEntity);
protected void loadImageWithMarker(MarkerShowEntity markerShowEntity) {
if (!TextUtils.isEmpty(markerShowEntity.getIconUrl())) {
MarkerServiceHandler
.getImageloader()
.displayImage(markerShowEntity.getIconUrl(),
ivUserHead,
WindowUtils.dip2px(mContext, 50), WindowUtils.dip2px(mContext, 50),
new IMogoImageLoaderListener() {
@Override
public void onStart() {
}
@Override
public void onCompleted(Bitmap bitmap) {
// 刷新图标
Logger.d(TAG, "loaded.");
}
@Override
public void onFailure(Exception e) {
}
});
}
}
}

View File

@@ -1,7 +1,7 @@
package com.mogo.module.service.marker;
import android.content.Context;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -11,14 +11,10 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.MogoImageView;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
/**
* author : donghongyu
@@ -27,75 +23,80 @@ import com.mogo.utils.logger.Logger;
* desc : 地图Marker图标带文本信息
* version: 1.0
*/
public class MapMarkerInfoView extends ConstraintLayout {
public class MapMarkerInfoView extends MapMarkerBaseView {
private String TAG = "MapMarkerInfoView";
private Context mContext;
private MogoImageView ivUserHead;
private ImageView ivIconForeground;
private TextView tvMarkerContent;
private ConstraintLayout llMarkerContent;
private ImageView ivReverseTriangle;
public MapMarkerInfoView(Context context) {
super(context);
initView(context);
}
public MapMarkerInfoView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public MapMarkerInfoView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
private void initView(Context context) {
mContext = context;
public MapMarkerInfoView(Context context, MarkerShowEntity markerShowEntity) {
super(context);
updateView(markerShowEntity);
}
protected void initView(Context context) {
LayoutInflater.from(context).inflate(R.layout.view_map_marker_info, this);
ivUserHead = findViewById(R.id.ivUserHead);
ivIconForeground = findViewById(R.id.ivIconForeground);
llMarkerContent = findViewById(R.id.llMarkerContent);
ivReverseTriangle = findViewById(R.id.ivReverseTriangle);
ivCar = findViewById(R.id.ivCar);
tvMarkerContent = findViewById(R.id.tvMarkerContent);
}
public void updateView(MarkerShowEntity markerShowEntity) {
try {
Object bindObj = markerShowEntity.getBindObj();
switch (markerShowEntity.getMarkerType()) {
case ServiceConst
.CARD_TYPE_CARS_CHATTING:
ivIconForeground.setVisibility(View.GONE);
case ServiceConst
.CARD_TYPE_USER_DATA:
ivIconForeground.setVisibility(View.GONE);
if (bindObj instanceof MarkerOnlineCar) {
if (((MarkerOnlineCar) bindObj).getUserInfo().getGenderValue() == 0) {
llMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue);
} else {
llMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_purple_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_purple);
}
}
break;
case ServiceConst
.CARD_TYPE_ROAD_CONDITION:
break;
case ServiceConst
.CARD_TYPE_SHARE_MUSIC:
ivIconForeground.setVisibility(View.VISIBLE);
llMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_purple_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_purple);
break;
}
tvMarkerContent.setText(markerShowEntity.getTextContent());
MarkerServiceHandler
.getImageloader()
.displayImage(markerShowEntity.getIconUrl(), ivUserHead, WindowUtils.dip2px(mContext, 50), WindowUtils.dip2px(mContext, 50),
new IMogoImageLoaderListener() {
@Override
public void onStart() {
}
ivCar.setRotation(markerShowEntity.getMarkerLocation().getAngle());
if (!TextUtils.isEmpty(markerShowEntity.getTextContent())) {
tvMarkerContent.setText(markerShowEntity.getTextContent());
}
loadImageWithMarker(markerShowEntity);
@Override
public void onCompleted(Bitmap bitmap) {
// 刷新图标
Logger.d(TAG, "loaded.");
}
@Override
public void onFailure(Exception e) {
}
});
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -1,23 +1,17 @@
package com.mogo.module.service.marker;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.MogoImageView;
import com.mogo.utils.WindowUtils;
import com.mogo.utils.logger.Logger;
/**
* author : donghongyu
@@ -26,75 +20,75 @@ import com.mogo.utils.logger.Logger;
* desc : 地图Marker图标
* version: 1.0
*/
public class MapMarkerView extends ConstraintLayout {
public class MapMarkerView extends MapMarkerBaseView {
private String TAG = "MapMarkerView";
private Context mContext;
private MogoImageView ivUserHead;
private ImageView ivIconForeground;
private ImageView ivBg;
public MapMarkerView(Context context) {
super(context);
initView(context);
}
public MapMarkerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public MapMarkerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
public MapMarkerView(Context context, MarkerShowEntity markerShowEntity) {
super(context);
updateView(markerShowEntity);
}
protected void initView(Context context) {
setBackground(null);
private void initView(Context context) {
mContext = context;
LayoutInflater.from(context).inflate(R.layout.view_map_marker, this);
ivUserHead = findViewById(R.id.ivUserHead);
ivIconForeground = findViewById(R.id.ivIconForeground);
ivCar = findViewById(R.id.ivCar);
ivBg = findViewById(R.id.ivBg);
}
public void updateView(MarkerShowEntity markerShowEntity) {
try {
Object bindObj = markerShowEntity.getBindObj();
switch (markerShowEntity.getMarkerType()) {
case ServiceConst
.CARD_TYPE_CARS_CHATTING:
ivIconForeground.setVisibility(View.GONE);
case ServiceConst
.CARD_TYPE_USER_DATA:
ivIconForeground.setVisibility(View.GONE);
if (bindObj instanceof MarkerOnlineCar) {
if (((MarkerOnlineCar) bindObj).getUserInfo().getGenderValue() == 0) {
ivBg.setImageResource(R.drawable.bg_map_marker_blue);
} else {
ivBg.setImageResource(R.drawable.bg_map_marker_purple);
}
}
break;
case ServiceConst
.CARD_TYPE_ROAD_CONDITION:
break;
case ServiceConst
.CARD_TYPE_SHARE_MUSIC:
ivIconForeground.setVisibility(View.VISIBLE);
ivBg.setImageResource(R.drawable.bg_map_marker_purple);
break;
}
MarkerServiceHandler
.getImageloader()
.displayImage(markerShowEntity.getIconUrl(), ivUserHead, WindowUtils.dip2px(mContext, 50), WindowUtils.dip2px(mContext, 50),
new IMogoImageLoaderListener() {
@Override
public void onStart() {
ivCar.setRotation(markerShowEntity.getMarkerLocation().getAngle());
}
loadImageWithMarker(markerShowEntity);
@Override
public void onCompleted(Bitmap bitmap) {
// 刷新图标
Logger.d(TAG, "loaded.");
}
@Override
public void onFailure(Exception e) {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}