* 描述 */ -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" />