From fb36b3321544b5e5a14a22a5430f4ed79b63e226 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Mon, 14 Dec 2020 16:04:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3topView=E5=86=85=E5=AD=98?= =?UTF-8?q?=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"/>