[清扫车]UI相关展示问题修改

This commit is contained in:
bxb
2023-03-08 18:53:09 +08:00
parent 105b7e6ede
commit 00721c0e77
13 changed files with 61 additions and 47 deletions

View File

@@ -14,7 +14,7 @@ interface ISweeperTaskCallback {
/**
* 获取主任务列表
*/
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?)
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?,refresh:Boolean)
/**
* 获取子任务列表

View File

@@ -11,6 +11,7 @@ import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
import com.mogo.och.sweeper.R
import com.mogo.och.sweeper.bean.SubInfo
@@ -168,11 +169,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
}
//列表任务刷新
ivTaskListRefresh.setOnClickListener {
mPresenter?.getMainTaskList()
mPresenter?.getMainTaskList(true)
}
//无任务时刷新
ivNoTaskRefresh.setOnClickListener {
mPresenter?.getMainTaskList()
mPresenter?.getMainTaskList(true)
}
}
@@ -210,7 +211,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
/**
* 设置当前主任务列表数据
*/
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?) {
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?,refresh: Boolean) {
setShowCurrentTaskPanelView(false)
setShowTaskListPanelView(true)
sweeper_cl_work_mode.visibility = View.GONE
@@ -222,6 +223,9 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
noTaskDataView.visibility = View.VISIBLE
sweeperListCl.visibility = View.GONE
}
if (refresh){
ToastUtils.showLong("已刷新")
}
}
/**
@@ -259,7 +263,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
fun updateSubTaskStatus(typeEnum: TaskStatusEnum, isLastSubTask: Boolean) {
if (isLastSubTask) {
showAmapNaviToStationFragment(false)
mPresenter?.getMainTaskList()
mPresenter?.getMainTaskList(false)
clearAllMarkerAndPolyline()
//整个大任务结束,则删除它相关的贴边数据缓存
lifecycleScope.launch(Dispatchers.IO) {
@@ -327,7 +331,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
fun setMainTaskReset(isSuccess: Boolean) {
if (isSuccess) {
//任务重置后,重新拉取任务列表数据
mPresenter?.getMainTaskList()
mPresenter?.getMainTaskList(false)
//清除任务全览图的marker和路线
clearAllMarkerAndPolyline()
showOrHideOverMapViewFragment(false)
@@ -348,7 +352,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
mSubTaskType = if (it[mCurrentSubPosition].taskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE.code)
SubTaskTypeEnum.AUTOPILOT_SUBTYPE else SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE
//设置当前子任务信息
presenter?.setSubtask(isFirstSubTask(), isLastSubTask(), it[mCurrentSubPosition].taskId)
presenter?.setSubtask(isFirstSubTask(), isLastSubTask(), it[mCurrentSubPosition].taskId,it[mCurrentSubPosition].taskType)
}
/**
* 计算任务的进度
@@ -408,7 +412,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
mSubInfo?.apply {
val builder = SweeperManualDrivingDialog.Builder()
val endConfirmDialog = builder
.tips("前方子任务${taskName}手动驾驶至${endSiteName}")
.tips("前方子任务${taskName}请人工驾驶至(${endSiteName})")
.confirmStr("确认")
.build(requireContext())
endConfirmDialog?.setClickListener(object : SweeperManualDrivingDialog.ClickListener {

View File

@@ -96,6 +96,8 @@ public class SweeperTaskModel {
private boolean mIsLastSubtask = false;
//当前任务是否是第一个
private boolean mIsFirstSubtask = false;
//当前任务是否是第一个
private int mSubTaskType=0; //1自动驾驶 2.人工驾驶
//0: 代表没有启动过 1代表是启动第一次当>=1 代表是重试 每次子任务结束/主任务结束清空置为0
private volatile int firstStartAutopilot = 0;
//自动驾驶状态
@@ -195,10 +197,11 @@ public class SweeperTaskModel {
};
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId) {
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId,int subTaskType) {
this.mIsLastSubtask = isLastSubtask;
this.mIsFirstSubtask = isFirstSubtask;
this.mSubTaskId = subTaskId;
this.mSubTaskType=subTaskType;
}
/**
@@ -287,6 +290,9 @@ public class SweeperTaskModel {
if (mControllerStatusCallback != null) {
mControllerStatusCallback.onCarLocationChanged(gnssInfo);
}
if (mSubTaskType==2){//人工驾驶子任务需要手动跳过,不能自动结束
return;
}
//子任务完成的围栏判断 子任务正在执行中,还未到达子任务终点
if (mIsSubTaskWorking&&!isArriveSubTaskEndSite) {
judgeArrivedStation(gnssInfo);
@@ -306,7 +312,9 @@ public class SweeperTaskModel {
+ " to " + mCurrentSubTaskDetail.getEndSiteName());
Log.d(TAG, "行程日志-judgeArrivedStation() distance = " + distance
+ " to " + mCurrentSubTaskDetail.getEndSiteName());
onArriveTaskEnd(null); //无自动驾驶到终点信息传null
isArriveSubTaskEndSite=true;
//到达子任务终点 结束子任务
subTaskEnd(mIsFirstSubtask, mIsLastSubtask, mSubTaskId); //无自动驾驶到终点信息传null
return;
}
}
@@ -388,7 +396,7 @@ public class SweeperTaskModel {
Log.d(M_SWEEPER + TAG, "MAP到站通知"+mCurrentSubTaskDetail.getEndSiteName()+"经度:"
+data.getEndLocation().getLongitude()+"纬度:"+data.getEndLocation().getLongitude());
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "MAP到站通知"+mCurrentSubTaskDetail.getEndSiteName()+"经度:"
+data.getEndLocation().getLongitude()+"纬度:"+data.getEndLocation().getLongitude());
+data.getEndLocation().getLongitude()+"纬度:"+data.getEndLocation().getLatitude());
String latitude = NumberFormatUtil.cutOutNumber(data.getEndLocation().getLatitude(), 5); //wgs
String longitude = NumberFormatUtil.cutOutNumber(data.getEndLocation().getLongitude(), 5);
String arriveLat = NumberFormatUtil.cutOutNumber(mCurrentSubTaskDetail.getEndSiteWgs64Lat(), 5);
@@ -398,6 +406,9 @@ public class SweeperTaskModel {
return;
}
}
if (mSubTaskType==2){//人工驾驶子任务需要手动跳过,不能自动结束
return;
}
if (isArriveSubTaskEndSite) return;
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "行程日志-当前==subTaskId="
+ mSubTaskId);
@@ -482,7 +493,7 @@ public class SweeperTaskModel {
if (sweeperSubTaskBean != null && sweeperSubTaskBean.getSubList() != null && sweeperSubTaskBean.getSubList().size() > 0) {
mSweeperTaskCallback.setSubTaskBean(sweeperSubTaskBean, true);
} else {
getMainTaskList();
getMainTaskList(false);
}
}
}
@@ -512,14 +523,14 @@ public class SweeperTaskModel {
/**
* 获取主任务列表
*/
public void getMainTaskList() {
public void getMainTaskList(boolean refresh) {
SweeperServiceManager.getMainTaskList(mContext, new OchCommonServiceCallback<BaseResponse<List<SweeperMainTaskBean>>>() {
@Override
public void onSuccess(BaseResponse<List<SweeperMainTaskBean>> data) {
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "getMainTaskList" + GsonUtil.jsonFromObject(data));
if (mSweeperTaskCallback != null && data != null && data.getCode() == 0) {
List<SweeperMainTaskBean> list = data.getData();
mSweeperTaskCallback.setMainTaskList(list);
mSweeperTaskCallback.setMainTaskList(list,refresh);
}
}
@@ -559,7 +570,7 @@ public class SweeperTaskModel {
sweeperSubTaskBean.setSubList(list);
mSweeperTaskCallback.setSubTaskBean(sweeperSubTaskBean, false);
} else {
getMainTaskList();
getMainTaskList(false);
}
}
}

View File

@@ -121,7 +121,6 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
if (autopilotStatusInfo == null) return;
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotStatusResponse state:" + autopilotStatusInfo.getState());
SweeperTaskModel.getInstance().setAutopilotState(autopilotStatusInfo.getState());
ThreadUtils.runOnUiThread(() -> mView.startAutoBtn(autopilotStatusInfo.getState()));
switch (autopilotStatusInfo.getState()) {
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶
@@ -190,9 +189,9 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
/**
* 设置当前子任务信息
*/
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId) {
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId,int subTaskType) {
this.mSubTaskId = subTaskId;
SweeperTaskModel.getInstance().setSubtask(isFirstSubtask, isLastSubtask, subTaskId);
SweeperTaskModel.getInstance().setSubtask(isFirstSubtask, isLastSubtask, subTaskId,subTaskType);
}
public void setWorking(boolean isWorking){
SweeperTaskModel.getInstance().setWorking(isWorking);
@@ -364,8 +363,8 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
/**
* 获取主任务列表
*/
public void getMainTaskList() {
SweeperTaskModel.getInstance().getMainTaskList();
public void getMainTaskList(boolean refresh) {
SweeperTaskModel.getInstance().getMainTaskList(refresh);
}
/**
@@ -415,8 +414,8 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
}
@Override
public void setMainTaskList(List<SweeperMainTaskBean> mainTaskBeanList) {
mView.setMainTaskList(mainTaskBeanList);
public void setMainTaskList(List<SweeperMainTaskBean> mainTaskBeanList,boolean refresh) {
mView.setMainTaskList(mainTaskBeanList,refresh);
}
@Override

View File

@@ -1,6 +1,7 @@
package com.mogo.och.sweeper.view
import android.content.Context
import android.graphics.Color
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
@@ -104,17 +105,20 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
* 设置准备就绪按钮时都可以点击
*/
fun setEnableClickBtn(isWorking: Boolean) {
readyTaskBtn.isSelected = isWorking
readyTaskBtn.isClickable=!isWorking
presenter?.setWorking(isWorking)
if (isWorking) {
tvTaskState.text = "正在作业"
readyTaskBtn.text="任务中"
readyTaskBtn.setTextColor(Color.parseColor("#FFFFFFFF"))
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_working)
readyTaskBtn.setBackgroundResource(R.drawable.sweeper_task_working)
} else {
tvTaskState.text = "暂未准备"
readyTaskBtn.text="开始任务"
readyTaskBtn.setTextColor(Color.parseColor("#66FFFFFF"))
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_not_ready)
readyTaskBtn.setBackgroundResource(R.drawable.sweeper_task_not_working)
}
}
@@ -125,19 +129,23 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
when (autopilotState) {
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {
tvStartAuto.text="自动驾驶"
tvStartAuto.isSelected=false
tvStartAuto.setTextColor(Color.parseColor("#66FFFFFF"))
tvStartAuto.setBackgroundResource(R.drawable.sweeper_start_auto_not_running)
}
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {
tvStartAuto.text="自动驾驶"
tvStartAuto.isSelected=false
tvStartAuto.setTextColor(Color.parseColor("#66FFFFFF"))
tvStartAuto.setBackgroundResource(R.drawable.sweeper_start_auto_not_running)
}
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
tvStartAuto.text="自动驾驶"
tvStartAuto.isSelected=true
tvStartAuto.setTextColor(Color.parseColor("#FFFFFFFF"))
tvStartAuto.setBackgroundResource(R.drawable.sweeper_start_auto_running)
}
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {
tvStartAuto.text="平行驾驶"
tvStartAuto.isSelected=true
tvStartAuto.setTextColor(Color.parseColor("#FFFFFFFF"))
tvStartAuto.setBackgroundResource(R.drawable.sweeper_start_auto_running)
}
}
}

