添加动画帮助类

This commit is contained in:
tongchenfei
2020-05-22 13:46:44 +08:00
parent a6ada8abfe
commit 5e8bb902a8
3 changed files with 320 additions and 248 deletions

View File

@@ -46,6 +46,7 @@ import com.mogo.module.extensions.ExtensionsModuleConst;
import com.mogo.module.extensions.R;
import com.mogo.module.extensions.navi.NaviInfoView;
import com.mogo.module.extensions.navi.NaviInfoView2;
import com.mogo.module.extensions.utils.TopViewAnimHelper;
import com.mogo.module.share.ShareControl;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
@@ -110,8 +111,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
private EntrancePresenter mEntrancePresenter;
private IMogoAuthorizeModuleManager mIMogoAuthorizeModuleManager;
private IMogoStatusManager mStatusManager;
private ConstraintLayout topMotionLayout;
private NaviInfoView2 naviInfoView;
private TopViewAnimHelper topViewAnimHelper;
/**
* 搜索莫模块
@@ -174,6 +175,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
private Rect mDisplayOverviewBounds;
private boolean toggle = false;
private boolean naviToggle = false;
@Override
protected int getLayoutId() {
@@ -196,36 +198,12 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mUploading = findViewById( R.id.module_entrance_id_uploading );
mUploadRoadCondition.setOnClickListener( view -> {
// todo 测试动画
naviInfoView.setVisibility(View.VISIBLE);
ConstraintSet beginSet = new ConstraintSet();
beginSet.clone(topMotionLayout);
ConstraintSet endSet = new ConstraintSet();
endSet.clone(topMotionLayout);
beginSet.getConstraint(R.id.module_entrance_id_top_container).layout.bottomToTop =
R.id.module_entrance_id_top_motion_layout;
beginSet.getConstraint(R.id.module_entrance_id_top_container).layout.topToTop = -1;
endSet.getConstraint(R.id.module_entrance_id_top_container).layout.bottomToTop = -1;
endSet.getConstraint(R.id.module_entrance_id_top_container).layout.topToTop =
R.id.module_entrance_id_top_motion_layout;
// topMotionLayout.setScene(hasNaviScene);
Transition transition = new AutoTransition();
transition.setDuration(500);
TransitionManager.beginDelayedTransition(topMotionLayout,transition);
if(!toggle) {
endSet.applyTo(topMotionLayout);
naviInfoView.getLayoutParams().height =
(int) getResources().getDimension(R.dimen.module_ext_navi_info_panel_small_height);
// naviInfoView.transitionToEnd();
if (!naviToggle) {
topViewAnimHelper.showNaviView();
}else{
beginSet.applyTo(topMotionLayout);
naviInfoView.getLayoutParams().height =
(int) getResources().getDimension(R.dimen.module_ext_navi_info_panel_height);
// naviInfoView.transitionToStart();
topViewAnimHelper.hideNaviView();
}
toggle = !toggle;
naviToggle = !naviToggle;
// 原始逻辑
// isClickShare = true;
// if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) {
@@ -236,9 +214,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
// }
} );
topMotionLayout = findViewById(R.id.module_entrance_id_top_motion_layout);
naviInfoView = findViewById(R.id.mlNaviInfo);
mDisplayOverview = findViewById( R.id.module_ext_id_display_overview );
mDisplayOverviewText = findViewById( R.id.module_ext_id_display_overview_text );
mDisplayOverviewIcon = findViewById( R.id.module_ext_id_display_overview_icon );
@@ -254,26 +229,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
mMove2CurrentLocation = findViewById( R.id.module_entrance_id_move2_current_location );
mMove2CurrentLocation.setOnClickListener( view -> {
// todo 测试动画
naviInfoView.setVisibility(View.GONE);
ConstraintSet beginSet = new ConstraintSet();
beginSet.clone(topMotionLayout);
ConstraintSet endSet = new ConstraintSet();
endSet.clone(topMotionLayout);
beginSet.getConstraint(R.id.module_entrance_id_top_container).layout.bottomToTop =
R.id.module_entrance_id_top_motion_layout;
beginSet.getConstraint(R.id.module_entrance_id_top_container).layout.topToTop = -1;
endSet.getConstraint(R.id.module_entrance_id_top_container).layout.bottomToTop = -1;
endSet.getConstraint(R.id.module_entrance_id_top_container).layout.topToTop =
R.id.module_entrance_id_top_motion_layout;
// topMotionLayout.setScene(hasNaviScene);
TransitionManager.beginDelayedTransition(topMotionLayout);
if(!toggle) {
endSet.applyTo(topMotionLayout);
if (!toggle) {
topViewAnimHelper.startTopInAnim();
}else{
beginSet.applyTo(topMotionLayout);
topViewAnimHelper.startTopOutAnim();
}
toggle = !toggle;
// 原始逻辑
@@ -290,6 +249,11 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent
} );
// mNaviInfo = findViewById( R.id.module_entrance_id_navi_info_panel );
ConstraintLayout rootView = findViewById(R.id.module_entrance_id_top_motion_layout);
if(rootView!=null) {
topViewAnimHelper = new TopViewAnimHelper(rootView);
}
mExitNavi = findViewById( R.id.module_entrance_id_exit_navi );
mExitNavi.setOnClickListener( view -> {
if ( mMogoNavi != null ) {

View File

@@ -0,0 +1,107 @@
package com.mogo.module.extensions.utils;
import android.content.res.Resources;
import android.transition.AutoTransition;
import android.transition.Transition;
import android.transition.TransitionManager;
import android.view.View;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintSet;
import androidx.constraintlayout.widget.Group;
import com.mogo.module.extensions.R;
import com.mogo.utils.logger.Logger;
/**
* 顶部动画帮助类
*
* @author tongchenfei
*/
public class TopViewAnimHelper {
private ConstraintLayout topMotionLayout;
private Group naviGroup,remainTimeGroup,remainDistanceGroup, arriveTimeGroup;
private View naviBg;
private ConstraintSet constraintSet = new ConstraintSet();
private Transition transition = new AutoTransition();
public TopViewAnimHelper(ConstraintLayout rootView) {
topMotionLayout = rootView;
naviBg = rootView.findViewById(R.id.module_map_id_navi_bg);
naviGroup = rootView.findViewById(R.id.naviGroup);
remainTimeGroup = rootView.findViewById(R.id.remainTimeGroup);
remainDistanceGroup = rootView.findViewById(R.id.remainDistanceGroup);
arriveTimeGroup = rootView.findViewById(R.id.arriveTimeGroup);
transition.setDuration(2000);
}
private boolean isTopViewOut = true;
public void startTopInAnim(){
Logger.d("TopViewAnimHelper", "startTopInAnim=====");
if(isTopViewOut) {
constraintSet.clone(topMotionLayout);
constraintSet.getConstraint(R.id.module_entrance_id_top_container).layout.bottomToTop = -1;
constraintSet.getConstraint(R.id.module_entrance_id_top_container).layout.topToTop =
R.id.module_entrance_id_top_motion_layout;
TransitionManager.beginDelayedTransition(topMotionLayout, transition);
constraintSet.applyTo(topMotionLayout);
if(naviGroup.getVisibility() == View.VISIBLE) {
remainDistanceGroup.setVisibility(View.GONE);
remainTimeGroup.setVisibility(View.GONE);
arriveTimeGroup.setVisibility(View.GONE);
}
naviBg.getLayoutParams().height =
(int) topMotionLayout.getContext().getResources().getDimension(R.dimen.module_ext_navi_info_panel_small_height);
isTopViewOut = false;
}
}
public void startTopOutAnim(){
Logger.d("TopViewAnimHelper", "startTopOutAnim=====");
if(!isTopViewOut) {
constraintSet.clone(topMotionLayout);
constraintSet.getConstraint(R.id.module_entrance_id_top_container).layout.bottomToTop =
R.id.module_entrance_id_top_motion_layout;
constraintSet.getConstraint(R.id.module_entrance_id_top_container).layout.topToTop = -1;
TransitionManager.beginDelayedTransition(topMotionLayout, transition);
constraintSet.applyTo(topMotionLayout);
if(naviGroup.getVisibility() == View.VISIBLE) {
remainDistanceGroup.setVisibility(View.VISIBLE);
remainTimeGroup.setVisibility(View.VISIBLE);
arriveTimeGroup.setVisibility(View.VISIBLE);
}
naviBg.getLayoutParams().height =
(int) topMotionLayout.getContext().getResources().getDimension(R.dimen.module_ext_navi_info_panel_height);
isTopViewOut = true;
}
}
public void showNaviView(){
Logger.d("TopViewAnimHelper", "showNaviView=====");
naviGroup.setVisibility(View.VISIBLE);
if (isTopViewOut) {
remainDistanceGroup.setVisibility(View.VISIBLE);
remainTimeGroup.setVisibility(View.VISIBLE);
arriveTimeGroup.setVisibility(View.VISIBLE);
}else{
remainDistanceGroup.setVisibility(View.GONE);
remainTimeGroup.setVisibility(View.GONE);
arriveTimeGroup.setVisibility(View.GONE);
}
}
public void hideNaviView(){
Logger.d("TopViewAnimHelper", "hideNaviView=====");
naviGroup.setVisibility(View.GONE);
remainDistanceGroup.setVisibility(View.GONE);
remainTimeGroup.setVisibility(View.GONE);
arriveTimeGroup.setVisibility(View.GONE);
}
}

