1. 与adas联调自车图标配置;

2. 修改自车动画实现位置;
This commit is contained in:
tongchenfei
2020-11-19 18:11:23 +08:00
parent b13e1fa28b
commit 92bc1bbebe
12 changed files with 217 additions and 157 deletions

View File

@@ -0,0 +1,107 @@
package com.mogo.module.common.map;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Looper;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.mogo.map.uicontroller.CarCursorOption;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.R;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.glide.GlideApp;
/**
* 自车图标工具类
*
* @author tongchenfei
*/
public class MyLocationUtil {
private static boolean isLoadingIcon = false;
private static boolean needEmphasizeMyLocation = false;
public static void emphasizeMyLocation(){
if (!isLoadingIcon) {
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().emphasizeMyLocation();
}else{
needEmphasizeMyLocation = true;
}
}
private static final CarCursorOption DEFAULT_OPTION = new CarCursorOption.Builder()
.build();
public static void setMyLocationIconUrl(Context context, String url) {
if (url == null || url.isEmpty()) {
return;
}
if (Looper.myLooper() != Looper.getMainLooper()) {
UiThreadHandler.post(() -> loadMyLocationIconInUiThread(context, url));
} else {
loadMyLocationIconInUiThread(context, url);
}
}
private static void loadMyLocationIconInUiThread(Context context, String url) {
if (!url.isEmpty()) {
isLoadingIcon = true;
RequestOptions options = new RequestOptions()
.placeholder(DEFAULT_OPTION.getCarCursorRes())
.error(DEFAULT_OPTION.getCarCursorRes())
.dontAnimate();
GlideApp.with(context)
.asBitmap()
.load(url)
.apply(options)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource,
@Nullable Transition<? super Bitmap> transition) {
DEFAULT_OPTION.setCarCursorBmp(inflateMyLocation(context, resource));
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().setCarCursorOption(DEFAULT_OPTION);
if (needEmphasizeMyLocation) {
needEmphasizeMyLocation = false;
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().emphasizeMyLocation();
}
isLoadingIcon = false;
}
@Override
public void onLoadStarted(@Nullable Drawable placeholder) {
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
}
});
}
}
private static Bitmap inflateMyLocation(Context context, Bitmap res) {
if (res == null) {
throw new IllegalArgumentException("inflate myLocation bitmap can not be null!");
}
View root =
LayoutInflater.from(context).inflate(R.layout.module_map_amap_my_location, null, false);
ImageView iv =
root.findViewById(R.id.module_map_amap_my_location_iv);
iv.setImageBitmap(res);
return BitmapDescriptorFactory.fromView(root).getBitmap();
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView
android:id="@+id/module_map_amap_my_location_bg_iv"
android:layout_width="@dimen/module_map_amap_my_location_bg_size"
android:layout_height="@dimen/module_map_amap_my_location_bg_size"
android:src="@drawable/map_api_ic_current_location2"/>
<ImageView
android:id="@+id/module_map_amap_my_location_iv"
android:layout_width="@dimen/module_map_amap_my_location_icon_width"
android:layout_height="@dimen/module_map_amap_my_location_icon_height"
android:layout_gravity="center"
android:src="@drawable/module_map_amap_my_location_icon"/>
</FrameLayout>

View File

@@ -1,11 +1,15 @@
package com.mogo.module.extensions.entrance;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Debug;
import android.os.Handler;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -21,6 +25,7 @@ import androidx.constraintlayout.widget.ConstraintSet;
import androidx.constraintlayout.widget.Group;
import com.alibaba.android.arouter.launcher.ARouter;
import com.amap.api.maps.model.MyLocationStyle;
import com.bumptech.glide.request.RequestOptions;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
@@ -42,6 +47,7 @@ import com.mogo.module.common.dialog.WMDialog;
import com.mogo.module.common.glide.SkinAbleBitmapTarget;
import com.mogo.module.common.map.CustomNaviInterrupter;
import com.mogo.module.common.map.MapCenterPointStrategy;
import com.mogo.module.common.map.MyLocationUtil;
import com.mogo.module.common.map.Scene;
import com.mogo.module.common.view.OnPreventFastClickListener;
import com.mogo.module.extensions.ExtensionsModuleConst;
@@ -836,7 +842,10 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
"://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1605705236512" +
"&di=50620661ded7035fb84899a408f9f27e&imgtype=0&src=http%3A%2F%2Fb-ssl" +
".duitang.com%2Fuploads%2Fitem%2F201409%2F11%2F20140911211243_3rT4u.jpeg");
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().setCarCursorOption(null);
MyLocationUtil.setMyLocationIconUrl(getContext(),"https" +
"://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1605705236512" +
"&di=50620661ded7035fb84899a408f9f27e&imgtype=0&src=http%3A%2F%2Fb-ssl" +
".duitang.com%2Fuploads%2Fitem%2F201409%2F11%2F20140911211243_3rT4u.jpeg");
// if (!toggle) {
// TopViewAnimHelper.getInstance().showNaviView();
// } else {
@@ -846,7 +855,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
});
findViewById(R.id.btnDebugCtrlSubView).setOnClickListener(view -> {
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().emphasizeMyLocation();
MyLocationUtil.emphasizeMyLocation();
// View v = LayoutInflater.from(getContext()).inflate(R.layout.demo_top, null);
// TextView tv = v.findViewById(R.id.tvIndex);
// tv.setText("sub view height: " + currentHeight + ": " + v);
@@ -879,7 +888,12 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
"&di=339d3259ad21f5f48c8abcd1bafff324&imgtype=0&src=http%3A%2F%2Fc-ssl" +
".duitang.com%2Fuploads%2Fitem%2F202004%2F23%2F20200423111550_4AJLr.thumb" +
".1000_0.jpeg");
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().emphasizeMyLocation();
MyLocationUtil.setMyLocationIconUrl(getContext(),"https" +
"://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1605705508574" +
"&di=339d3259ad21f5f48c8abcd1bafff324&imgtype=0&src=http%3A%2F%2Fc-ssl" +
".duitang.com%2Fuploads%2Fitem%2F202004%2F23%2F20200423111550_4AJLr.thumb" +
".1000_0.jpeg");
MyLocationUtil.emphasizeMyLocation();
// View v = LayoutInflater.from(getContext()).inflate(R.layout.demo_top, null);
// TextView tv = v.findViewById(R.id.tvIndex);
// Random random = new Random();
@@ -917,7 +931,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
tv.setText("entrance add");
mApis.getEntranceButtonController().addBottomLayerView(tv, 50, 50);
});
findViewById(R.id.btnShowTextTip).setOnClickListener(v-> TipToast.tip("分享成功"));
findViewById(R.id.btnShowTextTip).setOnClickListener(v-> TipToast.tip("分享成功分享成功分享成功分享成功分享成功分享成功分享成功分享成功分享成功"));
findViewById(R.id.btnShowDrawableTip).setOnClickListener(v->{
mMsgContainer.setVisibility(View.VISIBLE);
@@ -928,9 +942,17 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
findViewById(R.id.btnShowDrawableTipNoSize).setOnClickListener(v->{
mMsgContainer.setVisibility(View.GONE);
TipDrawable drawable =
new TipDrawable(getResources().getDrawable(R.drawable.model_ext_default_user_head));
TipToast.tip("分享成功",drawable);
String enthusiasmIndex = "一般的字加粗的字一般的字";
SpannableString spannableStringUnSelectCountStr = new SpannableString(enthusiasmIndex);
ForegroundColorSpan foregroundColorSpanUnSelectCount = new ForegroundColorSpan(Color.RED);
spannableStringUnSelectCountStr.setSpan(foregroundColorSpanUnSelectCount, 4, 7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
TipToast.tip(spannableStringUnSelectCountStr.toString());
// TipDrawable drawable =
// new TipDrawable(getResources().getDrawable(R.drawable.model_ext_default_user_head));
// TipToast.tip("分享成功",drawable);
});
}

View File

@@ -244,6 +244,7 @@ public class EntrancePresenter extends Presenter<EntranceView> implements Weathe
private void requestCarModelList() {
Map<String, String> params = new HashMap<>(8);
params.put("sn", Utils.getSn());
// params.put("sn", "ZD802B1932L00617");
mNetWork.create(UserInfoNetApiServices.class, DztHttpConstant.getBaseUrl()).
requestCarModelList(params).
subscribeOn(Schedulers.io()).

View File

@@ -12,11 +12,13 @@ import com.mogo.map.IMogoUiSettings;
import com.mogo.map.MogoMapView;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.map.MyLocationUtil;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.storage.SharedPrefsMgr;
/**
* @author congtaowang
@@ -50,6 +52,8 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements
mMogoMap = mMogoMapView.getMap();
mMogoMap.getUIController().showMyLocation( true );
mMogoMap.getUIController().recoverLockMode();// 启动锁车
// 根据本地配置设置自车图标
MyLocationUtil.setMyLocationIconUrl(getContext(), SharedPrefsMgr.getInstance(getContext()).getString("MY_LOCATION_CONFIG", ""));
}
@NonNull