[清扫车]消息盒子隐藏显示逻辑添加

This commit is contained in:
bxb
2023-02-23 21:17:03 +08:00
parent 010a0cebee
commit a49d725c72
2 changed files with 75 additions and 36 deletions

View File

@@ -18,6 +18,9 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
import com.mogo.eagle.core.function.view.MapBizView;
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
@@ -31,9 +34,12 @@ import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.sweeper.R;
import com.mogo.och.sweeper.database.bean.WeltDataBean;
import com.mogo.och.sweeper.callback.IWeltMapSwitchToSmallCallback;
import com.mogo.och.sweeper.event.WeltDataEvent;
import com.mogo.och.sweeper.view.SweeperTrafficDataView;
import com.mogo.och.sweeper.view.WeltSmallMapView;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
@@ -77,12 +83,12 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
private ImageView mRefreshNavi;
//作业任务贴边数据展示图
private WeltSmallMapView mMapWeltView;
//切换到任务作业全览图
private ImageView mMapSwitchToBig;
//任务作业全览图
private WeltMapOverViewFragment mWeltMapOverViewFragment;
private FrameLayout mFlWeltMapOverView;
private ImageView mMessageBox;
private DriverMsgBoxButtonView mViewDriverMsgBoxButton;
private DriverMsgBoxListView mViewDriverMsgBoxList;
private DriverMsgBoxBubbleView mViewDriverMsgBoxBubble;
@Override
protected int getLayoutId() {
@@ -107,10 +113,10 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
mCloseNavIcon = findViewById(R.id.sweeper_close_navi_icon);
mRefreshNavi = findViewById(R.id.sweeper_refresh_navi);
mMapWeltView = findViewById(R.id.sweeper_task_welt_small_map);
mMapSwitchToBig = findViewById(R.id.sweeper_switch_to_big);
mFlWeltMapOverView = findViewById(R.id.sweeper_welt_map_overview);
mMessageBox = findViewById(R.id.sweeper_message_box_iv);
initListener();
//设置消息盒子
setMessageBox();
//设置左下角四个按钮监听事件
setBottomBtnListener();
// 模拟 不可自动驾驶目前场景是刚开机adas还未和工控机连接
@@ -149,7 +155,29 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
mapBizView.onCreate(savedInstanceState);
mMapWeltView.onCreateView(savedInstanceState);
//mock 贴边数据
//setWeltData();
setWeltData();
}
/**
* 消息盒子
*/
private void setMessageBox() {
mViewDriverMsgBoxButton = findViewById(R.id.viewDriverMsgBoxButton);
mViewDriverMsgBoxList = findViewById(R.id.viewDriverMsgBoxList);
mViewDriverMsgBoxBubble = findViewById(R.id.viewDriverMsgBoxBubble);
//消息盒子
mViewDriverMsgBoxButton.setClickListener(show -> {
if (show) {
mViewDriverMsgBoxList.setVisibility(View.VISIBLE);
mViewDriverMsgBoxList.notifyData();
mViewDriverMsgBoxBubble.setVisibility(View.GONE);
mViewDriverMsgBoxBubble.isShowData(false);
} else {
mViewDriverMsgBoxList.setVisibility(View.GONE);
mViewDriverMsgBoxBubble.setVisibility(View.VISIBLE);
mViewDriverMsgBoxBubble.isShowData(true);
}
});
}
@Override
@@ -188,8 +216,10 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().registerHostMapListener(TAG, this);
mCloseNavIcon.setOnClickListener(this);
mRefreshNavi.setOnClickListener(this);
mMapSwitchToBig.setOnClickListener(this);
mMessageBox.setOnClickListener(this);
mMapWeltView.getSwitchToBig().setOnClickListener((v) -> {
showOrHideOverMapViewFragment(true);
setWeltData();
});
}
/**
@@ -336,11 +366,6 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
showAmapNaviToStationFragment(false);
} else if (id == R.id.sweeper_refresh_navi) {
refreshNavi();
} else if (id == R.id.sweeper_switch_to_big) {
showOrHideOverMapViewFragment(true);
//setWeltData();
}else if(id==R.id.sweeper_message_box_iv){
}
}
@@ -398,24 +423,20 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
mMapWeltView.drawablePolyline();
});
}
if (mWeltMapOverViewFragment != null && mWeltMapOverViewFragment.isVisible()) {
mWeltMapOverViewFragment.setWeltData(weltDataBeans);
runOnUIThread(() -> {
mWeltMapOverViewFragment.drawablePolyline();
});
}
EventBus.getDefault().post(new WeltDataEvent(2, weltDataBeans, null));
}
/**
* 添加起点和终点
* 作业任务全览图的添加起点和终点
*/
public void addStartAndEndMarker(LatLng startPoint, LatLng endPoint) {
if (mMapWeltView != null) {
mMapWeltView.addStartAndEndMarker(startPoint, endPoint);
}
if (mWeltMapOverViewFragment != null && mWeltMapOverViewFragment.isVisible()) {
mWeltMapOverViewFragment.addStartAndEndMarker(startPoint, endPoint);
}
List<LatLng> latLngs = new ArrayList<>(2);
latLngs.add(0, startPoint);
latLngs.add(1, endPoint);
EventBus.getDefault().post(new WeltDataEvent(1, null, latLngs));
}
/**
@@ -425,9 +446,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
if (mMapWeltView != null) {
mMapWeltView.clearAllMarkerAndPolyline();
}
if (mWeltMapOverViewFragment != null) {
mWeltMapOverViewFragment.clearAllMarkerAndPolyline();
}
EventBus.getDefault().post(new WeltDataEvent(3, null, null));
}
private void runOnUIThread(Runnable executor) {
@@ -454,13 +473,14 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
weltDataBean.add(getWeltDataBean(116.40748849300006, 39.96752223478818, -10000.0));
weltDataBean.add(getWeltDataBean(116.42670283855335, 39.97526250389533, 1000.0));
setWeltDataToMap(weltDataBean);
addStartAndEndMarker(CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(),116.38851540542558,39.97419244219622),
CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(),116.42670283855335,39.97526250389533));
addStartAndEndMarker(CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(), 116.38851540542558,
39.97419244219622),
CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(), 116.42670283855335, 39.97526250389533));
}
private WeltDataBean getWeltDataBean(Double locLon, Double locLat, Double weltDistance) {
//把wgs坐标系坐标转换成gcj坐标
LatLng latLng= CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(),locLon,locLat);
LatLng latLng = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(), locLon, locLat);
WeltDataBean weltDataBean = new WeltDataBean();
weltDataBean.setLocLon(latLng.longitude);
weltDataBean.setLocLat(latLng.latitude);

View File

@@ -183,15 +183,34 @@
android:src="@drawable/ai_collect_selector" />
</FrameLayout>
<ImageView
android:id="@+id/sweeper_message_box_iv"
android:layout_width="@dimen/dp_169"
android:layout_height="@dimen/dp_169"
android:layout_marginEnd="@dimen/module_mogo_och_margin_right"
android:layout_marginBottom="@dimen/module_mogo_och_margin_bottom"
<!--消息盒子选择入口-->
<com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView
android:id="@+id/viewDriverMsgBoxButton"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginEnd="@dimen/dp_30"
android:layout_marginBottom="@dimen/dp_30"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<!--消息盒子打开视图-->
<com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView
android:id="@+id/viewDriverMsgBoxList"
android:layout_width="864dp"
android:layout_height="746dp"
android:layout_marginEnd="40dp"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/viewDriverMsgBoxButton"
app:layout_constraintEnd_toEndOf="parent" />
<!--消息盒子气泡视图-->
<com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView
android:id="@+id/viewDriverMsgBoxBubble"
android:layout_width="864dp"
android:layout_height="wrap_content"
android:layout_marginEnd="40dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
android:src="@drawable/sweeper_message_box"/>
app:layout_constraintTop_toBottomOf="@id/viewDriverMsgBoxButton" />
<!--清扫手动驾驶路线导航-->
<FrameLayout
android:id="@+id/module_mogo_och_navi_panel_container"