View File

@@ -22,216 +22,217 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<com.mogo.module.extensions.navi.NaviInfoView2
android:id="@+id/mlNaviInfo"
<androidx.constraintlayout.widget.Group
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/naviGroup"
android:visibility="gone"
app:constraint_referenced_ids="module_map_id_navi_next_info_road,module_map_id_navi_next_info_turn_info,module_map_id_navi_bg,module_map_id_navi_next_info_road_turn_icon,module_map_id_navi_next_info_distance,module_map_id_navi_next_info_distance_unit,remainDistanceGroup,remainTimeGroup,arriveTimeGroup" />
<View
android:id="@+id/module_map_id_navi_bg"
android:layout_width="@dimen/module_ext_navi_info_panel_width"
android:layout_height="@dimen/module_ext_navi_info_panel_height"
app:layout_constraintTop_toBottomOf="@id/module_entrance_id_top_container"
app:layout_constraintLeft_toLeftOf="@id/module_entrance_id_top_container"
android:layout_width="@dimen/module_ext_navi_info_panel_width"
android:layout_height="@dimen/module_ext_navi_info_panel_height">
android:background="@drawable/module_ext_dw_navi_info_panel_bkg" />
<View
android:id="@+id/module_map_id_navi_bg"
android:layout_width="@dimen/module_ext_navi_info_panel_width"
android:layout_height="@dimen/module_ext_navi_info_panel_height"
android:background="@drawable/module_ext_dw_navi_info_panel_bkg" />
<ImageView
android:id="@+id/module_map_id_navi_next_info_road_turn_icon"
android:layout_width="@dimen/module_ext_navi_info_panel_turn_icon_width"
android:layout_height="@dimen/module_ext_navi_info_panel_turn_icon_height"
android:layout_marginStart="@dimen/module_ext_navi_info_panel_turn_icon_marginLeft"
android:scaleType="fitCenter"
android:src="@drawable/ic_11"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_constraintLeft_toLeftOf="@+id/module_map_id_navi_bg"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_bg" />
<ImageView
android:id="@+id/module_map_id_navi_next_info_road_turn_icon"
android:layout_width="@dimen/module_ext_navi_info_panel_turn_icon_width"
android:layout_height="@dimen/module_ext_navi_info_panel_turn_icon_height"
android:layout_marginStart="@dimen/module_ext_navi_info_panel_turn_icon_marginLeft"
android:scaleType="fitCenter"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_constraintLeft_toLeftOf="@+id/module_map_id_navi_bg"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_bg"
android:src="@drawable/ic_11" />
<TextView
android:id="@+id/module_map_id_navi_next_info_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_52"
android:text="53"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_distance_textSize"
android:textStyle="bold"
app:layout_constraintLeft_toRightOf="@id/module_map_id_navi_next_info_road_turn_icon"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_next_info_road_turn_icon" />
<TextView
android:id="@+id/module_map_id_navi_next_info_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_52"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_distance_textSize"
android:textStyle="bold"
app:layout_constraintLeft_toRightOf="@id/module_map_id_navi_next_info_road_turn_icon"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_next_info_road_turn_icon"
android:text="53" />
<TextView
android:id="@+id/module_map_id_navi_next_info_distance_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginLeft"
android:layout_marginBottom="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginBottom"
android:text="米"
android:textColor="#FFFFFF"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_distance_unit_textSize"
app:layout_constraintBaseline_toBaselineOf="@id/module_map_id_navi_next_info_distance"
app:layout_constraintLeft_toRightOf="@id/module_map_id_navi_next_info_distance" />
<TextView
android:id="@+id/module_map_id_navi_next_info_distance_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginLeft"
android:layout_marginBottom="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginBottom"
android:textColor="#FFFFFF"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_distance_unit_textSize"
app:layout_constraintBaseline_toBaselineOf="@id/module_map_id_navi_next_info_distance"
app:layout_constraintLeft_toRightOf="@id/module_map_id_navi_next_info_distance"
android:text="米" />
<TextView
android:id="@+id/module_map_id_navi_next_info_turn_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginLeft"
android:layout_marginBottom="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginBottom"
android:text="左转进入"
android:textColor="#7FF1F1F1"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_distance_unit_textSize"
app:layout_constraintBaseline_toBaselineOf="@id/module_map_id_navi_next_info_distance_unit"
app:layout_constraintLeft_toRightOf="@id/module_map_id_navi_next_info_distance_unit" />
<TextView
android:id="@+id/module_map_id_navi_next_info_turn_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginLeft"
android:layout_marginBottom="@dimen/module_ext_navi_info_panel_next_info_distance_unit_marginBottom"
android:textColor="#7FF1F1F1"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_distance_unit_textSize"
app:layout_constraintBaseline_toBaselineOf="@id/module_map_id_navi_next_info_distance_unit"
app:layout_constraintLeft_toRightOf="@id/module_map_id_navi_next_info_distance_unit"
android:text="左转进入" />
<TextView
android:id="@+id/module_map_id_navi_next_info_road"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_ext_navi_next_info_road_marginTop"
android:ellipsize="end"
android:maxLines="1"
android:text="北三环东路辅路"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_road_textSize"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_next_info_road_turn_icon"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_navi_next_info_distance" />
<TextView
android:id="@+id/module_map_id_navi_next_info_road"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_ext_navi_next_info_road_marginTop"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_navi_info_panel_next_info_road_textSize"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_next_info_road_turn_icon"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_navi_next_info_distance"
android:text="北三环东路辅路" />
<androidx.constraintlayout.widget.Group
android:id="@+id/remainDistanceGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="module_map_id_remaining_distance_icon,module_map_id_remaining_distance,module_map_id_remaining_distance_unit,module_map_id_remaining_distance_notice" />
<!--remain distance-->
<ImageView
android:id="@+id/module_map_id_remaining_distance_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_117"
android:src="@drawable/module_ext_ic_navi_info1"
app:layout_constraintBottom_toTopOf="@id/module_map_id_remaining_distance"
app:layout_constraintRight_toLeftOf="@id/module_map_id_remaining_time_icon"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_bg"
app:layout_constraintVertical_chainStyle="packed" />
<androidx.constraintlayout.widget.Group
android:id="@+id/remainDistanceGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="module_map_id_remaining_distance_icon,module_map_id_remaining_distance,module_map_id_remaining_distance_unit,module_map_id_remaining_distance_notice" />
<!--remain distance-->
<ImageView
android:id="@+id/module_map_id_remaining_distance_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_117"
android:src="@drawable/module_ext_ic_navi_info1"
app:layout_constraintBottom_toTopOf="@id/module_map_id_remaining_distance"
app:layout_constraintRight_toLeftOf="@id/module_map_id_remaining_time_icon"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/module_map_id_remaining_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3599"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_remaining_distance_textSize"
app:layout_constraintBottom_toTopOf="@+id/module_map_id_remaining_distance_notice"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_remaining_distance_icon"
app:layout_constraintTop_toBottomOf="@+id/module_map_id_remaining_distance_icon" />
<TextView
android:id="@+id/module_map_id_remaining_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_remaining_distance_textSize"
app:layout_constraintBottom_toTopOf="@+id/module_map_id_remaining_distance_notice"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_remaining_distance_icon"
app:layout_constraintTop_toBottomOf="@+id/module_map_id_remaining_distance_icon"
android:text="3599" />
<TextView
android:id="@+id/module_map_id_remaining_distance_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="km"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_remaining_distance_unit_textSize"
app:layout_constraintBaseline_toBaselineOf="@id/module_map_id_remaining_distance"
app:layout_constraintLeft_toRightOf="@id/module_map_id_remaining_distance" />
<TextView
android:id="@+id/module_map_id_remaining_distance_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_remaining_distance_unit_textSize"
app:layout_constraintBaseline_toBaselineOf="@id/module_map_id_remaining_distance"
app:layout_constraintLeft_toRightOf="@id/module_map_id_remaining_distance"
android:text="km" />
<TextView
android:id="@+id/module_map_id_remaining_distance_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="剩余"
android:textColor="#7FFFFFFF"
android:textSize="@dimen/module_ext_remaining_distance_unit_textSize"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_remaining_distance"
app:layout_constraintTop_toBottomOf="@id/module_map_id_remaining_distance" />
<TextView
android:id="@+id/module_map_id_remaining_distance_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="剩余"
android:textColor="#7FFFFFFF"
android:textSize="@dimen/module_ext_remaining_distance_unit_textSize"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_remaining_distance"
app:layout_constraintTop_toBottomOf="@id/module_map_id_remaining_distance" />
<androidx.constraintlayout.widget.Group
android:id="@+id/remainTimeGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="module_map_id_remaining_time_icon,module_map_id_remaining_time,module_map_id_remaining_time_unit,module_map_id_remaining_time_notice" />
<!--remain time-->
<ImageView
android:id="@+id/module_map_id_remaining_time_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_117"
android:src="@drawable/module_ext_ic_navi_info2"
app:layout_constraintBottom_toTopOf="@id/module_map_id_remaining_time"
app:layout_constraintRight_toLeftOf="@id/module_map_id_arrive_time_icon"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_bg"
app:layout_constraintVertical_chainStyle="packed" />
<androidx.constraintlayout.widget.Group
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/remainTimeGroup"
app:constraint_referenced_ids="module_map_id_remaining_time_icon,module_map_id_remaining_time,module_map_id_remaining_time_unit,module_map_id_remaining_time_notice" />
<!--remain time-->
<ImageView
android:id="@+id/module_map_id_remaining_time_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_117"
android:src="@drawable/module_ext_ic_navi_info2"
app:layout_constraintBottom_toTopOf="@id/module_map_id_remaining_time"
app:layout_constraintRight_toLeftOf="@id/module_map_id_arrive_time_icon"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/module_map_id_remaining_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3599"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_remaining_time_textSize"
app:layout_constraintBottom_toTopOf="@id/module_map_id_remaining_time_notice"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_remaining_time_icon"
app:layout_constraintTop_toBottomOf="@id/module_map_id_remaining_time_icon" />
<TextView
android:id="@+id/module_map_id_remaining_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_remaining_time_textSize"
app:layout_constraintBottom_toTopOf="@id/module_map_id_remaining_time_notice"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_remaining_time_icon"
app:layout_constraintTop_toBottomOf="@id/module_map_id_remaining_time_icon"
android:text="3599" />
<TextView
android:id="@+id/module_map_id_remaining_time_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="km"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_remaining_time_unit_textSize"
app:layout_constraintBaseline_toBaselineOf="@id/module_map_id_remaining_time"
app:layout_constraintLeft_toRightOf="@id/module_map_id_remaining_time" />
<TextView
android:id="@+id/module_map_id_remaining_time_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_remaining_time_unit_textSize"
app:layout_constraintBaseline_toBaselineOf="@id/module_map_id_remaining_time"
app:layout_constraintLeft_toRightOf="@id/module_map_id_remaining_time"
android:text="km" />
<TextView
android:id="@+id/module_map_id_remaining_time_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="时间"
android:textColor="#7FFFFFFF"
android:textSize="@dimen/module_ext_remaining_distance_unit_textSize"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_remaining_time"
app:layout_constraintTop_toBottomOf="@id/module_map_id_remaining_time" />
<TextView
android:id="@+id/module_map_id_remaining_time_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="时间"
android:textColor="#7FFFFFFF"
android:textSize="@dimen/module_ext_remaining_distance_unit_textSize"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_remaining_time"
app:layout_constraintTop_toBottomOf="@id/module_map_id_remaining_time" />
<androidx.constraintlayout.widget.Group
android:id="@+id/arriveTimeGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="module_map_id_arrive_time_icon,module_map_id_arrive_time,module_map_id_arrive_time_notice" />
<!--arrive time-->
<ImageView
android:id="@+id/module_map_id_arrive_time_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_95"
android:src="@drawable/module_ext_ic_navi_info3"
app:layout_constraintBottom_toTopOf="@id/module_map_id_arrive_time"
app:layout_constraintRight_toRightOf="@+id/module_map_id_navi_bg"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_bg"
app:layout_constraintVertical_chainStyle="packed" />
<androidx.constraintlayout.widget.Group
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/arriveTimeGroup"
app:constraint_referenced_ids="module_map_id_arrive_time_icon,module_map_id_arrive_time,module_map_id_arrive_time_notice" />
<!--arrive time-->
<ImageView
android:id="@+id/module_map_id_arrive_time_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_95"
android:src="@drawable/module_ext_ic_navi_info3"
app:layout_constraintBottom_toTopOf="@id/module_map_id_arrive_time"
app:layout_constraintRight_toRightOf="@+id/module_map_id_navi_bg"
app:layout_constraintTop_toTopOf="@+id/module_map_id_navi_bg"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/module_map_id_arrive_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3599"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_arrive_time_textSize"
app:layout_constraintBottom_toTopOf="@id/module_map_id_arrive_time_notice"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_arrive_time_icon"
app:layout_constraintTop_toBottomOf="@+id/module_map_id_arrive_time_icon" />
<TextView
android:id="@+id/module_map_id_arrive_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#F1F1F1"
android:textSize="@dimen/module_ext_arrive_time_textSize"
app:layout_constraintBottom_toTopOf="@id/module_map_id_arrive_time_notice"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_arrive_time_icon"
app:layout_constraintTop_toBottomOf="@+id/module_map_id_arrive_time_icon"
android:text="3599" />
<TextView
android:id="@+id/module_map_id_arrive_time_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="到达"
android:textColor="#7FFFFFFF"
android:textSize="@dimen/module_ext_remaining_distance_unit_textSize"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_arrive_time"
app:layout_constraintTop_toBottomOf="@id/module_map_id_arrive_time" />
</com.mogo.module.extensions.navi.NaviInfoView2>
<TextView
android:id="@+id/module_map_id_arrive_time_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="到达"
android:textColor="#7FFFFFFF"
android:textSize="@dimen/module_ext_remaining_distance_unit_textSize"
app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_constraintLeft_toLeftOf="@id/module_map_id_arrive_time"
app:layout_constraintTop_toBottomOf="@id/module_map_id_arrive_time" />
<TextView
android:id="@+id/module_ext_id_north"
@@ -245,8 +246,8 @@
android:text="@string/mode_north_up"
android:textColor="@color/white"
android:textSize="@dimen/dp_28"
app:layout_constraintRight_toRightOf="@+id/mlNaviInfo"
app:layout_constraintTop_toBottomOf="@+id/mlNaviInfo"
app:layout_constraintRight_toRightOf="@+id/module_map_id_navi_bg"
app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"
app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop" />
@@ -259,8 +260,8 @@
android:gravity="center"
android:orientation="vertical"
android:visibility="visible"
app:layout_constraintLeft_toLeftOf="@+id/mlNaviInfo"
app:layout_constraintTop_toBottomOf="@+id/mlNaviInfo">
app:layout_constraintLeft_toLeftOf="@+id/module_map_id_navi_bg"
app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg">
<ImageView
android:id="@+id/module_ext_id_display_overview_icon"