1. m1增加topView蒙层

2. 1.1.8 优化目的地车友位置
This commit is contained in:
tongchenfei
2020-11-13 16:05:37 +08:00
parent 9057e0cdb7
commit d606256e31
5 changed files with 111 additions and 47 deletions

View File

@@ -50,6 +50,7 @@ import com.mogo.module.extensions.R;
import com.mogo.module.extensions.navi.NaviInfoView;
import com.mogo.module.extensions.userinfo.UserInfo;
import com.mogo.module.extensions.utils.EntranceViewHolder;
import com.mogo.module.extensions.utils.NoMapTopViewShaderHelper;
import com.mogo.module.extensions.utils.TopViewAnimHelper;
import com.mogo.module.extensions.utils.TopViewNoLinkageAnimHelper;
import com.mogo.module.share.manager.ServiceApisManager;
@@ -205,6 +206,8 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
seekHelpGroup = findViewById(R.id.module_ext_id_seek_help_notice_group);
seekHelpNum = findViewById(R.id.module_ext_id_seek_help_notice_number);
NoMapTopViewShaderHelper.getInstance().initShaderView(findViewById(R.id.module_ext_id_top_container_shader));
mUploadRoadCondition = findViewById(R.id.module_entrance_id_upload_road_condition);
mUpload = findViewById(R.id.module_entrance_id_upload);
mUploading = findViewById(R.id.module_entrance_id_uploading);
@@ -630,6 +633,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
TopViewAnimHelper.getInstance().clear();
TopViewNoLinkageAnimHelper.getInstance().removeAllView();
TopViewNoLinkageAnimHelper.getInstance().clear();
NoMapTopViewShaderHelper.getInstance().release();
EntranceViewHolder.getInstance().release();
}
@@ -691,11 +695,12 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mCameraMode.setVisibility(View.VISIBLE);
}
mApis.getAnalyticsApi().track("Navigation_begin", new HashMap<>());
if ( DebugConfig.isSupportedSearchDestinationOnlineCarList() ) {
mOnlineCarEntrance.setVisibility( View.VISIBLE );
} else {
mOnlineCarEntrance.setVisibility( View.GONE );
}
// 目的地车友的显示隐藏控制准备迁移到TopViewAnimHelper中
// if ( DebugConfig.isSupportedSearchDestinationOnlineCarList() ) {
// mOnlineCarEntrance.setVisibility( View.VISIBLE );
// } else {
// mOnlineCarEntrance.setVisibility( View.GONE );
// }
}
@Override
@@ -708,7 +713,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mMApUIController.changeMapMode(EnumMapUI.NorthUP_2D);
mDisplayOverview.setVisibility(View.GONE);
mCameraMode.setVisibility(View.GONE);
mOnlineCarEntrance.setVisibility( View.GONE );
// mOnlineCarEntrance.setVisibility( View.GONE );
MapCenterPointStrategy.setMapCenterPointByScene(mMApUIController, Scene.AIMLESS);
}

View File

@@ -0,0 +1,62 @@
package com.mogo.module.extensions.utils;
import android.view.View;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.utils.logger.Logger;
/**
*
*/
public class NoMapTopViewShaderHelper {
private static final String TAG = "NoMapTopViewShaderHelper";
private static final NoMapTopViewShaderHelper ourInstance = new NoMapTopViewShaderHelper();
public static NoMapTopViewShaderHelper getInstance() {
return ourInstance;
}
private NoMapTopViewShaderHelper() {
}
private View shader;
private int showCount = 0;
public void initShaderView(View shader) {
this.shader = shader;
}
public void showShader(){
if (this.shader == null) {
Logger.e(TAG, "shader view is null!");
return;
}
if (DebugConfig.isMapBased()) {
Logger.d(TAG, "基于地图版本不加shader");
return;
}
if (showCount == 0) {
shader.setVisibility(View.VISIBLE);
}
showCount++;
}
public void hideShader(){
if (this.shader == null) {
Logger.e(TAG, "shader view is null!");
return;
}
if (DebugConfig.isMapBased()) {
Logger.d(TAG, "基于地图版本不加shader");
return;
}
if (showCount == 1) {
shader.setVisibility(View.GONE);
}
showCount--;
}
public void release(){
shader = null;
}
}

