From dbf76f50b6629fec1c993ad3722076adb30e3f64 Mon Sep 17 00:00:00 2001 From: liujing Date: Mon, 14 Dec 2020 14:45:48 +0800 Subject: [PATCH 01/11] =?UTF-8?q?[add]=20=E8=BF=9D=E7=AB=A0=E5=81=9C?= =?UTF-8?q?=E8=BD=A6=20=E8=B8=A9=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v2x/adapter/holder/V2XIllegalParkVH.java | 9 ++++++++- .../scene/test/V2XTestConsoleWindow.java | 2 ++ .../mogo/module/v2x/view/HeartUnLikeView.java | 12 ++++++++++- .../anim/v2x_unlike_heart_scale_ani_vr.xml | 16 +++++++++++++++ .../v2x_icon_unlike_animation_vr.png | Bin 1577 -> 1975 bytes .../layout/item_v2x_illegal_parking_vr.xml | 10 ++++----- .../main/res/layout/view_heart_unlike_vr.xml | 19 ++++++++++++++++-- 7 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/res/anim/v2x_unlike_heart_scale_ani_vr.xml diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java index 5f6854cd3e..0dc3538584 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java @@ -26,6 +26,9 @@ import com.mogo.module.v2x.voice.V2XVoiceManager; import com.mogo.utils.logger.Logger; import com.mogo.utils.network.utils.GsonUtil; +import java.util.logging.Handler; +import java.util.logging.LogRecord; + import static com.mogo.module.v2x.V2XConst.MODULE_NAME; /** @@ -142,6 +145,10 @@ public class V2XIllegalParkVH extends V2XBaseViewHolder { mExploreWay.getPoiType(), 3); } - delayedCloseWindow(); + if (!V2XServiceManager.getMoGoStatusManager().isVrMode()) { + delayedCloseWindow(); + } else { + mIIllegalParkingUnLike.setClickable(false); + } } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java index a39d5056bc..7777ae5c59 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java @@ -3,6 +3,7 @@ package com.mogo.module.v2x.scenario.scene.test; import android.content.Context; import android.content.Intent; import android.util.AttributeSet; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -257,6 +258,7 @@ public class V2XTestConsoleWindow extends ConstraintLayout { }); mBtnTriggerParkEvent.setOnClickListener(v -> { + Log.d("触发违章停车事件", "00"); V2XMessageEntity> v2XMessageEntity = TestOnLineCarUtils.getV2XIllegalParkData(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/HeartUnLikeView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/HeartUnLikeView.java index b361791431..9d7d45c720 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/HeartUnLikeView.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/HeartUnLikeView.java @@ -5,7 +5,10 @@ import android.animation.AnimatorInflater; import android.animation.AnimatorSet; import android.content.Context; import android.util.AttributeSet; +import android.util.Log; import android.view.View; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.LinearLayout; @@ -26,6 +29,7 @@ public class HeartUnLikeView extends LinearLayout implements Animator.AnimatorLi private AnimatorSet mAnimatorSet; private OnClickCallListener mOnClickCallListener; private boolean isAnimator = false; + private ImageView animationImageView; public HeartUnLikeView(Context context) { this(context, null); @@ -39,7 +43,7 @@ public class HeartUnLikeView extends LinearLayout implements Animator.AnimatorLi super(context, attrs, defStyleAttr); inflate(context, V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.layout.view_heart_unlike_vr : R.layout.view_heart_unlike, this); mIllegalParkingUnLike = findViewById(R.id.ivIllegalParkingUnLike); - + animationImageView = findViewById(R.id.animationImage); setOnClickListener(v -> { if (!isAnimator) { isAnimator = true; @@ -53,6 +57,12 @@ public class HeartUnLikeView extends LinearLayout implements Animator.AnimatorLi } mAnimatorSet.start(); } + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { + animationImageView.setVisibility(View.VISIBLE); + Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.v2x_unlike_heart_scale_ani_vr); + animationImageView.startAnimation(animation); + animationImageView.setVisibility(View.GONE); + } }); } diff --git a/modules/mogo-module-v2x/src/main/res/anim/v2x_unlike_heart_scale_ani_vr.xml b/modules/mogo-module-v2x/src/main/res/anim/v2x_unlike_heart_scale_ani_vr.xml new file mode 100644 index 0000000000..383effa7da --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/anim/v2x_unlike_heart_scale_ani_vr.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_unlike_animation_vr.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_unlike_animation_vr.png index e14d0188cbb3304d458319d7c229b3e4e8ba9ee1..41390407d8d837b1a2207d80f1dedeb027704804 100644 GIT binary patch literal 1975 zcmZ`)3p7+~6#j=%%;ff(BBU{i&^!$4n#Q;y4dq!T&+;0Xj2UJIQ@A9Lr4pr-k|e7d z4J(C0Aw{>VP`X_Wic%iqQPkvm)IA5uZFT>%{{7mH>GOA)pH&)Bv0fLckWGK8u|ZYiBre z03@*ha)#p$S$NT*4Qr;Yd=BD!#vHj>_KF<&S*!}nGDOV-kWmVuyYT@)FNHS(oXLWM zasjLzt^!xPZ4^IlFu}*4>&qkvgF|2ypb9Av3}y;^u)<(Ahffij;iecA2*Yk74m(8= z1exJn?HsX|Tpkl^LNF$fa5NMai>31X11Qc`)-!VG$qW}L5QI>O#E6IpLWB{4%iBXV zG&MCPlE_3d84oe={CymOj}Xt{ubxiwEsqtG@5f_>2v}SW7S8MA%MBBl;c#%F*)`p# zfEDn)5{Ex?Ea-qlI6^cekcdB%F@>!Ek-?E^+0?nF%TeKE6bBxQ2{jD2MKh#M75I3if|(pX z+}C>J8O@J@p97GHaOlF-Q_}XQl}jfRR#Q94JnP+(_~<~qhshQd zv6$fgarCI0LSM^#hVo5tx@IstrA15XcJ7l(4s}eC^JYCWDEyu*Ayxl`5c5_8(HC3q zja<^G_p5VjxlFZE+hh@UIND^M;~9>+Gxuoqq4)6~BdyC~Qw=XPUKuY%iz-;+{6mV@ z=J%?!2AS8H+;kfy1TLFYtZZD^S>j}W{daMVzgmtC$|5}b1|!>xfxO|Z^^yJXYRjEk z&r&JVw>3$rXtG)17ZK?%too&Ac+`7mOS%c6O{2g}Gc2Es z=#~W%<1bRwYKT2U@)-2mI>)POE9yy~Tnk9*%r7Ye%H}VwSJe@+AA~DMZo#A4<$=SWo20mgkfN8dL`yqR?4T~L54h%ne^<_paUL*XFKRbk zne{cXQ7+uZ_LfH2NJ*%^N9-GVT=tf1WXC$slie4(=}NuHp?QZ(%_p!?14#W{9gD_f zf28t}H0yNx6N8cay)m|K(hRf}o>ncvP}XQy&|c*(AUgyN1+-!A3(Nf)?(Tc}YBOy< z9Zd-4==mG{PFQXE6FNl)3yGu_a?d{%&rdG4bje%3Q=A7+vG2hJ4P0N*_xiIwnhKd`pSHCumAY z>#wgJb}(I5={>oTj;C*MpLE#ZvBmSIM`N0MM1)c7M1m11(cmGv3|De3Km}y3Ij2)i z2_1Hl$w?mfM@BxR$*ZjD3cY&P3l6>jp5`xo}B B{Q&>~ literal 1577 zcmV+^2G;qBP)Nkl-nPzsK6>H9%nKNh3oO9-};WBg2+55l#d%gBrdxUC3 zRmgHZFdE@T;3A+SKV8^Kj%_Gw=r0?qVpPX&rHj$P1YkID8E^(T3>-xH8u*eFn-S3< z7zxDA>g_1cAq)d-p*zq0?giV9FrTD+9BTs^9fz<0xFTS_$tlTGwj#_WC7=1{mJ?Ss zO)Li{$0Ffu$Q87XHXh+zF|AdO<9Z&aS&49m=cQi}<-|)9SCM2IB0cV-5^;z0I^dR= zq=Tj%Kp0O_ey(_#(RB#7)rjrg*hZ3!bIF&8XLLTo<23?TT2MJb8&}g;GR2pFX__AP z0Id=DevOw~L|H;w<~dQNWkealF1-)s<$^qK%=q^a z6hq!QLV}xUmmeMCS$zk%vq5dU%R5QQ3uRbY{S>&NN%$K`$-P2GFGl#ulR3ihqb-nQ z6#eD5BFGUPKnuV4v|Y`jQNil0Q-%pyy}Mw>+7*&O$zkSm0r!xSkv?rtMVX&}=AZAb zwa;3HFvB$d3c_8rtnLy z8xz}cg3{UGCXdQs7PcGl?|=a{fQL=pObZXuPqL0Ls?fz$;K{tBRE~H=E7u(|;@g4V zF^NY7r@2li;=?W-NRE#X&MrKwSKjwVd>Z5fsM%vVDOp(r-K)Ln%limdHbKw| zp-YFN*pVMJ;s%Sq*xx~tiQY1ltS*dERzz9A;V9fAg_QLPU^zD`_@c9b(nF4kbjU7` zi;P8?69Yd=Q3kP(BxBqnYXZs>O)#NByhd8yC}JJat7zeElwM827p#c;z#(q_*N?SG zp{FcKh%%l3$lpbh$we1Atmn|mdq}=twNdYZ?)Nt0m345pjv&Y4 zLQxdeN`-mWMozGVJ`6#4u?q31ET#F1zlE9BuK7(}DcreN32L09(v^Rs`+#{Qc$6GN zV+3cAqB=>7)%0bfdgsxlV}S=73RWkN{DZQAL|x6wifR{4;Vn~ECjs^sw?_=yXAWqI zaWm#(tR^LEssTp#dKsO9Fs5P62j}r%A6M3w9by5(qlsG=)6I0Wp&PC+#g*Sp3Y%!R zrX%>WGdLYqgSWKSl@C_yWWp{%qk`8j!5@s9Nz#dkxmD>$NLL{3L(x;9twq8-#e z^kyzFFd#1n2U~av@jItjz=d)$E@_)ro5o$_jP@nLT(rS!4dD}`Z}V?OSed{hUM;Ng&;OL{oNGCE{uqokWl+|aUW*U3`~#gvzyorJHG61(7U%4m+O zc&QxK>kuXt+{0WYhq9XfvZX1E3n0xW?r44_%J_nxuO%hlG?R4mUB%0;TW`+)+b(vg b+Vt^1n)N!N(TN-100000NkvXXu0mjfOdI+u diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking_vr.xml index 837cf017c1..d3d819a99e 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking_vr.xml @@ -9,13 +9,13 @@ android:paddingEnd="@dimen/dp_62"> + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="@+id/leftImageView" /> - - + + + From 84c9e505504792aad72c5d52584e3354da870bc1 Mon Sep 17 00:00:00 2001 From: liujing Date: Mon, 14 Dec 2020 15:06:29 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=BC=B9=E6=A1=86margi?= =?UTF-8?q?n=5Ftop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java | 6 +++++- .../src/main/res/layout/item_v2x_illegal_parking_vr.xml | 1 + .../src/main/res/layout/window_road_event_detail_vr.xml | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java index 0dc3538584..918b3fb2a0 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java @@ -132,7 +132,11 @@ public class V2XIllegalParkVH extends V2XBaseViewHolder { mExploreWay.getPoiType(), 2); } - delayedCloseWindow(); + if (!V2XServiceManager.getMoGoStatusManager().isVrMode()) { + delayedCloseWindow(); + } else { + mIlIllegalParkingLike.setClickable(false); + } } /** diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking_vr.xml index d3d819a99e..d3d0683aab 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_illegal_parking_vr.xml @@ -6,6 +6,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/dp_120" android:background="@drawable/v2x_bg_pop_up" + android:layout_marginTop="@dimen/dp_8" android:paddingEnd="@dimen/dp_62"> + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_8"> Date: Sun, 13 Dec 2020 17:16:31 +0800 Subject: [PATCH 03/11] opt --- .../utils/CameraLiveNoticeHelper.java | 33 +++++++++++++------ .../scene/obu/OptimalSpeedMarker.java | 4 ++- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java index fbec2bd1a7..2449ff7ebf 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java @@ -3,8 +3,11 @@ package com.mogo.module.extensions.utils; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.text.TextUtils; +import android.util.Log; import com.mogo.commons.AbsMogoApplication; +import com.mogo.commons.network.Utils; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.MogoMarkerOptions; @@ -18,6 +21,7 @@ import com.mogo.module.extensions.live.ExtensionServiceManager; import com.mogo.module.extensions.live.PushDataType; import com.mogo.service.connection.IMogoOnWebSocketMessageListener; import com.mogo.service.connection.WebSocketMsgType; +import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -80,7 +84,7 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener { .latitude(entity.getLat()) .longitude(entity.getLon()).anchor(0.5f,0.9f).icon(ViewUtils.fromView(new OptimalSpeedMarkerView(V2XServiceManager.getContext()))); optimalMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_OPTIMAL_SPEED_MARKER, optionsRipple); - optimalMarker.setClickable(false); + if (optimalMarker != null) { + optimalMarker.setClickable(false); + } } @Override From 1bbf312f1b01e08009489a051683d72fa4cf68ce Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Mon, 14 Dec 2020 15:37:01 +0800 Subject: [PATCH 04/11] opt --- .idea/gradle.xml | 1 + .../mogo/base/websocket/WebSocketManager.java | 3 +- .../extensions/entrance/EntranceProvider.java | 2 -- .../live/CameraLiveGSYVideoView.java | 3 +- .../extensions/live/CameraLiveManager.java | 23 +++++++------- .../extensions/live/PushCameraLiveWindow.java | 2 +- .../utils/CameraLiveNoticeHelper.java | 30 ++++++++++--------- .../res/layout/camera_item_v2x_live_video.xml | 5 ++-- .../res/layout/camera_push_live_video.xml | 2 +- .../src/main/res/values-ldpi/dimens.xml | 3 +- .../src/main/res/values-mdpi/dimens.xml | 4 +-- .../res/values-xhdpi-1920x1000/dimens.xml | 3 +- .../src/main/res/values-xhdpi/dimens.xml | 3 +- .../src/main/res/values/dimens.xml | 3 +- .../module/media/window/MediaWindow2.java | 4 +++ 15 files changed, 49 insertions(+), 42 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index b892d6479b..cfc605c98e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -84,6 +84,7 @@ diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java index 81cacb5570..69b1640fab 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java @@ -183,7 +183,7 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin WebSocketData webSocketData = GsonUtil.objectFromJson(message, WebSocketData.class); int msgType = webSocketData.getMsgType(); Logger.d(TAG, "websocket received msg type = " + msgType); - +// Logger.d("liyz", "websocket received msg = " + message + "----type = " + msgType); //服务端下发数据返回,上传数据回执默认不返回 if (msgType == MSG_TYPE_DOWNLINK_CAR_DATA.getMsgType()) { List listeners = mListeners.get(msgType); @@ -192,6 +192,7 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin while (iterator.hasNext()) { IMogoOnWebSocketMessageListener listener = iterator.next(); if (listener != null) { +// Logger.d("liyz", "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData()); Logger.d(TAG, "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData()); Object receiveObj = GsonUtil.objectFromJson(webSocketData.getData(),listener.target()); listener.onMsgReceived(receiveObj); diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java index 60f7f59746..c76f444a51 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceProvider.java @@ -34,7 +34,6 @@ public class EntranceProvider implements IMogoModuleProvider { public Fragment createFragment( Context context, Bundle data ) { mFragment = new EntranceFragment(); mFragment.setArguments( data ); - Log.d("liyz", " createFragment ------> "); ExtensionServiceManager.init(context); return mFragment; } @@ -77,7 +76,6 @@ public class EntranceProvider implements IMogoModuleProvider { @Override public void init( Context context ) { - Log.d("liyz", " EntranceProvider init ------> "); ExtensionServiceManager.init(context); } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveGSYVideoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveGSYVideoView.java index 601f041786..19c37173f7 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveGSYVideoView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveGSYVideoView.java @@ -28,7 +28,7 @@ import com.tencent.rtmp.ui.TXCloudVideoView; * V2XLiveGSYVideoView */ public class CameraLiveGSYVideoView extends LiveRoundLayout implements IMogoSkinCompatSupportable { - private static final String TAG = "CameraLiveGSYVideoView"; + private static final String TAG = "liyz"; private TXCloudVideoView mTxcVideoView; private ProgressBar mLoading; @@ -150,6 +150,7 @@ public class CameraLiveGSYVideoView extends LiveRoundLayout implements IMogoSkin } } catch (Exception e) { e.printStackTrace(); + Logger.w(TAG, "播放器:onNetStatus e = " + e); mLoading.setVisibility(GONE); mClLoadError.setVisibility(VISIBLE); } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveManager.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveManager.java index 4debd09358..60285cc361 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveManager.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/CameraLiveManager.java @@ -17,28 +17,28 @@ import com.mogo.utils.logger.Logger; * 路边摄像头直播控制 V2XPushLiveCarScenario */ public class CameraLiveManager extends AbsCameraScenario implements IMogoTopViewStatusListener { - private static final String TAG = "CameraLiveManager"; - private static CameraLiveManager mCameraLiveCarScenario; + private static final String TAG = "liyz"; + private static CameraLiveManager mCameraLiveManager; private boolean isShowWindow; private CameraLiveManager() { } public static CameraLiveManager getInstance() { - if (mCameraLiveCarScenario == null) { + if (mCameraLiveManager == null) { synchronized (CameraLiveManager.class) { - if (mCameraLiveCarScenario == null) { - mCameraLiveCarScenario = new CameraLiveManager(); - mCameraLiveCarScenario.setV2XWindow(new PushCameraLiveWindow()); + if (mCameraLiveManager == null) { + mCameraLiveManager = new CameraLiveManager(); + mCameraLiveManager.setV2XWindow(new PushCameraLiveWindow()); } } } - return mCameraLiveCarScenario; + return mCameraLiveManager; } @Override public void init(@Nullable CloudRoadData cloudRoadData) { - Log.d(TAG, "CameraLiveManager init -----> "); + Log.d(TAG, "CameraLiveManager init -----> isShowWindow = " + isShowWindow); if (isShowWindow) { close(); } @@ -54,11 +54,10 @@ public class CameraLiveManager extends AbsCameraScenario implemen @Override public void showWindow() { - Log.d(TAG, "CameraLiveManager showWindow --------"); + Log.d(TAG, "CameraLiveManager showWindow getV2XWindow = " + getV2XWindow()); if (getV2XWindow() != null) { ViewGroup.LayoutParams layoutParams = - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, + new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) AbsMogoApplication.getApp().getResources() .getDimension(R.dimen.module_video_window_height_content)); @@ -67,7 +66,6 @@ public class CameraLiveManager extends AbsCameraScenario implemen .addViewNoLinkage(getV2XWindow().getView(), layoutParams, this); getV2XWindow().show(getmCloudRoadData()); isShowWindow = true; -// ExtensionServiceManager.getMoGoV2XStatusManager().setRoadLiveCarWindowShow(TAG, true); } } @@ -77,7 +75,6 @@ public class CameraLiveManager extends AbsCameraScenario implemen getV2XWindow().close(); } isShowWindow = false; -// ExtensionServiceManager.getMoGoV2XStatusManager().setRoadLiveCarWindowShow(TAG, false); } @Override diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/PushCameraLiveWindow.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/PushCameraLiveWindow.java index 70c79b5528..f408132cbe 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/PushCameraLiveWindow.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/live/PushCameraLiveWindow.java @@ -77,7 +77,7 @@ public class PushCameraLiveWindow extends RelativeLayout implements ICameraWindo Logger.w(TAG, "更新直播信息 show entity = " + entity); if (!TextUtils.isEmpty(entity.getRtmpUrl())) { Logger.w(TAG, "entity.getRtmpUrl() = " + entity.getRtmpUrl()); - mIvReportHead.setVisibility(VISIBLE); + mIvReportHead.setVisibility(INVISIBLE); ExtensionServiceManager.getImageLoader() .displayImage(entity.getRtmpUrl(), mIvReportHead); mLiveGSYVideoView.startLive(entity.getRtmpUrl()); diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java index 2449ff7ebf..40de273e4a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java @@ -3,16 +3,12 @@ package com.mogo.module.extensions.utils; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.text.TextUtils; import android.util.Log; -import com.mogo.commons.AbsMogoApplication; -import com.mogo.commons.network.Utils; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.common.constants.DataTypes; import com.mogo.module.common.entity.CloudRoadData; import com.mogo.module.common.entity.MogoSnapshotSetData; import com.mogo.module.extensions.R; @@ -30,15 +26,25 @@ import com.mogo.utils.logger.Logger; * */ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener { - private static final String TAG = "CameraLiveNoticeHelper"; + private static final String TAG = "liyz"; private Context mContext; private static IMogoMarker mMogoMarker; private CloudRoadData mCloudRoadData; public void init(Context context) { - Logger.d(TAG, "init===="); + Logger.d(TAG, "init ======= "); mContext = context; + + //test +// UiThreadHandler.postDelayed( () -> { +// mCloudRoadData = new CloudRoadData(); +// mCloudRoadData.setRtmpUrl("rtmp://58.200.131.2:1935/livetv/hunantv"); +// mCloudRoadData.setLat(40.200353); +// mCloudRoadData.setLon(116.745467); +// CameraLiveManager.getInstance().init(mCloudRoadData); +// }, 2_000 ); + ExtensionServiceManager .getMogoRegisterCenter().registerMogoMarkerClickListener(PushDataType.TYPE_PUSH_CAMERA_DATA, new IMogoMarkerClickListener() { @Override @@ -70,23 +76,19 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener @@ -32,6 +31,6 @@ app:miv_placeHolder="@drawable/icon_default_user_head" app:miv_shape="circle" app:miv_shapeBorderWidth="@dimen/dp_4" - tools:visibility="visible" /> + tools:visibility="invisible" /> \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/layout/camera_push_live_video.xml b/modules/mogo-module-extensions/src/main/res/layout/camera_push_live_video.xml index a444b15a4a..56e9b73045 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/camera_push_live_video.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/camera_push_live_video.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/rlRoadEventDetail" android:layout_width="match_parent" - android:layout_height="@dimen/v2x_video_window_height_content" + android:layout_height="@dimen/module_video_window_height_content" android:clipToPadding="false"> 0px -6px 20px - 370px + 300px + 400px \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-mdpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-mdpi/dimens.xml index 286f0b120f..b268db611b 100644 --- a/modules/mogo-module-extensions/src/main/res/values-mdpi/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-mdpi/dimens.xml @@ -14,6 +14,6 @@ -1 0px 20px - 370px - + 300px + 400px \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml index 9d0821625b..ca06e7f314 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml @@ -161,5 +161,6 @@ 0px 36px - 664px + 393px + 700px \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml index f35e24782f..ca44fd8dcb 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml @@ -178,6 +178,7 @@ 20px 36px - 664px + 393px + 700px \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index 173e3fb522..30d6518fb6 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -238,7 +238,8 @@ 36px 21px 21px + 400px + 300px - 370px \ No newline at end of file diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java index c3f8748bea..1959a9947e 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java @@ -122,6 +122,10 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { } if (descriptor == StatusDescriptor.VR_MODE) { + if (mWindowView == null) { + return; + } + ServiceMediaHandler.getMogoWindowManager().removeView(mWindowView); mHasAddWindow = false; addWindowView(); From fb36b3321544b5e5a14a22a5430f4ed79b63e226 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Mon, 14 Dec 2020 16:04:55 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E8=A7=A3=E5=86=B3topView=E5=86=85?= =?UTF-8?q?=E5=AD=98=E6=B3=84=E6=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 + .idea/misc.xml | 2 +- .../extensions/entrance/EntranceFragment.java | 71 +-- .../extensions/navi/AnimNavInfoView.java | 217 +++++++++ .../extensions/navi/BaseNaviInfoView.java | 21 +- .../module/extensions/navi/NaviInfoView.java | 41 +- .../extensions/navi/VrModeNavInfoView.java | 22 +- .../extensions/utils/TopViewAnimHelper.java | 424 +++--------------- .../utils/TrafficLightPanelManager.java | 4 +- .../res/layout/include_navi_info_panle.xml | 26 +- .../include_navi_info_panle_has_top.xml | 246 ++++++++++ .../res/layout/module_ext_layout_entrance.xml | 42 +- .../module_ext_layout_entrance_no_map.xml | 9 +- 13 files changed, 673 insertions(+), 453 deletions(-) create mode 100644 modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/AnimNavInfoView.java create mode 100644 modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle_has_top.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml index b892d6479b..cfc605c98e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -84,6 +84,7 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index 3b62eef43d..f4d5deeca6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 612e36b511..f5b6f63acd 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -48,6 +48,7 @@ import com.mogo.module.common.map.Scene; import com.mogo.module.common.view.OnPreventFastClickListener; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.extensions.R; +import com.mogo.module.extensions.navi.AnimNavInfoView; import com.mogo.module.extensions.navi.BaseNaviInfoView; import com.mogo.module.extensions.navi.NaviInfoView; import com.mogo.module.extensions.navi.VrModeNavInfoView; @@ -126,6 +127,8 @@ public class EntranceFragment extends MvpFragment properties = new HashMap<>(); - properties.put("type", 1); - MogoApisHandler.getInstance().getApis().getAnalyticsApi().track("APP_Find_Mogoer", properties); - } - } ); +// mOnlineCarEntrance = findViewById(R.id.module_ext_id_destination_online_car); +// mOnlineCarEntrance.setOnClickListener(new OnPreventFastClickListener() { +// @Override +// public void onClickImpl(View v) { +// MogoApisHandler.getInstance().getApis().getOnlineCarPanelApi().showPanel(); +// Map properties = new HashMap<>(); +// properties.put("type", 1); +// MogoApisHandler.getInstance().getApis().getAnalyticsApi().track("APP_Find_Mogoer", properties); +// } +// } ); tvEnterVrMode = findViewById(R.id.module_ext_enter_vr_mode); tvEnterVrMode.setOnClickListener((v)->{ // 进入vr模式 @@ -504,9 +509,9 @@ public class EntranceFragment extends MvpFragment { - SharedPrefsMgr.getInstance(getContext()).putString("MY_LOCATION_CONFIG", "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"); - 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 { -// TopViewAnimHelper.getInstance().hideNaviView(); -// } -// toggle = !toggle; +// SharedPrefsMgr.getInstance(getContext()).putString("MY_LOCATION_CONFIG", "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"); +// 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 { + TopViewAnimHelper.getInstance().hideNaviView(); + } + toggle = !toggle; }); findViewById(R.id.btnDebugCtrlSubView).setOnClickListener(view -> { diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/AnimNavInfoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/AnimNavInfoView.java new file mode 100644 index 0000000000..4735dbfb0c --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/AnimNavInfoView.java @@ -0,0 +1,217 @@ +package com.mogo.module.extensions.navi; + +import android.content.Context; +import android.transition.TransitionManager; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.constraintlayout.widget.ConstraintSet; +import androidx.constraintlayout.widget.Group; + +import com.mogo.map.navi.MogoNaviInfo; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.view.OnPreventFastClickListener; +import com.mogo.module.extensions.R; + +import java.util.HashMap; +import java.util.Map; + +/** + * 带动画的导航框 + * + * @author tongchenfei + */ +public class AnimNavInfoView extends BaseNaviInfoView { + private final ImageView turnIcon; + private final TextView distance; + private final TextView distanceUnit; + private final TextView nextRoad; + + private final TextView remainingDistance; + private final TextView remainingDistanceUnit; + private final TextView remainingTime; + private final TextView remainingTimeUnit; + private final TextView arriveTime; + + private final View naviBg; + + private final TextView tvDestinationOnlineCar; + + private final Group remainTimeGroup, remainDistanceGroup, arriveTimeGroup; + + private final ConstraintSet constraintSet = new ConstraintSet(); + + public AnimNavInfoView(Context context) { + this(context, null); + } + + public AnimNavInfoView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public AnimNavInfoView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + LayoutInflater.from(context).inflate(R.layout.include_navi_info_panle, this); + + naviBg = findViewById(R.id.module_map_id_navi_bg); + + turnIcon = findViewById(R.id.module_map_id_navi_next_info_road_turn_icon); + distance = findViewById(R.id.module_map_id_navi_next_info_distance); + distanceUnit = findViewById(R.id.module_map_id_navi_next_info_distance_unit); + nextRoad = findViewById(R.id.module_map_id_navi_next_info_road); + + remainingDistance = findViewById(R.id.module_map_id_remaining_distance); + remainingDistanceUnit = findViewById(R.id.module_map_id_remaining_distance_unit); + remainingTime = findViewById(R.id.module_map_id_remaining_time); + remainingTimeUnit = findViewById(R.id.module_map_id_remaining_time_unit); + arriveTime = findViewById(R.id.module_map_id_arrive_time); + + remainTimeGroup = findViewById(R.id.remainTimeGroup); + remainDistanceGroup = findViewById(R.id.remainDistanceGroup); + arriveTimeGroup = findViewById(R.id.arriveTimeGroup); + + tvDestinationOnlineCar = findViewById(R.id.module_ext_id_destination_online_car); + + tvDestinationOnlineCar.setOnClickListener(new OnPreventFastClickListener() { + @Override + public void onClickImpl(View v) { + MogoApisHandler.getInstance().getApis().getOnlineCarPanelApi().showPanel(); + Map properties = new HashMap<>(); + properties.put("type", 1); + MogoApisHandler.getInstance().getApis().getAnalyticsApi().track("APP_Find_Mogoer", properties); + } + }); + } + + @Override + public boolean isVisible() { + return turnIcon != null && turnIcon.getVisibility() == View.VISIBLE; + } + + + @Override + public void notifyChanged(MogoNaviInfo naviInfo) { + if (naviInfo == null) { + return; + } + fillNextCrossDistance(distance, distanceUnit, naviInfo.getCurStepRetainDistance()); + fillNextCrossIconType(turnIcon, naviInfo.getIconResId()); + nextRoad.setText(naviInfo.getNextRoadName()); + + remainingDistance.setText(getFormatSurplusDistance(naviInfo.getPathRetainDistance())); + remainingDistanceUnit.setText(getFormatSurplusDistanceUnit()); + + remainingTime.setText(getFormatSurplusTime(naviInfo.getPathRetainTime())); + remainingTimeUnit.setText(getFormatSurplusTimeUnit()); + + arriveTime.setText(getArriveTime(naviInfo.getPathRetainTime())); + } + + public void exchangeToSmall(boolean smooth) { + if (smooth) { + TransitionManager.beginDelayedTransition(this); + } + remainDistanceGroup.setVisibility(View.GONE); + remainTimeGroup.setVisibility(View.GONE); + arriveTimeGroup.setVisibility(View.GONE); + distance.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize_small)); + distanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize_small)); + + // 调整约束 + constraintSet.clone(this); + constraintSet.connect(distance.getId(), ConstraintSet.BOTTOM, + turnIcon.getId(), ConstraintSet.BOTTOM); + constraintSet.connect(turnIcon.getId(), ConstraintSet.LEFT, + naviBg.getId(), ConstraintSet.LEFT, + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_turn_icon_small_marginLeft)); + constraintSet.connect(nextRoad.getId(), ConstraintSet.BOTTOM, + distance.getId(), ConstraintSet.BOTTOM, + getResources().getDimensionPixelSize(R.dimen.module_map_id_navi_next_info_road_marginBottom_small)); + constraintSet.connect(nextRoad.getId(), ConstraintSet.LEFT, + R.id.module_map_id_navi_next_info_turn_info, ConstraintSet.RIGHT, + getResources().getDimensionPixelSize(R.dimen.dp_46)); + constraintSet.clear(turnIcon.getId(), ConstraintSet.TOP); + constraintSet.connect(turnIcon.getId(), ConstraintSet.BOTTOM, + naviBg.getId(), ConstraintSet.BOTTOM, + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_turn_icon_margin_bottom)); + + // 目的地车友 + constraintSet.clear(tvDestinationOnlineCar.getId(), ConstraintSet.LEFT); + constraintSet.clear(tvDestinationOnlineCar.getId(), ConstraintSet.TOP); + constraintSet.connect(tvDestinationOnlineCar.getId(), + ConstraintSet.BOTTOM, naviBg.getId(), ConstraintSet.BOTTOM, + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_small_margin_bottom)); + constraintSet.connect(tvDestinationOnlineCar.getId(), + ConstraintSet.RIGHT, naviBg.getId(), ConstraintSet.RIGHT, + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_small_margin_right)); + + constraintSet.applyTo(this); + + turnIcon.getLayoutParams().height = + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_turn_icon_small_height); + turnIcon.getLayoutParams().width = + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_turn_icon_small_width); + naviBg.getLayoutParams().height = + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_small_height); + + tvDestinationOnlineCar.getLayoutParams().height = + getResources().getDimensionPixelSize(R.dimen.module_ext_button_height_small); + + tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_small_bkg); + + } + + public void exchangeToBig(boolean smooth) { + if (smooth) { + TransitionManager.beginDelayedTransition(this); + } + + remainDistanceGroup.setVisibility(View.VISIBLE); + remainTimeGroup.setVisibility(View.VISIBLE); + arriveTimeGroup.setVisibility(View.VISIBLE); + distance.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize)); + distanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize)); + + // 调整约束 + constraintSet.clone(this); + constraintSet.clear(distance.getId(), ConstraintSet.BOTTOM); + constraintSet.connect(turnIcon.getId(), ConstraintSet.LEFT, + naviBg.getId(), ConstraintSet.LEFT, + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_turn_icon_marginLeft)); + constraintSet.connect(nextRoad.getId(), ConstraintSet.BOTTOM, turnIcon.getId(), + ConstraintSet.BOTTOM); + constraintSet.connect(nextRoad.getId(), ConstraintSet.LEFT, + distance.getId(), ConstraintSet.LEFT, + 0); + constraintSet.connect(turnIcon.getId(), ConstraintSet.TOP, naviBg.getId(), + ConstraintSet.TOP, 0); + constraintSet.connect(turnIcon.getId(), ConstraintSet.BOTTOM, + naviBg.getId(), ConstraintSet.BOTTOM, 0); + + // 目的地车友 + constraintSet.clear(tvDestinationOnlineCar.getId(), ConstraintSet.RIGHT); + constraintSet.clear(tvDestinationOnlineCar.getId(), ConstraintSet.BOTTOM); + constraintSet.connect(tvDestinationOnlineCar.getId(), ConstraintSet.LEFT, + naviBg.getId(), ConstraintSet.LEFT); + constraintSet.connect(tvDestinationOnlineCar.getId(), ConstraintSet.TOP, + naviBg.getId(), ConstraintSet.BOTTOM, + getResources().getDimensionPixelSize(R.dimen.module_ext_camera_button_marginTop)); + constraintSet.applyTo(this); + + turnIcon.getLayoutParams().height = + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_turn_icon_height); + turnIcon.getLayoutParams().width = + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_turn_icon_width); + naviBg.getLayoutParams().height = + getResources().getDimensionPixelSize(R.dimen.module_ext_navi_info_panel_height); + tvDestinationOnlineCar.getLayoutParams().height = + getResources().getDimensionPixelSize(R.dimen.module_ext_button_height); + tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_bkg); + + } +} diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java index e7d9199ac4..b807d7f67e 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/BaseNaviInfoView.java @@ -1,9 +1,13 @@ package com.mogo.module.extensions.navi; +import android.content.Context; +import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import androidx.constraintlayout.widget.ConstraintLayout; + import com.mogo.map.navi.MogoNaviInfo; import java.text.SimpleDateFormat; @@ -15,13 +19,20 @@ import java.util.Calendar; *

* 描述 */ -public abstract class BaseNaviInfoView { - - public BaseNaviInfoView(View view) { - +public abstract class BaseNaviInfoView extends ConstraintLayout { + public BaseNaviInfoView(Context context) { + this(context,null); } - public abstract void notifyChanged( MogoNaviInfo naviInfo ); + public BaseNaviInfoView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public BaseNaviInfoView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public abstract void notifyChanged(MogoNaviInfo naviInfo ); protected void fillNextCrossIconType( ImageView target, int iconId ) { if ( iconId > 0 ) { diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/NaviInfoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/NaviInfoView.java index 67110d0ba7..8d7f08e5a4 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/NaviInfoView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/NaviInfoView.java @@ -1,5 +1,7 @@ package com.mogo.module.extensions.navi; +import android.content.Context; +import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -12,7 +14,10 @@ import com.mogo.module.extensions.R; * @since 2019-09-29 *

* 导航信息 + * + * @deprecated 已经废弃 */ +@Deprecated public class NaviInfoView extends BaseNaviInfoView { private ImageView turnIcon; @@ -26,20 +31,32 @@ public class NaviInfoView extends BaseNaviInfoView { private TextView remainingTimeUnit; private TextView arriveTime; - public NaviInfoView(View view) { - super(view); - turnIcon = view.findViewById( R.id.module_map_id_navi_next_info_road_turn_icon ); - distance = view.findViewById( R.id.module_map_id_navi_next_info_distance ); - distanceUnit = view.findViewById( R.id.module_map_id_navi_next_info_distance_unit ); - nextRoad = view.findViewById( R.id.module_map_id_navi_next_info_road ); - - remainingDistance = view.findViewById( R.id.module_map_id_remaining_distance ); - remainingDistanceUnit = view.findViewById( R.id.module_map_id_remaining_distance_unit ); - remainingTime = view.findViewById( R.id.module_map_id_remaining_time ); - remainingTimeUnit = view.findViewById( R.id.module_map_id_remaining_time_unit ); - arriveTime = view.findViewById( R.id.module_map_id_arrive_time ); + public NaviInfoView(Context context) { + this(context,null); } + public NaviInfoView(Context context, AttributeSet attrs) { + this(context, attrs,0); + } + + public NaviInfoView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + +// public NaviInfoView(View view) { +// super(view); +// turnIcon = view.findViewById( R.id.module_map_id_navi_next_info_road_turn_icon ); +// distance = view.findViewById( R.id.module_map_id_navi_next_info_distance ); +// distanceUnit = view.findViewById( R.id.module_map_id_navi_next_info_distance_unit ); +// nextRoad = view.findViewById( R.id.module_map_id_navi_next_info_road ); +// +// remainingDistance = view.findViewById( R.id.module_map_id_remaining_distance ); +// remainingDistanceUnit = view.findViewById( R.id.module_map_id_remaining_distance_unit ); +// remainingTime = view.findViewById( R.id.module_map_id_remaining_time ); +// remainingTimeUnit = view.findViewById( R.id.module_map_id_remaining_time_unit ); +// arriveTime = view.findViewById( R.id.module_map_id_arrive_time ); +// } + @Override public boolean isVisible() { return turnIcon != null && turnIcon.getVisibility() == View.VISIBLE; diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/VrModeNavInfoView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/VrModeNavInfoView.java index 428d98494a..44b2f6fc02 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/VrModeNavInfoView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/VrModeNavInfoView.java @@ -1,5 +1,7 @@ package com.mogo.module.extensions.navi; +import android.content.Context; +import android.util.AttributeSet; import android.view.View; import com.mogo.map.navi.MogoNaviInfo; @@ -10,16 +12,26 @@ import com.mogo.map.navi.MogoNaviInfo; * @author tongchenfei */ public class VrModeNavInfoView extends BaseNaviInfoView { - public VrModeNavInfoView(View view) { - super(view); + + public VrModeNavInfoView(Context context) { + this(context,null); } - @Override - public boolean isVisible() { - return true; + public VrModeNavInfoView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public VrModeNavInfoView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); } @Override public void notifyChanged(MogoNaviInfo naviInfo) { + + } + + @Override + public boolean isVisible() { + return false; } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java index ce4008e550..e1bcd5f76a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java @@ -2,28 +2,22 @@ package com.mogo.module.extensions.utils; import android.animation.Animator; import android.os.Handler; -import android.transition.AutoTransition; import android.transition.Transition; -import android.transition.TransitionManager; import android.util.ArrayMap; -import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; -import android.widget.ImageView; import android.widget.TextView; import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.constraintlayout.widget.ConstraintSet; -import androidx.constraintlayout.widget.Group; -import com.mogo.commons.debug.DebugConfig; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.map.MapCenterPointStrategy; import com.mogo.module.common.map.Scene; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.extensions.R; +import com.mogo.module.extensions.navi.AnimNavInfoView; import com.mogo.module.extensions.navi.TopView; import com.mogo.service.windowview.IMogoTopViewStatusListener; import com.mogo.utils.logger.Logger; @@ -42,21 +36,10 @@ public class TopViewAnimHelper { private static final String TAG = "TopViewAnimHelper"; private ConstraintLayout topMotionLayout; - private Group remainTimeGroup, remainDistanceGroup, arriveTimeGroup; - private View naviBg; - - private ImageView ivTurnIcon; - private TextView tvNextDistance; - private TextView tvNextRoad; - private TextView tvNextDistanceUnit; - private TextView tvTurnInfo; private TopView topContainer; - private TextView tvDestinationOnlineCar; - - private ConstraintSet constraintSet; - private Transition transition; private TextView cameraMode; + private AnimNavInfoView navInfoView; private float topHeight = 0f; @@ -89,80 +72,12 @@ public class TopViewAnimHelper { } public void init(ConstraintLayout rootView, OnTopViewAnimSimpleListener listener) { - - constraintSet = new ConstraintSet(); - transition = new AutoTransition(); - topMotionLayout = rootView; - naviBg = rootView.findViewById(R.id.module_map_id_navi_bg); - remainTimeGroup = rootView.findViewById(R.id.remainTimeGroup); - remainDistanceGroup = rootView.findViewById(R.id.remainDistanceGroup); - arriveTimeGroup = rootView.findViewById(R.id.arriveTimeGroup); topContainer = rootView.findViewById(R.id.module_entrance_id_top_container); - tvNextDistanceUnit = rootView.findViewById(R.id.module_map_id_navi_next_info_distance_unit); - tvTurnInfo = rootView.findViewById(R.id.module_map_id_navi_next_info_turn_info); - tvDestinationOnlineCar = rootView.findViewById(R.id.module_ext_id_destination_online_car); + navInfoView = rootView.findViewById(R.id.module_ext_id_anim_nav_info); topContainer.setSlideListener(this::startLatestTopOutAnim); - ivTurnIcon = rootView.findViewById(R.id.module_map_id_navi_next_info_road_turn_icon); - tvNextDistance = rootView.findViewById(R.id.module_map_id_navi_next_info_distance); - tvNextRoad = rootView.findViewById(R.id.module_map_id_navi_next_info_road); - transition.setDuration(200); - - transition.addListener(new Transition.TransitionListener() { - @Override - public void onTransitionStart(Transition transition) { - if (listener != null) { - listener.onAnimStart(); - } - } - - @Override - public void onTransitionEnd(Transition transition) { -// if (isTopViewOut) { -// topContainer.removeAllViews(); -// } - if (listener != null) { - listener.onAnimEnd(); - } - Logger.d(TAG, "onTransitionEnd: " + currentAnimatingView); - IMogoTopViewStatusListener listener; - if (isTopViewOut) { - int lastCount = topContainer.getChildCount(); - for (int i = 0; i < lastCount; i++) { - View child = topContainer.getChildAt(i); - viewCaches.remove(child); - listener = statusListenerMap.remove(child); - if (listener != null) { - listener.onViewRemoved(child); - } - } - topContainer.removeAllViews(); - } else { - listener = statusListenerMap.get(currentAnimatingView); - if (listener != null) { - listener.onViewAdded(currentAnimatingView); - } - } - } - - @Override - public void onTransitionCancel(Transition transition) { - - } - - @Override - public void onTransitionPause(Transition transition) { - - } - - @Override - public void onTransitionResume(Transition transition) { - - } - }); - cameraMode = rootView.findViewById(R.id.module_ext_id_north); // 初始化默认隐藏导航 hideNaviView(); @@ -284,6 +199,7 @@ public class TopViewAnimHelper { } if (!viewCaches.contains(view)) { // 判断此view是否已经增加到了顶部view,如果增加过就不增加了 + currentAnimatingView = view; view.setTranslationY(0); statusListenerMap.put(view, statusListener); Logger.d(TAG, "开始执行"); @@ -313,14 +229,11 @@ public class TopViewAnimHelper { // 如果高度变化,生硬的变化一下高度 Logger.d(TAG, "container.height: " + topContainer.getHeight()); if (topContainer.getHeight() != params.height) { - constraintSet.clone(topMotionLayout); + // 改变topContainer的translationY + topContainer.setTranslationY(params.height); LayoutParams p = topContainer.getLayoutParams(); p.height = params.height; topContainer.setLayoutParams(p); - constraintSet.connect(naviBg.getId(), ConstraintSet.TOP, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP, - computeNaviMarginTop(params.height)); - constraintSet.applyTo(topMotionLayout); Logger.d(TAG, "改变container的高度==="); } @@ -331,6 +244,9 @@ public class TopViewAnimHelper { if (statusListenerMap.get(view) != null) { statusListenerMap.get(view).beforeViewAddAnim(view); } + if (navInfoView.isVisible()) { + navInfoView.animate().translationY(computeNaviMarginTop(params.height)).start(); + } view.animate().translationY(0).setDuration(500).setListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { @@ -358,11 +274,7 @@ public class TopViewAnimHelper { }).start(); } else { // 顶部view还没有内容,需要整体下移 - currentAnimatingView = view; viewCaches.add(view); -// if (naviBg.getVisibility() == View.VISIBLE) { -// tvNextRoad.setTextSize(getDimen(R.dimen.dp_34)); -// } topContainer.addView(view, params); Logger.d(TAG, "整体进入==== view.visibility: " + view.getVisibility() + " view" + ".position: (" + view.getX() + ", " + view.getY() + ") params.width: " + params.width + " params.height: " + params.height); @@ -372,85 +284,18 @@ public class TopViewAnimHelper { topContainer.setChildAddedListener(child -> { try { topContainer.setChildAddedListener(null); - if (naviBg.getVisibility() == View.VISIBLE) { - remainDistanceGroup.setVisibility(View.GONE); - remainTimeGroup.setVisibility(View.GONE); - arriveTimeGroup.setVisibility(View.GONE); - } NoMapTopViewShaderHelper.getInstance().showShader(); - - constraintSet.clone(topMotionLayout); - - constraintSet.clear(R.id.module_entrance_id_top_container, - ConstraintSet.BOTTOM); - constraintSet.connect(R.id.module_entrance_id_top_container, - ConstraintSet.TOP, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP); -// if (CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X) { - TransitionManager.beginDelayedTransition(topMotionLayout, transition); -// } checkCameraModePosition(false); - if (naviBg.getVisibility() == View.VISIBLE) { - // 约束设置需要在applyTo()方法之前执行,visiable设置需要在applyTo() - // 方法之后执行才能生效,所以分开了两个判断,至于为什么这么做才能生效,不得而知 - constraintSet.connect(tvNextDistance.getId(), ConstraintSet.BOTTOM, - ivTurnIcon.getId(), ConstraintSet.BOTTOM); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.LEFT, - naviBg.getId(), ConstraintSet.LEFT, - (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_small_marginLeft)); -// constraintSet.clear(tvNextRoad.getId(), ConstraintSet.BOTTOM); - constraintSet.connect(tvNextRoad.getId(), ConstraintSet.BOTTOM, - tvNextDistance.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_map_id_navi_next_info_road_marginBottom_small)); - constraintSet.connect(tvNextRoad.getId(), ConstraintSet.LEFT, - R.id.module_map_id_navi_next_info_turn_info, - ConstraintSet.RIGHT, - (int) topMotionLayout.getContext().getResources().getDimension(R.dimen.dp_46)); - - constraintSet.clear(ivTurnIcon.getId(), ConstraintSet.TOP); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.BOTTOM, - naviBg.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_ext_navi_info_turn_icon_margin_bottom)); - - constraintSet.connect(naviBg.getId(), ConstraintSet.TOP, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP, - computeNaviMarginTop(params.height)); - - // 动态改变相关字体大小 - tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize_small)); - tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX, - getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize_small)); - - // 改变目的地车友的约束 - constraintSet.clear(tvDestinationOnlineCar.getId(),ConstraintSet.LEFT); - constraintSet.clear(tvDestinationOnlineCar.getId(),ConstraintSet.TOP); - constraintSet.connect(tvDestinationOnlineCar.getId(), - ConstraintSet.BOTTOM, naviBg.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_ext_navi_small_margin_bottom)); - - constraintSet.connect(tvDestinationOnlineCar.getId(), - ConstraintSet.RIGHT, naviBg.getId(), ConstraintSet.RIGHT, - (int) getDimen(R.dimen.module_ext_navi_small_margin_right)); - } - constraintSet.applyTo(topMotionLayout); - ivTurnIcon.getLayoutParams().height = - (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_small_height); - ivTurnIcon.getLayoutParams().width = - (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_small_width); - naviBg.getLayoutParams().height = - (int) topMotionLayout.getContext().getResources().getDimension(R.dimen.module_ext_navi_info_panel_small_height); - - tvDestinationOnlineCar.getLayoutParams().height = - (int) getDimen(R.dimen.module_ext_button_height_small); - tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_small_bkg); int scene = 0; - if (naviBg.getVisibility() == View.VISIBLE) { + if (navInfoView.isVisible()) { scene = Scene.NAVI_WITH_ROAD_EVENT; + navInfoView.animate().translationY(computeNaviMarginTop(child.getHeight())).start(); + navInfoView.exchangeToSmall(true); } else { scene = Scene.AIMLESS_WITH_ROAD_EVENT; } + topContainer.animate().translationY(child.getHeight()).setListener(mainAnimListener).start(); Logger.d(TAG, "show top setMapCenterPointByScene: " + scene); MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, scene); } catch (Exception e) { @@ -487,68 +332,17 @@ public class TopViewAnimHelper { statusListenerMap.get(view).beforeViewRemoveAnim(view); } isTopViewOut = true; - if (naviBg.getVisibility() == View.VISIBLE) { - remainDistanceGroup.setVisibility(View.VISIBLE); - remainTimeGroup.setVisibility(View.VISIBLE); - arriveTimeGroup.setVisibility(View.VISIBLE); - tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize)); - tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize)); - } NoMapTopViewShaderHelper.getInstance().hideShader(); - constraintSet.clone(topMotionLayout); + topContainer.animate().translationY(-topContainer.getTranslationY()).setListener(mainAnimListener).start(); - constraintSet.clear(R.id.module_entrance_id_top_container, ConstraintSet.TOP); - constraintSet.connect(R.id.module_entrance_id_top_container, ConstraintSet.BOTTOM, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP); - TransitionManager.beginDelayedTransition(topMotionLayout, transition); checkCameraModePosition(false); - if (naviBg.getVisibility() == View.VISIBLE) { - // 约束设置需要在applyTo()方法之前执行,visiable设置需要在applyTo() - // 方法之后执行才能生效,所以分开了两个判断,至于为什么这么做才能生效,不得而知 - constraintSet.clear(tvNextDistance.getId(), ConstraintSet.BOTTOM); -// constraintSet.clear(tvNextRoad.getId(), ConstraintSet.BASELINE); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.LEFT, - naviBg.getId(), ConstraintSet.LEFT, - (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_marginLeft)); - constraintSet.connect(tvNextRoad.getId(), ConstraintSet.BOTTOM, - ivTurnIcon.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_map_id_navi_next_info_road_marginBottom)); - constraintSet.connect(tvNextRoad.getId(), ConstraintSet.LEFT, - tvNextDistance.getId(), ConstraintSet.LEFT, - 0); - constraintSet.connect(naviBg.getId(), ConstraintSet.TOP, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP, - (int) getDimen(R.dimen.module_common_shadow_width_pos)); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.TOP, naviBg.getId(), - ConstraintSet.TOP, 0); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.BOTTOM, - naviBg.getId(), ConstraintSet.BOTTOM, 0); - - constraintSet.clear(tvDestinationOnlineCar.getId(),ConstraintSet.RIGHT); - constraintSet.clear(tvDestinationOnlineCar.getId(),ConstraintSet.BOTTOM); - constraintSet.connect(tvDestinationOnlineCar.getId(), ConstraintSet.LEFT, - naviBg.getId(), ConstraintSet.LEFT); - constraintSet.connect(tvDestinationOnlineCar.getId(), ConstraintSet.TOP, - naviBg.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_ext_camera_button_marginTop)); - } - constraintSet.applyTo(topMotionLayout); - - ivTurnIcon.getLayoutParams().height = - (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_height); - ivTurnIcon.getLayoutParams().width = - (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_width); - naviBg.getLayoutParams().height = - (int) topMotionLayout.getContext().getResources().getDimension(R.dimen.module_ext_navi_info_panel_height); - - tvDestinationOnlineCar.getLayoutParams().height = - (int) getDimen(R.dimen.module_ext_button_height); - tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_bkg); int scene = 0; - if (naviBg.getVisibility() == View.VISIBLE) { + if (navInfoView.isVisible()) { + navInfoView.animate().translationY(0).start(); + navInfoView.exchangeToBig(true); scene = Scene.NAVI; } else { scene = Scene.AIMLESS; @@ -560,7 +354,6 @@ public class TopViewAnimHelper { } public void showNaviView() { - if (topMotionLayout == null) { return; } @@ -569,98 +362,11 @@ public class TopViewAnimHelper { setNaviVisibility(View.VISIBLE); int scene = 0; if (isTopViewOut) { - remainDistanceGroup.setVisibility(View.VISIBLE); - remainTimeGroup.setVisibility(View.VISIBLE); - arriveTimeGroup.setVisibility(View.VISIBLE); - tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize)); - tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize)); - - tvDestinationOnlineCar.getLayoutParams().height = - (int) getDimen(R.dimen.module_ext_button_height); - tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_bkg); - - // 调整约束 - constraintSet.clone(topMotionLayout); - constraintSet.clear(tvNextDistance.getId(), ConstraintSet.BOTTOM); -// constraintSet.clear(tvNextRoad.getId(), ConstraintSet.BASELINE); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.LEFT, - naviBg.getId(), ConstraintSet.LEFT, - (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_marginLeft)); - constraintSet.connect(tvNextRoad.getId(), ConstraintSet.BOTTOM, ivTurnIcon.getId(), - ConstraintSet.BOTTOM); - constraintSet.connect(tvNextRoad.getId(), ConstraintSet.LEFT, - tvNextDistance.getId(), ConstraintSet.LEFT, - 0); -// ivTurnIcon.getLayoutParams().height = -// (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_height); -// ivTurnIcon.getLayoutParams().width = -// (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_width); -// naviBg.getLayoutParams().height = -// (int) topMotionLayout.getContext().getResources().getDimension(R.dimen -// .module_ext_navi_info_panel_height); - constraintSet.connect(naviBg.getId(), ConstraintSet.TOP, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP, - (int) getDimen(R.dimen.module_common_shadow_width_pos)); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.TOP, naviBg.getId(), - ConstraintSet.TOP, 0); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.BOTTOM, - naviBg.getId(), ConstraintSet.BOTTOM, 0); - - // 目的地车友 - constraintSet.clear(tvDestinationOnlineCar.getId(),ConstraintSet.RIGHT); - constraintSet.clear(tvDestinationOnlineCar.getId(),ConstraintSet.BOTTOM); - constraintSet.connect(tvDestinationOnlineCar.getId(), ConstraintSet.LEFT, - naviBg.getId(), ConstraintSet.LEFT); - constraintSet.connect(tvDestinationOnlineCar.getId(), ConstraintSet.TOP, - naviBg.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_ext_camera_button_marginTop)); - - constraintSet.applyTo(topMotionLayout); scene = Scene.NAVI_WITH_ROAD_EVENT; + navInfoView.exchangeToBig(false); } else { - remainDistanceGroup.setVisibility(View.GONE); - remainTimeGroup.setVisibility(View.GONE); - arriveTimeGroup.setVisibility(View.GONE); - tvNextDistance.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_textSize_small)); - tvNextDistanceUnit.setTextSize(TypedValue.COMPLEX_UNIT_PX,getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize_small)); - - tvDestinationOnlineCar.getLayoutParams().height = - (int) getDimen(R.dimen.module_ext_button_height_small); - tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_small_bkg); - // 调整约束 - constraintSet.clone(topMotionLayout); - constraintSet.connect(tvNextDistance.getId(), ConstraintSet.BOTTOM, - ivTurnIcon.getId(), ConstraintSet.BOTTOM); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.LEFT, - naviBg.getId(), ConstraintSet.LEFT, - (int) getDimen(R.dimen.module_ext_navi_info_panel_turn_icon_small_marginLeft)); -// constraintSet.clear(tvNextRoad.getId(), ConstraintSet.BOTTOM); - constraintSet.connect(tvNextRoad.getId(), ConstraintSet.BOTTOM, - tvNextDistance.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_map_id_navi_next_info_road_marginBottom_small)); - constraintSet.connect(tvNextRoad.getId(), ConstraintSet.LEFT, - R.id.module_map_id_navi_next_info_turn_info, ConstraintSet.RIGHT, - (int) topMotionLayout.getContext().getResources().getDimension(R.dimen.dp_46)); - constraintSet.connect(naviBg.getId(), ConstraintSet.TOP, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP, - computeNaviMarginTop(topContainer.getHeight())); - constraintSet.clear(ivTurnIcon.getId(), ConstraintSet.TOP); - constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.BOTTOM, - naviBg.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_ext_navi_info_turn_icon_margin_bottom)); - - // 目的地车友 - constraintSet.clear(tvDestinationOnlineCar.getId(),ConstraintSet.LEFT); - constraintSet.clear(tvDestinationOnlineCar.getId(),ConstraintSet.TOP); - constraintSet.connect(tvDestinationOnlineCar.getId(), - ConstraintSet.BOTTOM, naviBg.getId(), ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_ext_navi_small_margin_bottom)); - constraintSet.connect(tvDestinationOnlineCar.getId(), - ConstraintSet.RIGHT, naviBg.getId(), ConstraintSet.RIGHT, - (int) getDimen(R.dimen.module_ext_navi_small_margin_right)); - - constraintSet.applyTo(topMotionLayout); scene = Scene.NAVI; + navInfoView.exchangeToSmall(false); } Logger.d(TAG, "navi show setMapCenterPointByScene: " + scene); MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, scene); @@ -668,16 +374,12 @@ public class TopViewAnimHelper { } public void hideNaviView() { - if (topMotionLayout == null) { return; } Logger.d("TopViewAnimHelper", "hideNaviView====="); setNaviVisibility(View.GONE); - remainDistanceGroup.setVisibility(View.GONE); - remainTimeGroup.setVisibility(View.GONE); - arriveTimeGroup.setVisibility(View.GONE); int scene = 0; if (isTopViewOut) { scene = Scene.AIMLESS; @@ -690,27 +392,6 @@ public class TopViewAnimHelper { } private void checkCameraModePosition(boolean isNeedClone) { - if (isNeedClone) { - constraintSet.clone(topMotionLayout); - } - if (naviBg.getVisibility() == View.VISIBLE) { - constraintSet.connect(cameraMode.getId(), ConstraintSet.TOP, naviBg.getId(), - ConstraintSet.BOTTOM, (int) getDimen(R.dimen.dp_30)); - } else { - if (isTopViewOut) { - constraintSet.connect(cameraMode.getId(), ConstraintSet.TOP, naviBg.getId(), - ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_ext_north_goneMarginTop)); - } else { - constraintSet.connect(cameraMode.getId(), ConstraintSet.TOP, - R.id.module_entrance_id_top_container, - ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.dp_30)); - } - } - if (isNeedClone) { - constraintSet.applyTo(topMotionLayout); - } } private float getDimen(int resId) { @@ -734,19 +415,7 @@ public class TopViewAnimHelper { } private void setNaviVisibility(int visibility) { - ivTurnIcon.setVisibility(visibility); - tvNextRoad.setVisibility(visibility); - tvNextDistance.setVisibility(visibility); - remainTimeGroup.setVisibility(visibility); - remainDistanceGroup.setVisibility(visibility); - arriveTimeGroup.setVisibility(visibility); - naviBg.setVisibility(visibility); - tvNextDistanceUnit.setVisibility(visibility); - tvTurnInfo.setVisibility(visibility); - if(DebugConfig.isSupportedSearchDestinationOnlineCarList()) { - tvDestinationOnlineCar.setVisibility(visibility); - } - + navInfoView.setVisibility(visibility); } public void removeAllView(){ @@ -769,18 +438,8 @@ public class TopViewAnimHelper { public void clear(){ topMotionLayout = null; - remainTimeGroup = null; - remainDistanceGroup = null; - arriveTimeGroup = null; - naviBg = null; - ivTurnIcon = null; - tvNextDistance = null; - tvNextRoad = null; - tvNextDistanceUnit = null; - tvTurnInfo = null; topContainer = null; cameraMode = null; - transition = null; } public void enterVrMode(){ @@ -796,4 +455,47 @@ public class TopViewAnimHelper { // topContainer.requestLayout(); // topMotionLayout.requestLayout(); } + + private Animator.AnimatorListener mainAnimListener = new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { + Logger.d(TAG, "onMainAnimEnd: " + currentAnimatingView); + IMogoTopViewStatusListener listener; + if (isTopViewOut) { + int lastCount = topContainer.getChildCount(); + for (int i = 0; i < lastCount; i++) { + View child = topContainer.getChildAt(i); + viewCaches.remove(child); + listener = statusListenerMap.remove(child); + if (listener != null) { + listener.onViewRemoved(child); + } + } + topContainer.removeAllViews(); + currentAnimatingView = null; + } else { + listener = statusListenerMap.get(currentAnimatingView); + if (listener != null) { + listener.onViewAdded(currentAnimatingView); + } + } + + } + + @Override + public void onAnimationCancel(Animator animation) { + + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }; + } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java index 1087cafce2..f0c1ad3150 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java @@ -53,8 +53,8 @@ public class TrafficLightPanelManager implements Handler.Callback, View.OnClickL isInit = true; // debug - root.findViewById(R.id.module_ext_id_navi_in_vr_speed_bg).setOnClickListener(this); - root.findViewById(R.id.module_ext_id_navi_in_vr_traffic_bg).setOnClickListener(this); +// root.findViewById(R.id.module_ext_id_navi_in_vr_speed_bg).setOnClickListener(this); +// root.findViewById(R.id.module_ext_id_navi_in_vr_traffic_bg).setOnClickListener(this); } public void showNavPanel() { diff --git a/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle.xml b/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle.xml index 1c0bebfa10..efa55e9992 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle.xml @@ -14,8 +14,8 @@ android:layout_marginLeft="@dimen/module_common_shadow_width_pos" android:layout_marginRight="@dimen/module_common_shadow_width_pos" android:layout_marginTop="@dimen/module_common_shadow_width_pos" - app:layout_constraintLeft_toLeftOf="@id/module_entrance_id_top_container" - app:layout_constraintTop_toTopOf="@id/module_entrance_id_top_motion_layout" /> + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle_has_top.xml b/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle_has_top.xml new file mode 100644 index 0000000000..94a2d56326 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/res/layout/include_navi_info_panle_has_top.xml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index de35c28104..eb8d2bd448 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -16,10 +16,12 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> - + - + android:layout_height="wrap_content" + android:id="@+id/module_ext_id_anim_nav_info" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:visibility="gone" + tools:visibility="visible"/> - - - + android:layout_height="wrap_content" + android:id="@+id/module_ext_id_anim_nav_info" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:visibility="gone"/> Date: Mon, 14 Dec 2020 16:27:08 +0800 Subject: [PATCH 06/11] opt --- .../utils/TrafficLightPanelManager.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java index f0c1ad3150..4ea1d09158 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java @@ -62,15 +62,15 @@ public class TrafficLightPanelManager implements Handler.Callback, View.OnClickL Logger.e(TAG, "nav panel 未初始化"); return; } - extraGroup.setVisibility(View.VISIBLE); - if (isNav) { - navGroup.setVisibility(View.VISIBLE); - speedGroup.setVisibility(View.GONE); - } else { - speedGroup.setVisibility(View.VISIBLE); - navGroup.setVisibility(View.GONE); - } - tvLimitSpeed.setVisibility(View.VISIBLE); +// extraGroup.setVisibility(View.VISIBLE); +// if (isNav) { +// navGroup.setVisibility(View.VISIBLE); +// speedGroup.setVisibility(View.GONE); +// } else { +// speedGroup.setVisibility(View.VISIBLE); +// navGroup.setVisibility(View.GONE); +// } +// tvLimitSpeed.setVisibility(View.VISIBLE); } public void hideNavPanel() { @@ -78,9 +78,9 @@ public class TrafficLightPanelManager implements Handler.Callback, View.OnClickL Logger.e(TAG, "nav panel 未初始化"); return; } - extraGroup.setVisibility(View.GONE); - speedGroup.setVisibility(View.GONE); - tvLimitSpeed.setVisibility(View.GONE); +// extraGroup.setVisibility(View.GONE); +// speedGroup.setVisibility(View.GONE); +// tvLimitSpeed.setVisibility(View.GONE); } @@ -88,14 +88,14 @@ public class TrafficLightPanelManager implements Handler.Callback, View.OnClickL public void startNav() { isNav = true; - navGroup.setVisibility(View.VISIBLE); - speedGroup.setVisibility(View.GONE); +// navGroup.setVisibility(View.VISIBLE); +// speedGroup.setVisibility(View.GONE); } public void stopNav() { isNav = false; - speedGroup.setVisibility(View.VISIBLE); - navGroup.setVisibility(View.GONE); +// speedGroup.setVisibility(View.VISIBLE); +// navGroup.setVisibility(View.GONE); } public void refreshLimitSpeed(int limitSpeed) { From 333e93e54a3a655f701dfd53657709ce6612e77b Mon Sep 17 00:00:00 2001 From: liujing Date: Mon, 14 Dec 2020 17:41:48 +0800 Subject: [PATCH 07/11] =?UTF-8?q?[fix]=E5=81=B6=E7=8E=B0=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v2x/adapter/V2XShareEventAdapter.java | 93 ++++++++++--------- .../entity/panel/V2XShareEventItemEnum.java | 1 + 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XShareEventAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XShareEventAdapter.java index 665b08f9f5..ead28acbda 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XShareEventAdapter.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/V2XShareEventAdapter.java @@ -76,55 +76,60 @@ public class V2XShareEventAdapter extends RecyclerView.Adapter position) { - V2XShareEventDescription.ResultBean.EnthusiasmIndexBean data = (V2XShareEventDescription.ResultBean.EnthusiasmIndexBean) dataArrayList.get(position); - if (data != null) { - String shareNum = String.valueOf(data.getShareNum()); - String likeNum = String.valueOf(data.getLikeNum()); - double enthusiasmIndex = data.getEnthusiasmIndex() <= 5 ? data.getEnthusiasmIndex() : 5; - if (shareNum != null) { - ((shareDescriptionViewHolder) holder).shareNumTextView.setText(shareNum); - } - if (likeNum != null) { - ((shareDescriptionViewHolder) holder).approveNumTextView.setText(likeNum); - } - ((shareDescriptionViewHolder) holder).ratingBar.setRating((float) enthusiasmIndex); - } - } - } else if (holder instanceof shareItemViewHolder) { - //分享列表 - if (dataArrayList.size() > position) { - V2XShareEventItem.ResultBean.PageBean.ContentBean data = (V2XShareEventItem.ResultBean.PageBean.ContentBean) dataArrayList.get(position); - if (data != null) { - String poitype = data.getPoiType(); - String address = data.getUploadAddress(); - String time = DateTimeUtils.getTimeText(data.getUploadTimestamp(), DateTimeUtils.MM_Yue_dd_Ri_HH_mm); - String likeNum = String.valueOf(data.getLikeNum()); - String notLikeNum = String.valueOf(data.getNotlikeNum()); - if (poitype != null) { - ((shareItemViewHolder) holder).caseStyleTextView.setText(EventTypeUtils.getPoiTypeStr(poitype)); - ((shareItemViewHolder) holder).caseStyleTextView.setBackgroundResource(EventTypeUtils.getPoiTypeBgForShareItem(poitype)); - - } - if (address != null) { - ((shareItemViewHolder) holder).caseAddressTextView.setText(address); - } - if (time != null) { - ((shareItemViewHolder) holder).caseTimeTextView.setText(time); - } - if (likeNum != null) { - ((shareItemViewHolder) holder).caseUsefulTextView.setText(likeNum); - } - if (notLikeNum != null) { - ((shareItemViewHolder) holder).caseUselessTextView.setText(notLikeNum); + if (holder instanceof shareDescriptionViewHolder) { + //分享次数,车友认同次数,热心指数 + if (dataArrayList.size() > position) { + V2XShareEventDescription.ResultBean.EnthusiasmIndexBean data = (V2XShareEventDescription.ResultBean.EnthusiasmIndexBean) dataArrayList.get(position); + if (data != null) { + String shareNum = String.valueOf(data.getShareNum()); + String likeNum = String.valueOf(data.getLikeNum()); + double enthusiasmIndex = data.getEnthusiasmIndex() <= 5 ? data.getEnthusiasmIndex() : 5; + if (shareNum != null) { + ((shareDescriptionViewHolder) holder).shareNumTextView.setText(shareNum); + } + if (likeNum != null) { + ((shareDescriptionViewHolder) holder).approveNumTextView.setText(likeNum); + } + ((shareDescriptionViewHolder) holder).ratingBar.setRating((float) enthusiasmIndex); } } + } else if (holder instanceof shareItemViewHolder) { + //分享列表 + if (dataArrayList.size() > position) { + V2XShareEventItem.ResultBean.PageBean.ContentBean data = (V2XShareEventItem.ResultBean.PageBean.ContentBean) dataArrayList.get(position); + if (data != null) { + String poitype = data.getPoiType(); + String address = data.getUploadAddress(); + String time = DateTimeUtils.getTimeText(data.getUploadTimestamp(), DateTimeUtils.MM_Yue_dd_Ri_HH_mm); + String likeNum = String.valueOf(data.getLikeNum()); + String notLikeNum = String.valueOf(data.getNotlikeNum()); + if (poitype != null) { + ((shareItemViewHolder) holder).caseStyleTextView.setText(EventTypeUtils.getPoiTypeStr(poitype)); + ((shareItemViewHolder) holder).caseStyleTextView.setBackgroundResource(EventTypeUtils.getPoiTypeBgForShareItem(poitype)); + + } + if (address != null) { + ((shareItemViewHolder) holder).caseAddressTextView.setText(address); + } + if (time != null) { + ((shareItemViewHolder) holder).caseTimeTextView.setText(time); + } + if (likeNum != null) { + ((shareItemViewHolder) holder).caseUsefulTextView.setText(likeNum); + } + if (notLikeNum != null) { + ((shareItemViewHolder) holder).caseUselessTextView.setText(notLikeNum); + } + } + + } } + } catch (Exception e) { + } } @@ -143,7 +148,7 @@ public class V2XShareEventAdapter extends RecyclerView.Adapter Date: Mon, 14 Dec 2020 17:48:28 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E6=99=AE=E9=80=9A=E6=A8=A1=E5=BC=8F=E5=92=8Cvr=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extensions/entrance/EntranceFragment.java | 38 ++-- .../extensions/navi/AnimNavInfoView.java | 8 +- .../extensions/navi/VrModeNavInfoView.java | 99 +++++++++- .../extensions/utils/TopViewAnimHelper.java | 44 +++-- .../utils/TrafficLightPanelManager.java | 175 ------------------ .../main/res/layout/include_navi_in_vr.xml | 3 +- .../res/layout/module_ext_layout_entrance.xml | 1 + 7 files changed, 149 insertions(+), 219 deletions(-) delete mode 100644 modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TrafficLightPanelManager.java diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index f5b6f63acd..7ee3279e7b 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -30,6 +30,8 @@ import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationClient; +import com.mogo.map.location.IMogoLocationListener; +import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoNavi; @@ -43,14 +45,11 @@ 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; import com.mogo.module.extensions.R; import com.mogo.module.extensions.navi.AnimNavInfoView; import com.mogo.module.extensions.navi.BaseNaviInfoView; -import com.mogo.module.extensions.navi.NaviInfoView; import com.mogo.module.extensions.navi.VrModeNavInfoView; import com.mogo.module.extensions.userinfo.UserInfo; import com.mogo.module.extensions.utils.AdasNoticeHelper; @@ -58,8 +57,6 @@ import com.mogo.module.extensions.utils.CameraLiveNoticeHelper; import com.mogo.module.extensions.utils.EntranceViewHolder; import com.mogo.module.extensions.utils.NoMapTopViewShaderHelper; import com.mogo.module.extensions.utils.TopViewAnimHelper; -import com.mogo.module.extensions.utils.TopViewNoLinkageAnimHelper; -import com.mogo.module.extensions.utils.TrafficLightPanelManager; import com.mogo.module.share.manager.ServiceApisManager; import com.mogo.service.IMogoServiceApis; import com.mogo.service.analytics.IMogoAnalytics; @@ -115,7 +112,8 @@ public class EntranceFragment extends MvpFragment seekHelpNoticeListener = + private final IMogoOnMessageListener seekHelpNoticeListener = new IMogoOnMessageListener() { @Override - public Class target() { + public Class target() { return String.class; } @@ -1206,7 +1204,7 @@ public class EntranceFragment extends MvpFragment - * 导航信息内容通过{@link com.mogo.module.extensions.navi.VrModeNavInfoView} 在{@link com.mogo.module.extensions.entrance.EntranceFragment}进行控制 - * 此处仅控制导航信息的显示与隐藏 - * - * @author tongchenfei - */ -public class TrafficLightPanelManager implements Handler.Callback, View.OnClickListener { - private static final String TAG = "TrafficLightPanelManager"; - - private TrafficLightPanelManager() { - } - - private final static TrafficLightPanelManager INSTANCE = new TrafficLightPanelManager(); - - public static TrafficLightPanelManager getInstance() { - return INSTANCE; - } - - private Group speedGroup, navGroup, extraGroup; - private TextView tvLimitSpeed; - private VerticalTrafficLightView turnAroundLight, turnLeftLight, straightLight, turnRightLight; - - private Handler handler = new Handler(this); - - private boolean isInit = false; - - public void initPanel(View root) { - speedGroup = root.findViewById(R.id.module_ext_id_group_navi_in_vr_speed); - navGroup = root.findViewById(R.id.module_ext_id_group_navi_in_vr_nav_info); - extraGroup = root.findViewById(R.id.module_ext_id_group_traffic_light_panel_extra); - tvLimitSpeed = root.findViewById(R.id.module_ext_id_tv_limit_speed); - turnAroundLight = root.findViewById(R.id.module_ext_id_traffic_light_turn_around); - turnLeftLight = root.findViewById(R.id.module_ext_id_traffic_light_turn_left); - straightLight = root.findViewById(R.id.module_ext_id_traffic_light_straight); - turnRightLight = root.findViewById(R.id.module_ext_id_traffic_light_turn_right); - isInit = true; - - // debug -// root.findViewById(R.id.module_ext_id_navi_in_vr_speed_bg).setOnClickListener(this); -// root.findViewById(R.id.module_ext_id_navi_in_vr_traffic_bg).setOnClickListener(this); - } - - public void showNavPanel() { - if (!isInit) { - Logger.e(TAG, "nav panel 未初始化"); - return; - } -// extraGroup.setVisibility(View.VISIBLE); -// if (isNav) { -// navGroup.setVisibility(View.VISIBLE); -// speedGroup.setVisibility(View.GONE); -// } else { -// speedGroup.setVisibility(View.VISIBLE); -// navGroup.setVisibility(View.GONE); -// } -// tvLimitSpeed.setVisibility(View.VISIBLE); - } - - public void hideNavPanel() { - if (!isInit) { - Logger.e(TAG, "nav panel 未初始化"); - return; - } -// extraGroup.setVisibility(View.GONE); -// speedGroup.setVisibility(View.GONE); -// tvLimitSpeed.setVisibility(View.GONE); - - } - - private boolean isNav = false; - - public void startNav() { - isNav = true; -// navGroup.setVisibility(View.VISIBLE); -// speedGroup.setVisibility(View.GONE); - } - - public void stopNav() { - isNav = false; -// speedGroup.setVisibility(View.VISIBLE); -// navGroup.setVisibility(View.GONE); - } - - public void refreshLimitSpeed(int limitSpeed) { - handler.removeMessages(MSG_HIDE_LIMIT_SPEED); - tvLimitSpeed.setVisibility(View.VISIBLE); - tvLimitSpeed.setText(String.valueOf(limitSpeed)); - handler.sendEmptyMessageDelayed(MSG_HIDE_LIMIT_SPEED, HIDE_LIMIT_SPEED_DELAY); - } - - /** - * 刷新红绿灯显示状态 - * - * @param laneLight 固定数组长度为4的车道类型灯,从0-3依次代表 掉头,左转,执行,右转 - * @param surplusTime 固定数组长度为4的剩余时长数组,从0-3依次代表 掉头,左转,执行,右转 - */ - public void refreshTrafficLightStatus(int[] laneLight, String[] surplusTime) { - turnAroundLight.setTrafficLightStatus(laneLight[0], surplusTime[0]); - turnLeftLight.setTrafficLightStatus(laneLight[1], surplusTime[1]); - straightLight.setTrafficLightStatus(laneLight[2], surplusTime[2]); - turnRightLight.setTrafficLightStatus(laneLight[3], surplusTime[3]); - } - - public void release() { - isInit = false; - speedGroup = null; - navGroup = null; - extraGroup = null; - tvLimitSpeed = null; - turnAroundLight = null; - turnLeftLight = null; - straightLight = null; - turnRightLight = null; - } - - private static final int MSG_HIDE_LIMIT_SPEED = 1001; - private static final long HIDE_LIMIT_SPEED_DELAY = 5000; - - @Override - public boolean handleMessage(Message msg) { - if (!isInit) { - return false; - } - if (msg.what == MSG_HIDE_LIMIT_SPEED) { - tvLimitSpeed.setVisibility(View.GONE); - return true; - } - return false; - } - - @Override - public void onClick(View v) { - if (v.getId() == R.id.module_ext_id_navi_in_vr_speed_bg) { - boolean s = new Random().nextBoolean(); - boolean b = new Random().nextBoolean(); - if (s) { - if (b) { - startNav(); - } else { - stopNav(); - } - } else { - refreshLimitSpeed(90); - } - } else { - int[] color = new int[4]; - String[] time = new String[4]; - for (int i = 0; i < 4; i++) { - int s = new Random().nextInt(4); - boolean b = new Random().nextBoolean(); - color[i] = s; - time[i] = b ? "12" : ""; - } - refreshTrafficLightStatus(color, time); - } - - } -} diff --git a/modules/mogo-module-extensions/src/main/res/layout/include_navi_in_vr.xml b/modules/mogo-module-extensions/src/main/res/layout/include_navi_in_vr.xml index 34a47aaadd..e6efac5899 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/include_navi_in_vr.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/include_navi_in_vr.xml @@ -107,6 +107,7 @@ android:gravity="center" android:text="80" android:textColor="#FF9CA8D8" + android:visibility="gone" android:textSize="@dimen/module_ext_navi_in_vr_limit_speed_text_size" app:layout_constraintBottom_toTopOf="@id/module_ext_id_navi_in_vr_traffic_bg" app:layout_constraintRight_toRightOf="@id/module_ext_id_navi_in_vr_bg" @@ -169,7 +170,7 @@ android:id="@+id/module_ext_id_group_traffic_light_panel_extra" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:visibility="gone" + android:visibility="visible" app:constraint_referenced_ids="module_ext_id_navi_in_vr_bg,module_ext_id_navi_in_vr_speed_bg,module_ext_id_navi_in_vr_traffic_bg,module_ext_id_traffic_light_turn_left,module_ext_id_traffic_light_turn_around,module_ext_id_traffic_light_straight,module_ext_id_traffic_light_turn_right" tools:visibility="visible" /> diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index eb8d2bd448..b1610caf4c 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -20,6 +20,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/module_ext_id_vr_nav_info" + android:visibility="gone" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"/> From 5b95fed42f117cb2eb751b120d0801688fe24a8d Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Mon, 14 Dec 2020 18:35:36 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extensions/entrance/EntranceFragment.java | 35 +- .../extensions/navi/AnimNavInfoView.java | 12 + .../extensions/navi/VrModeNavInfoView.java | 3 + .../extensions/utils/AdasNoticeHelper.java | 7 +- .../extensions/utils/TopViewAnimHelper.java | 34 +- .../utils/TopViewNoLinkageAnimHelper.java | 336 +++--------------- 6 files changed, 99 insertions(+), 328 deletions(-) diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 7ee3279e7b..95b753ebdb 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -57,6 +57,7 @@ import com.mogo.module.extensions.utils.CameraLiveNoticeHelper; import com.mogo.module.extensions.utils.EntranceViewHolder; import com.mogo.module.extensions.utils.NoMapTopViewShaderHelper; import com.mogo.module.extensions.utils.TopViewAnimHelper; +import com.mogo.module.extensions.utils.TopViewNoLinkageAnimHelper; import com.mogo.module.share.manager.ServiceApisManager; import com.mogo.service.IMogoServiceApis; import com.mogo.service.analytics.IMogoAnalytics; @@ -223,7 +224,6 @@ public class EntranceFragment extends MvpFragment properties = new HashMap<>(); -// properties.put("type", 1); -// MogoApisHandler.getInstance().getApis().getAnalyticsApi().track("APP_Find_Mogoer", properties); -// } -// } ); tvEnterVrMode = findViewById(R.id.module_ext_enter_vr_mode); tvEnterVrMode.setOnClickListener((v)->{ // 进入vr模式 @@ -506,7 +487,7 @@ public class EntranceFragment extends MvpFragment { topContainerNoLinkage.setChildAddedListener(null); - NoMapTopViewShaderHelper.getInstance().showShader(); - - constraintSet.clone(topMotionLayout); - - constraintSet.clear(R.id.module_entrance_id_top_container_no_linkage, - ConstraintSet.BOTTOM); - constraintSet.connect(R.id.module_entrance_id_top_container_no_linkage, ConstraintSet.TOP, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP); - TransitionManager.beginDelayedTransition(topMotionLayout, transition); - checkCameraModePosition(false); - constraintSet.applyTo(topMotionLayout); - + topContainerNoLinkage.animate().translationY(child.getHeight()).setListener(mainAnimListener).start(); int scene = Scene.AIMLESS_WITH_ROAD_EVENT; Logger.d(TAG, "show top setMapCenterPointByScene: " + scene); MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, scene); @@ -387,7 +188,7 @@ public class TopViewNoLinkageAnimHelper { // vr模式下与TopView互斥 if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - TopViewAnimHelper.getInstance().removeAllView(); + TopViewAnimHelper.getInstance().removeAllViewExceptVrNav(); } } @@ -395,9 +196,7 @@ public class TopViewNoLinkageAnimHelper { * 退出最新的(也就是最上面的)view */ private void startLatestTopOutAnim() { - if (topContainerNoLinkage.getChildCount() > 1) { - removeSubView(topContainerNoLinkage.getChildAt(topContainerNoLinkage.getChildCount() - 1)); - } else if (topContainerNoLinkage.getChildCount() > 0) { + if (topContainerNoLinkage.getChildCount() > 0) { startTopOutAnim(topContainerNoLinkage.getChildAt(topContainerNoLinkage.getChildCount() - 1)); } } @@ -414,16 +213,7 @@ public class TopViewNoLinkageAnimHelper { } isTopViewOut = true; NoMapTopViewShaderHelper.getInstance().hideShader(); - constraintSet.clone(topMotionLayout); - - constraintSet.clear(R.id.module_entrance_id_top_container_no_linkage, ConstraintSet.TOP); - constraintSet.connect(R.id.module_entrance_id_top_container_no_linkage, ConstraintSet.BOTTOM, - R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP); - TransitionManager.beginDelayedTransition(topMotionLayout, transition); - checkCameraModePosition(false); - - constraintSet.applyTo(topMotionLayout); - + topContainerNoLinkage.animate().translationY(-topContainerNoLinkage.getTranslationY()).setListener(mainAnimListener).start(); int scene = Scene.AIMLESS; Logger.d(TAG, "hide top setMapCenterPointByScene: " + scene); MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, scene); @@ -431,61 +221,10 @@ public class TopViewNoLinkageAnimHelper { } } - public void hideNaviView() { - if (topMotionLayout == null) { - return; - } - - Logger.d(TAG, "hideNaviView====="); - setNaviVisibility(View.GONE); - remainDistanceGroup.setVisibility(View.GONE); - remainTimeGroup.setVisibility(View.GONE); - arriveTimeGroup.setVisibility(View.GONE); - int scene = 0; - if (isTopViewOut) { - scene = Scene.AIMLESS; - } else { - scene = Scene.AIMLESS_WITH_ROAD_EVENT; - } - Logger.d(TAG, "hide navi setMapCenterPointByScene: " + scene); - MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, scene); - checkCameraModePosition(true); - } - - private void checkCameraModePosition(boolean isNeedClone) { - if (isNeedClone) { - constraintSet.clone(topMotionLayout); - } - if (naviBg.getVisibility() == View.VISIBLE) { - constraintSet.connect(cameraMode.getId(), ConstraintSet.TOP, naviBg.getId(), - ConstraintSet.BOTTOM, (int) getDimen(R.dimen.dp_30)); - } else { - if (isTopViewOut) { - constraintSet.connect(cameraMode.getId(), ConstraintSet.TOP, naviBg.getId(), - ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.module_ext_north_goneMarginTop)); - } else { - constraintSet.connect(cameraMode.getId(), ConstraintSet.TOP, - R.id.module_entrance_id_top_container_no_linkage, - ConstraintSet.BOTTOM, - (int) getDimen(R.dimen.dp_30)); - } - } - if (isNeedClone) { - constraintSet.applyTo(topMotionLayout); - } - } - private float getDimen(int resId) { return (int) topMotionLayout.getContext().getResources().getDimensionPixelSize(resId); } - private int computeNaviMarginTop(int height) { - int result = (int) (height - (getDimen(R.dimen.module_ext_top_over_navi_height)) - getDimen(R.dimen.module_common_shadow_width_pos)); - Logger.d(TAG, "computeNaviMarginTop: " + height + " result: " + result); - return result; - } - interface OnTopViewAnimSimpleListener { void onAnimStart(); @@ -496,17 +235,6 @@ public class TopViewNoLinkageAnimHelper { return viewCaches.contains(view); } - private void setNaviVisibility(int visibility) { - ivTurnIcon.setVisibility(visibility); - tvNextRoad.setVisibility(visibility); - tvNextDistance.setVisibility(visibility); - remainTimeGroup.setVisibility(visibility); - remainDistanceGroup.setVisibility(visibility); - arriveTimeGroup.setVisibility(visibility); - naviBg.setVisibility(visibility); - tvNextDistanceUnit.setVisibility(visibility); - tvTurnInfo.setVisibility(visibility); - } public void removeAllView() { Logger.d(TAG, "remove all view"); @@ -522,24 +250,12 @@ public class TopViewNoLinkageAnimHelper { } } topContainerNoLinkage.removeAllViews(); - hideNaviView(); MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, Scene.AIMLESS); } public void clear() { topMotionLayout = null; - remainTimeGroup = null; - remainDistanceGroup = null; - arriveTimeGroup = null; - naviBg = null; - ivTurnIcon = null; - tvNextDistance = null; - tvNextRoad = null; - tvNextDistanceUnit = null; - tvTurnInfo = null; topContainerNoLinkage = null; - cameraMode = null; - transition = null; } public void enterVrMode(){ @@ -551,4 +267,46 @@ public class TopViewNoLinkageAnimHelper { removeAllView(); topContainerNoLinkage.getLayoutParams().width = LayoutParams.MATCH_PARENT; } + + private final Animator.AnimatorListener mainAnimListener = new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { + Logger.d(TAG, "onMainAnimEnd: " + currentAnimatingView); + IMogoTopViewStatusListener listener; + if (isTopViewOut) { + int lastCount = topContainerNoLinkage.getChildCount(); + for (int i = 0; i < lastCount; i++) { + View child = topContainerNoLinkage.getChildAt(i); + viewCaches.remove(child); + listener = statusListenerMap.remove(child); + if (listener != null) { + listener.onViewRemoved(child); + } + } + topContainerNoLinkage.removeAllViews(); + currentAnimatingView = null; + } else { + listener = statusListenerMap.get(currentAnimatingView); + if (listener != null) { + listener.onViewAdded(currentAnimatingView); + } + } + + } + + @Override + public void onAnimationCancel(Animator animation) { + + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }; } From 0aed6c03012a5598155c8bf455483cab4530c6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 14 Dec 2020 18:35:49 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E7=9A=84=E8=A7=92=E5=BA=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/launcher/MogoApplication.java | 5 +- .../small/map/IMogoSmallMapProvider.java | 12 ---- .../small/map/SmallMapDirectionView.java | 64 +++++++++++++++++++ .../module/small/map/SmallMapService.java | 18 ++++-- .../module/small/map/SmallVisionProvider.java | 54 ++++++++++++++-- .../module_small_map_direction_view.xml | 5 ++ .../main/res/layout/module_small_map_view.xml | 13 ++-- .../com/mogo/service/IMogoServiceApis.java | 8 +++ .../com/mogo/service/MogoServicePaths.java | 7 +- .../service/map/IMogoSmallMapProvider.java | 27 ++++++++ .../mogo/service/impl/MogoServiceApis.java | 6 ++ 11 files changed, 188 insertions(+), 31 deletions(-) delete mode 100644 modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/IMogoSmallMapProvider.java create mode 100644 modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java create mode 100644 modules/mogo-module-smp/src/main/res/layout/module_small_map_direction_view.xml create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 97ecf26969..a84d792e64 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -1,6 +1,5 @@ package com.mogo.launcher; -import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.os.Process; @@ -22,7 +21,7 @@ import com.mogo.module.main.service.MogoMainService; import com.mogo.module.push.base.PushUIConstants; import com.mogo.module.service.ServiceConst; import com.mogo.module.share.constant.ShareConstants; -import com.mogo.module.small.map.IMogoSmallMapProvider; +import com.mogo.service.map.IMogoSmallMapProvider; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.utils.ObuConfig; import com.mogo.service.IMogoServiceApis; @@ -96,7 +95,7 @@ public class MogoApplication extends AbsMogoApplication { // MogoModulePaths.addModule( new MogoModule( IMogoMachineVisionProvider.path, "IMogoMachineVisionProvider" ) ); // 小地图模块 - MogoModulePaths.addModule( new MogoModule( IMogoSmallMapProvider.path, "IMogoSmallMapProvider" ) ); + MogoModulePaths.addModule( new MogoModule( MogoServicePaths.PATH_SMALL_MAP, "IMogoSmallMapProvider" ) ); MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_GLOBAL_UNWAKE, "GlobalUnwake" ) ); diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/IMogoSmallMapProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/IMogoSmallMapProvider.java deleted file mode 100644 index cb8cb65fe0..0000000000 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/IMogoSmallMapProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.mogo.module.small.map; - -import com.mogo.service.module.IMogoModuleProvider; - -/** - * @author donghongyu - * @date 12/10/20 1:36 PM - */ -public interface IMogoSmallMapProvider extends IMogoModuleProvider { - String path = "/small_map/api"; - -} diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java new file mode 100644 index 0000000000..14a2a62ad1 --- /dev/null +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java @@ -0,0 +1,64 @@ +package com.mogo.module.small.map; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.animation.Animation; +import android.view.animation.DecelerateInterpolator; +import android.view.animation.RotateAnimation; +import android.widget.ImageView; + +import androidx.annotation.Nullable; + +import com.mogo.module.common.view.RoundLayout; + +/** + * 小地图的方向View + * + * @author donghongyu + * @date 12/14/20 4:40 PM + */ +public class SmallMapDirectionView extends RoundLayout { + + private ImageView mIvMapBorder; + + public SmallMapDirectionView(Context context) { + this(context, null); + } + + public SmallMapDirectionView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public SmallMapDirectionView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(context); + } + + private void initView(Context context) { + LayoutInflater.from(context).inflate(R.layout.module_small_map_view, this); + mIvMapBorder = findViewById(R.id.ivMapBorder); + } + + + /** + * 修改角度 + * + * @param angle 角度 0 - 359度旋转,相对于自身中心位置 + */ + public void changeAngle(int angle) { + Animation mRotateAnimation = new RotateAnimation( + 0, angle, + Animation.RELATIVE_TO_SELF, 0.5f, + Animation.RELATIVE_TO_SELF, 0.5f); + //设置线性插值,可以解决旋转一圈后卡顿问题 + mRotateAnimation.setInterpolator(new DecelerateInterpolator()); + //设置旋转一圈时间 + mRotateAnimation.setDuration(1000); + //控件动画结束时是否保持动画最后的状态 + mRotateAnimation.setFillAfter(true); + + mIvMapBorder.startAnimation(mRotateAnimation); + } + +} diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapService.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapService.java index e4a4336d9c..881efae6c5 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapService.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapService.java @@ -24,7 +24,7 @@ public class SmallMapService extends Service { private IBinder mBinder; private WindowManagerView mWindowManagerView; - private SmallMapView mMapView; + private SmallMapDirectionView mSmallMapDirectionView; @Override public void onCreate() { @@ -69,20 +69,30 @@ public class SmallMapService extends Service { private void addMachineVisionMapView() { Logger.d(TAG, "addMachineVisionMapView"); + mWindowManagerView = new WindowManagerView.Builder(getApplicationContext()) - .contentView(R.layout.module_small_map_view) + .contentView(R.layout.module_small_map_direction_view) .size( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT ) .position( - getResources().getDimensionPixelOffset( R.dimen.module_mvision_view_x ), - getResources().getDimensionPixelOffset( R.dimen.module_mvision_view_y ) + getResources().getDimensionPixelOffset(R.dimen.module_mvision_view_x), + getResources().getDimensionPixelOffset(R.dimen.module_mvision_view_y) ) .gravity(Gravity.TOP | Gravity.LEFT) .showInWindowManager(); mWindowManagerView.show(); + mSmallMapDirectionView = mWindowManagerView.findViewById(R.id.smallMapDirectionView); + + + mSmallMapDirectionView.postDelayed(new Runnable() { + @Override + public void run() { + mSmallMapDirectionView.changeAngle(-60); + } + }, 1000); } diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java index 3bbdee2b65..0e3a5be274 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java @@ -11,17 +11,23 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.map.IMogoSmallMapProvider; import com.mogo.service.module.ModuleType; +import com.mogo.service.statusmanager.IMogoStatusChangedListener; +import com.mogo.service.statusmanager.StatusDescriptor; /** * @author donghongyu * @date 12/10/20 1:34 PM */ -@Route(path = IMogoSmallMapProvider.path) -public class SmallVisionProvider implements IMogoSmallMapProvider { +@Route(path = MogoServicePaths.PATH_SMALL_MAP) +public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener { private final String TAG = "SmallVisionProvider"; private Intent mSmallMapServiceIntent; + private Context mContext; @Override public Fragment createFragment(Context context, Bundle data) { @@ -47,15 +53,55 @@ public class SmallVisionProvider implements IMogoSmallMapProvider { @Override public void init(Context context) { Log.d(TAG, "小地图模块初始化……"); - mSmallMapServiceIntent = new Intent(context, SmallMapService.class); - context.startService(mSmallMapServiceIntent); + mContext = context; + + MogoApisHandler.getInstance() + .getApis() + .getStatusManagerApi() + .registerStatusChangedListener( + MogoServicePaths.PATH_SMALL_MAP, + StatusDescriptor.VR_MODE, + this); } @Override public void onDestroy() { Log.d(TAG, "小地图模块销毁……"); + hidePanel(); + } + + @Override + public void showPanel() { + Log.d(TAG, "小地图模块触发展示……"); + + mSmallMapServiceIntent = new Intent(mContext, SmallMapService.class); + mContext.startService(mSmallMapServiceIntent); + } + + @Override + public void hidePanel() { + Log.d(TAG, "小地图模块触发隐藏……"); + if (mSmallMapServiceIntent != null) { AbsMogoApplication.getApp().stopService(mSmallMapServiceIntent); } } + + @Override + public void changeAngle(double angle) { + + } + + @Override + public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { + Log.d(TAG, "onStatusChanged……descriptor=" + descriptor + ",isTrue=" + isTrue); + + if (descriptor == StatusDescriptor.VR_MODE) { + if (isTrue) { + showPanel(); + } else { + hidePanel(); + } + } + } } diff --git a/modules/mogo-module-smp/src/main/res/layout/module_small_map_direction_view.xml b/modules/mogo-module-smp/src/main/res/layout/module_small_map_direction_view.xml new file mode 100644 index 0000000000..dfd4d52a64 --- /dev/null +++ b/modules/mogo-module-smp/src/main/res/layout/module_small_map_direction_view.xml @@ -0,0 +1,5 @@ + + diff --git a/modules/mogo-module-smp/src/main/res/layout/module_small_map_view.xml b/modules/mogo-module-smp/src/main/res/layout/module_small_map_view.xml index a787adfc60..e5d1dbfe79 100644 --- a/modules/mogo-module-smp/src/main/res/layout/module_small_map_view.xml +++ b/modules/mogo-module-smp/src/main/res/layout/module_small_map_view.xml @@ -1,17 +1,16 @@ - + android:src="@drawable/module_small_map_view_border" /> \ No newline at end of file diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index 5286baa279..8033bc6f97 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -19,6 +19,7 @@ import com.mogo.service.launcher.IMogoLauncher; import com.mogo.service.locationinfo.IMogoLocationInfoService; import com.mogo.service.map.IMogoMapFrameController; import com.mogo.service.map.IMogoMapService; +import com.mogo.service.map.IMogoSmallMapProvider; import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoMarkerService; @@ -306,4 +307,11 @@ public interface IMogoServiceApis extends IProvider { * @return */ IMogoMapFrameController getMapFrameControllerApi(); + + /** + * 地图图层控制接口 + * + * @return + */ + IMogoSmallMapProvider getSmallMapProviderApi(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java index 5d4a2e12b1..b7f8ac92f7 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java @@ -231,7 +231,7 @@ public class MogoServicePaths { * 授权服务 */ @Deprecated - public static final String PATH_AGREEMENT = "/agreement/showFragment"; + public static final String PATH_AGREEMENT = "/agreement/showFragment"; /** * 日志上传 @@ -299,4 +299,9 @@ public class MogoServicePaths { * 自研地图和高德地图切换 */ public static final String PATH_MAP_FRAME_CONTROLLER = "/mapframe/controller"; + + /** + * 小地图控件 + */ + public static final String PATH_SMALL_MAP = "/small_map/api"; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java new file mode 100644 index 0000000000..4ec381d393 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java @@ -0,0 +1,27 @@ +package com.mogo.service.map; + +import com.mogo.service.module.IMogoModuleProvider; + +/** + * @author donghongyu + * @date 12/10/20 1:36 PM + */ +public interface IMogoSmallMapProvider extends IMogoModuleProvider { + + + /** + * 显示面板 + */ + void showPanel(); + + /** + * 隐藏面板 + */ + void hidePanel(); + + /** + * 修改轮盘角度 + * @param angle 角度值 0-359 + */ + void changeAngle(double angle); +} diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index 23e5373804..f4b22167b9 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -27,6 +27,7 @@ import com.mogo.service.launcher.IMogoLauncher; import com.mogo.service.locationinfo.IMogoLocationInfoService; import com.mogo.service.map.IMogoMapFrameController; import com.mogo.service.map.IMogoMapService; +import com.mogo.service.map.IMogoSmallMapProvider; import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoMarkerService; @@ -251,6 +252,11 @@ public class MogoServiceApis implements IMogoServiceApis { return getApiInstance( IMogoMapFrameController.class, MogoServicePaths.PATH_MAP_FRAME_CONTROLLER ); } + @Override + public IMogoSmallMapProvider getSmallMapProviderApi() { + return getApiInstance( IMogoSmallMapProvider.class, MogoServicePaths.PATH_SMALL_MAP ); + } + @Override public IMogoTrafficUploadProvider getTrafficUploadApi() { return getApiInstance(IMogoTrafficUploadProvider.class, MogoServicePaths.PATH_TRAFFIC_UPLOAD); From fa153652292a3eea0a1884b59c0edfd037b5e094 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Mon, 14 Dec 2020 18:41:34 +0800 Subject: [PATCH 11/11] opt --- .../mogo/base/websocket/WebSocketManager.java | 2 - .../utils/CameraLiveNoticeHelper.java | 49 ++++++++++++------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java index 69b1640fab..9b7a498373 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java @@ -183,7 +183,6 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin WebSocketData webSocketData = GsonUtil.objectFromJson(message, WebSocketData.class); int msgType = webSocketData.getMsgType(); Logger.d(TAG, "websocket received msg type = " + msgType); -// Logger.d("liyz", "websocket received msg = " + message + "----type = " + msgType); //服务端下发数据返回,上传数据回执默认不返回 if (msgType == MSG_TYPE_DOWNLINK_CAR_DATA.getMsgType()) { List listeners = mListeners.get(msgType); @@ -192,7 +191,6 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin while (iterator.hasNext()) { IMogoOnWebSocketMessageListener listener = iterator.next(); if (listener != null) { -// Logger.d("liyz", "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData()); Logger.d(TAG, "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData()); Object receiveObj = GsonUtil.objectFromJson(webSocketData.getData(),listener.target()); listener.onMsgReceived(receiveObj); diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java index 40de273e4a..db2ab3a8fc 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java @@ -42,14 +42,19 @@ public class CameraLiveNoticeHelper implements IMogoOnWebSocketMessageListener { removeCameraMarker(); - }, 2_000 ); - + }, 1_000 ); } } else { Log.e(TAG, "onMsgReceived obj == null ");