View File

@@ -23,6 +23,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.sweeper.R
import planning.RoboSweeperTaskIndexOuterClass
import kotlin.math.roundToInt
/**
* 车辆基本信息:方向盘下方的档位 转向灯 限速 速度 电量 水量
@@ -126,7 +127,7 @@ class SweeperTrafficDataView : ConstraintLayout,
mCurrentTimeBatteryMillis = current
d(SceneConstant.M_SWEEPER + TAG, "电量:${states.bmsSoc}")
UiThreadHandler.post{
tvBattery?.text = "${states.bmsSoc}%"
tvBattery?.text = "${states.bmsSoc.roundToInt()}%"
}
}
/**

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/sweeper_start_auto_running"/>
<item android:state_selected="false" android:drawable="@drawable/sweeper_start_auto_not_running"/>
</selector>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/sweeper_task_working"/>
<item android:state_selected="false" android:drawable="@drawable/sweeper_task_not_working"/>
</selector>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#254e7d"/>
<solid android:color="#4D2F6EFF"/>
<corners
android:bottomRightRadius="30dp" android:bottomLeftRadius="@dimen/dp_30"/>
</shape>

View File

@@ -120,7 +120,7 @@
android:id="@+id/tvStartAuto"
android:layout_width="0dp"
android:layout_height="@dimen/dp_116"
android:background="@drawable/sweeper_start_auto_btn"
android:background="@drawable/sweeper_start_auto_not_running"
android:gravity="center"
android:text="启动自驾"
android:textColor="@android:color/white"
@@ -136,7 +136,7 @@
android:layout_width="0dp"
android:layout_height="@dimen/dp_116"
android:layout_weight="1"
android:background="@drawable/sweeper_task_btn"
android:background="@drawable/sweeper_task_not_working"
android:gravity="center"
android:text="开始任务"
android:textColor="@android:color/white"

View File

@@ -58,7 +58,7 @@
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#4D89C5EC"
android:background="#3389C5EC"
app:layout_constraintTop_toBottomOf="@+id/tvTaskDesc"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View File

@@ -40,7 +40,7 @@
app:layout_constraintStart_toEndOf="@+id/ivTriangle"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="@dimen/dp_20"
android:background="#A6CEFF"
android:background="#4DA6CEFF"
app:layout_constraintTop_toBottomOf="@+id/tvJumpOverTask"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"/>
@@ -62,7 +62,7 @@
app:layout_constraintStart_toEndOf="@+id/ivTriangle"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="@dimen/dp_20"
android:background="#A6CEFF"
android:background="#4DA6CEFF"
app:layout_constraintTop_toBottomOf="@+id/tvEndTask"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"/>

View File

@@ -128,14 +128,15 @@
<FrameLayout
android:id="@+id/flRight"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="0dp"
app:layout_constraintWidth_percent="0.5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="@dimen/dp_36"
android:layout_marginBottom="@dimen/dp_14"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginEnd="@dimen/dp_36"
app:layout_constraintTop_toBottomOf="@+id/sweeperTurnSignal"
>
<ImageView
android:id="@+id/sweeperIvBgWaterWarning"
@@ -152,7 +153,7 @@
android:layout_height="@dimen/dp_30"
android:src="@drawable/sweeper_water_selector"
android:layout_gravity="center"
android:layout_marginBottom="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_2"
/>
</FrameLayout>
<View