View File

@@ -58,8 +58,6 @@ public class TopViewAnimHelper {
private Transition transition;
private TextView cameraMode;
private View shader;
private float topHeight = 0f;
private Handler handler = new Handler();
@@ -105,8 +103,6 @@ public class TopViewAnimHelper {
tvTurnInfo = rootView.findViewById(R.id.module_map_id_navi_next_info_turn_info);
tvDestinationOnlineCar = rootView.findViewById(R.id.module_ext_id_destination_online_car);
shader = rootView.findViewById(R.id.module_ext_id_top_container_shader);
topContainer.setSlideListener(this::startLatestTopOutAnim);
ivTurnIcon = rootView.findViewById(R.id.module_map_id_navi_next_info_road_turn_icon);
@@ -382,6 +378,8 @@ public class TopViewAnimHelper {
arriveTimeGroup.setVisibility(View.GONE);
}
NoMapTopViewShaderHelper.getInstance().showShader();
constraintSet.clone(topMotionLayout);
constraintSet.clear(R.id.module_entrance_id_top_container,
@@ -393,9 +391,6 @@ public class TopViewAnimHelper {
TransitionManager.beginDelayedTransition(topMotionLayout, transition);
// }
checkCameraModePosition(false);
if (DebugConfig.isMapBased()) {
shader.setVisibility(View.VISIBLE);
}
if (naviBg.getVisibility() == View.VISIBLE) {
// 约束设置需要在applyTo()方法之前执行visiable设置需要在applyTo()
// 方法之后执行才能生效,所以分开了两个判断,至于为什么这么做才能生效,不得而知
@@ -429,18 +424,15 @@ public class TopViewAnimHelper {
getDimen(R.dimen.module_ext_navi_info_panel_next_info_distance_unit_textSize_small));
// 改变目的地车友的约束
constraintSet.clear(tvDestinationOnlineCar.getId());
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));
tvDestinationOnlineCar.getLayoutParams().height =
(int) getDimen(R.dimen.module_ext_navi_info_panel_small_height);
tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_small_bkg);
}
constraintSet.applyTo(topMotionLayout);
ivTurnIcon.getLayoutParams().height =
@@ -449,6 +441,10 @@ public class TopViewAnimHelper {
(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) {
scene = Scene.NAVI_WITH_ROAD_EVENT;
@@ -497,8 +493,10 @@ public class TopViewAnimHelper {
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);
constraintSet.clear(R.id.module_entrance_id_top_container, ConstraintSet.TOP);
@@ -507,10 +505,6 @@ public class TopViewAnimHelper {
TransitionManager.beginDelayedTransition(topMotionLayout, transition);
checkCameraModePosition(false);
if (DebugConfig.isMapBased()) {
shader.setVisibility(View.GONE);
}
if (naviBg.getVisibility() == View.VISIBLE) {
// 约束设置需要在applyTo()方法之前执行visiable设置需要在applyTo()
// 方法之后执行才能生效,所以分开了两个判断,至于为什么这么做才能生效,不得而知
@@ -533,17 +527,13 @@ public class TopViewAnimHelper {
constraintSet.connect(ivTurnIcon.getId(), ConstraintSet.BOTTOM,
naviBg.getId(), ConstraintSet.BOTTOM, 0);
constraintSet.clear(tvDestinationOnlineCar.getId());
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));
tvDestinationOnlineCar.getLayoutParams().height =
(int) getDimen(R.dimen.module_ext_navi_info_panel_height);
tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_bkg);
}
constraintSet.applyTo(topMotionLayout);
@@ -553,6 +543,10 @@ public class TopViewAnimHelper {
(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) {
scene = Scene.NAVI;
@@ -581,6 +575,10 @@ public class TopViewAnimHelper {
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);
@@ -609,17 +607,14 @@ public class TopViewAnimHelper {
naviBg.getId(), ConstraintSet.BOTTOM, 0);
// 目的地车友
constraintSet.clear(tvDestinationOnlineCar.getId());
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));
tvDestinationOnlineCar.getLayoutParams().height =
(int) getDimen(R.dimen.module_ext_navi_info_panel_height);
tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_bkg);
constraintSet.applyTo(topMotionLayout);
scene = Scene.NAVI_WITH_ROAD_EVENT;
} else {
@@ -628,6 +623,10 @@ public class TopViewAnimHelper {
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,
@@ -651,7 +650,8 @@ public class TopViewAnimHelper {
(int) getDimen(R.dimen.module_ext_navi_info_turn_icon_margin_bottom));
// 目的地车友
constraintSet.clear(tvDestinationOnlineCar.getId());
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));
@@ -659,10 +659,6 @@ public class TopViewAnimHelper {
ConstraintSet.RIGHT, naviBg.getId(), ConstraintSet.RIGHT,
(int) getDimen(R.dimen.module_ext_navi_small_margin_right));
tvDestinationOnlineCar.getLayoutParams().height =
(int) getDimen(R.dimen.module_ext_navi_info_panel_small_height);
tvDestinationOnlineCar.setBackgroundResource(R.drawable.module_ext_dw_navi_info_panel_small_bkg);
constraintSet.applyTo(topMotionLayout);
scene = Scene.NAVI;
}
@@ -747,6 +743,9 @@ public class TopViewAnimHelper {
naviBg.setVisibility(visibility);
tvNextDistanceUnit.setVisibility(visibility);
tvTurnInfo.setVisibility(visibility);
if(DebugConfig.isSupportedSearchDestinationOnlineCarList()) {
tvDestinationOnlineCar.setVisibility(visibility);
}
}

