解决topView内存泄漏问题
This commit is contained in:
1
.idea/gradle.xml
generated
1
.idea/gradle.xml
generated
@@ -84,6 +84,7 @@
|
||||
</set>
|
||||
</option>
|
||||
<option name="resolveModulePerSourceSet" value="false" />
|
||||
<option name="useQualifiedModuleNames" value="true" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
|
||||
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -4,7 +4,7 @@
|
||||
<asm skipDebug="false" skipFrames="false" skipCode="false" expandFrames="false" />
|
||||
<groovy codeStyle="LEGACY" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="SuppressionsComponent">
|
||||
|
||||
@@ -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<EntranceView, EntrancePresente
|
||||
|
||||
private BaseNaviInfoView mNaviInfo;
|
||||
private TextView mExitNavi;
|
||||
private AnimNavInfoView animNavInfoView;
|
||||
private VrModeNavInfoView vrModeNavInfoView;
|
||||
|
||||
|
||||
private View mDisplayOverview;
|
||||
@@ -318,7 +321,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
ConstraintLayout rootView = findViewById(R.id.module_entrance_id_top_motion_layout);
|
||||
if (rootView != null) {
|
||||
TopViewAnimHelper.getInstance().init(rootView);
|
||||
TopViewNoLinkageAnimHelper.getInstance().init(rootView);
|
||||
// TopViewNoLinkageAnimHelper.getInstance().init(rootView);
|
||||
}
|
||||
|
||||
mExitNavi = findViewById(R.id.module_entrance_id_exit_navi);
|
||||
@@ -375,7 +378,9 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
R.dimen.module_map_display_overview_bottom_margin)
|
||||
);
|
||||
|
||||
mNaviInfo = new NaviInfoView(rootView);
|
||||
animNavInfoView = findViewById(R.id.module_ext_id_anim_nav_info);
|
||||
vrModeNavInfoView = findViewById(R.id.module_ext_id_vr_nav_info);
|
||||
mNaviInfo = animNavInfoView;
|
||||
|
||||
findViewById(R.id.module_map_id_navi_bg).setOnClickListener(new OnPreventFastClickListener() {
|
||||
@Override
|
||||
@@ -431,16 +436,16 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
mUploadButtonAnimatorController = new UploadButtonAnimatorController(mUploading, mUpload,
|
||||
mStatusManager);
|
||||
|
||||
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<String, Object> 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<String, Object> 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<EntranceView, EntrancePresente
|
||||
|
||||
tvExitVrMode.setVisibility(View.VISIBLE);
|
||||
TopViewAnimHelper.getInstance().enterVrMode();
|
||||
TopViewNoLinkageAnimHelper.getInstance().enterVrMode();
|
||||
// TopViewNoLinkageAnimHelper.getInstance().enterVrMode();
|
||||
showVrModeNaviView();
|
||||
mNaviInfo = new VrModeNavInfoView(mRootView);
|
||||
mNaviInfo = vrModeNavInfoView;
|
||||
adasNoticeHelper.enterVrMode();
|
||||
mCameraLiveNoticeHelper.enterVrMode();
|
||||
TrafficLightPanelManager.getInstance().showNavPanel();
|
||||
@@ -523,9 +528,9 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
|
||||
tvExitVrMode.setVisibility(View.GONE);
|
||||
TopViewAnimHelper.getInstance().exitVrMode();
|
||||
TopViewNoLinkageAnimHelper.getInstance().exitVrMode();
|
||||
// TopViewNoLinkageAnimHelper.getInstance().exitVrMode();
|
||||
hideVrModeNaviView();
|
||||
mNaviInfo = new NaviInfoView(mRootView);
|
||||
mNaviInfo = animNavInfoView;
|
||||
adasNoticeHelper.exitVrMode();
|
||||
mCameraLiveNoticeHelper.exitVrMode();
|
||||
TrafficLightPanelManager.getInstance().hideNavPanel();
|
||||
@@ -807,7 +812,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
mStatusManager.registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, this);
|
||||
|
||||
TopViewAnimHelper.getInstance().setIMogoMapUIController(mMApUIController);
|
||||
TopViewNoLinkageAnimHelper.getInstance().setIMogoMapUIController(mMApUIController);
|
||||
// TopViewNoLinkageAnimHelper.getInstance().setIMogoMapUIController(mMApUIController);
|
||||
|
||||
mClickShareVoiceStrings =
|
||||
getContext().getResources().getStringArray(R.array.click_share_voice_guide_array);
|
||||
@@ -823,8 +828,8 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
isClickShare = false;
|
||||
TopViewAnimHelper.getInstance().removeAllView();
|
||||
TopViewAnimHelper.getInstance().clear();
|
||||
TopViewNoLinkageAnimHelper.getInstance().removeAllView();
|
||||
TopViewNoLinkageAnimHelper.getInstance().clear();
|
||||
// TopViewNoLinkageAnimHelper.getInstance().removeAllView();
|
||||
// TopViewNoLinkageAnimHelper.getInstance().clear();
|
||||
NoMapTopViewShaderHelper.getInstance().release();
|
||||
EntranceViewHolder.getInstance().release();
|
||||
}
|
||||
@@ -1045,20 +1050,20 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
|
||||
private void debugTopView() {
|
||||
findViewById(R.id.btnDebugCtrlNaviView).setOnClickListener(view -> {
|
||||
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 -> {
|
||||
|
||||
@@ -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<String, Object> 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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
* <p>
|
||||
* 描述
|
||||
*/
|
||||
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 ) {
|
||||
|
||||
@@ -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
|
||||
* <p>
|
||||
* 导航信息
|
||||
*
|
||||
* @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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/module_map_id_navi_next_info_road_turn_icon"
|
||||
@@ -218,4 +218,26 @@
|
||||
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_destination_online_car"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/module_ext_button_height"
|
||||
android:layout_marginLeft="@dimen/module_common_shadow_width_pos"
|
||||
android:layout_marginTop="@dimen/module_ext_camera_button_marginTop"
|
||||
android:background="@drawable/module_ext_dw_navi_info_panel_bkg"
|
||||
android:drawableLeft="@drawable/module_ext_destination_online_car_dw"
|
||||
android:drawablePadding="@dimen/module_ext_destination_online_car_drawablePadding"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/module_ext_destination_online_car_paddingLeft"
|
||||
android:paddingRight="@dimen/module_ext_destination_online_car_paddingRight"
|
||||
android:text="@string/module_ext_destination_online_car_text"
|
||||
android:textColor="@color/module_ext_color_voice_text"
|
||||
android:textSize="@dimen/module_ext_north_textSize"
|
||||
android:textStyle="bold"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"
|
||||
app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop"
|
||||
tools:visibility="visible" />
|
||||
</merge>
|
||||
@@ -0,0 +1,246 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
>
|
||||
<View
|
||||
android:id="@+id/module_map_id_navi_bg"
|
||||
style="@style/NaviViewStyle"
|
||||
android:layout_height="@dimen/module_ext_navi_info_panel_height"
|
||||
android:background="@drawable/module_ext_dw_navi_info_panel_bkg"
|
||||
android:focusable="true"
|
||||
android:clickable="true"
|
||||
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="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<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" />
|
||||
|
||||
<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/module_map_id_navi_next_info_distance_marginStart"
|
||||
android:layout_marginTop="@dimen/module_map_id_navi_next_info_distance_marginTop"
|
||||
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_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_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_next_step_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_road"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/module_ext_navi_next_info_road_marginTop"
|
||||
android:layout_marginBottom="@dimen/module_map_id_navi_next_info_road_marginBottom"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="北三环东路辅路"
|
||||
android:textColor="#F1F1F1"
|
||||
android:textSize="@dimen/module_ext_navi_info_panel_next_info_road_textSize"
|
||||
android:textStyle="bold"
|
||||
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" />
|
||||
|
||||
<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"
|
||||
android:textStyle="bold"
|
||||
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_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_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" />
|
||||
|
||||
<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"
|
||||
android:textStyle="bold"
|
||||
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_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_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/module_ext_navi_extra_info_margin_right"
|
||||
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"
|
||||
android:textStyle="bold"
|
||||
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_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_destination_online_car"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/module_ext_button_height"
|
||||
android:layout_marginLeft="@dimen/module_common_shadow_width_pos"
|
||||
android:layout_marginTop="@dimen/module_ext_camera_button_marginTop"
|
||||
android:background="@drawable/module_ext_dw_navi_info_panel_bkg"
|
||||
android:drawableLeft="@drawable/module_ext_destination_online_car_dw"
|
||||
android:drawablePadding="@dimen/module_ext_destination_online_car_drawablePadding"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/module_ext_destination_online_car_paddingLeft"
|
||||
android:paddingRight="@dimen/module_ext_destination_online_car_paddingRight"
|
||||
android:text="@string/module_ext_destination_online_car_text"
|
||||
android:textColor="@color/module_ext_color_voice_text"
|
||||
android:textSize="@dimen/module_ext_north_textSize"
|
||||
android:textStyle="bold"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"
|
||||
app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop"
|
||||
tools:visibility="visible" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -16,10 +16,12 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<include
|
||||
layout="@layout/include_navi_in_vr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<com.mogo.module.extensions.navi.VrModeNavInfoView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/module_ext_id_vr_nav_info"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/module_entrance_id_move2_current_location"
|
||||
@@ -127,10 +129,14 @@
|
||||
android:background="#7f000000"
|
||||
android:visibility="gone" />
|
||||
|
||||
<include
|
||||
layout="@layout/include_navi_info_panle"
|
||||
<com.mogo.module.extensions.navi.AnimNavInfoView
|
||||
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"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/module_ext_id_north"
|
||||
@@ -151,28 +157,6 @@
|
||||
app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/module_ext_id_destination_online_car"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/module_ext_button_height"
|
||||
android:layout_marginLeft="@dimen/module_common_shadow_width_pos"
|
||||
android:layout_marginTop="@dimen/module_ext_camera_button_marginTop"
|
||||
android:background="@drawable/module_ext_dw_navi_info_panel_bkg"
|
||||
android:drawableLeft="@drawable/module_ext_destination_online_car_dw"
|
||||
android:drawablePadding="@dimen/module_ext_destination_online_car_drawablePadding"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/module_ext_destination_online_car_paddingLeft"
|
||||
android:paddingRight="@dimen/module_ext_destination_online_car_paddingRight"
|
||||
android:text="@string/module_ext_destination_online_car_text"
|
||||
android:textColor="@color/module_ext_color_voice_text"
|
||||
android:textSize="@dimen/module_ext_north_textSize"
|
||||
android:textStyle="bold"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/module_map_id_navi_bg"
|
||||
app:layout_goneMarginTop="@dimen/module_ext_north_goneMarginTop"
|
||||
tools:visibility="visible" />
|
||||
<!--关联别的控件的头部容器-->
|
||||
<com.mogo.module.extensions.navi.TopView
|
||||
android:id="@+id/module_entrance_id_top_container"
|
||||
|
||||
@@ -123,10 +123,13 @@
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"/>
|
||||
|
||||
<include
|
||||
layout="@layout/include_navi_info_panle"
|
||||
<com.mogo.module.extensions.navi.AnimNavInfoView
|
||||
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"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/module_ext_id_north"
|
||||
|
||||
Reference in New Issue
Block a user