View File

@@ -54,8 +54,6 @@ public class TopViewNoLinkageAnimHelper {
private Transition transition;
private TextView cameraMode;
private View shader;
private float topHeight = 0f;
private Handler handler = new Handler();
@@ -100,8 +98,6 @@ public class TopViewNoLinkageAnimHelper {
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);
shader = rootView.findViewById(R.id.module_ext_id_top_container_shader);
topContainerNoLinkage.setSlideListener(this::startLatestTopOutAnim);
ivTurnIcon = rootView.findViewById(R.id.module_map_id_navi_next_info_road_turn_icon);
@@ -367,6 +363,9 @@ public class TopViewNoLinkageAnimHelper {
}
topContainerNoLinkage.setChildAddedListener(child -> {
topContainerNoLinkage.setChildAddedListener(null);
NoMapTopViewShaderHelper.getInstance().showShader();
constraintSet.clone(topMotionLayout);
constraintSet.clear(R.id.module_entrance_id_top_container_no_linkage,
@@ -375,9 +374,6 @@ public class TopViewNoLinkageAnimHelper {
R.id.module_entrance_id_top_motion_layout, ConstraintSet.TOP);
TransitionManager.beginDelayedTransition(topMotionLayout, transition);
checkCameraModePosition(false);
if (DebugConfig.isMapBased()) {
shader.setVisibility(View.VISIBLE);
}
constraintSet.applyTo(topMotionLayout);
int scene = Scene.AIMLESS_WITH_ROAD_EVENT;
@@ -412,6 +408,7 @@ public class TopViewNoLinkageAnimHelper {
statusListenerMap.get(view).beforeViewRemoveAnim(view);
}
isTopViewOut = true;
NoMapTopViewShaderHelper.getInstance().hideShader();
constraintSet.clone(topMotionLayout);
constraintSet.clear(R.id.module_entrance_id_top_container_no_linkage, ConstraintSet.TOP);