[清扫车] fix: 修复因为没在主线程操作View导致的按钮样式问题;

This commit is contained in:
aibingbing
2022-09-20 19:24:18 +08:00
parent f599093627
commit 8e2a356fbd

View File

@@ -195,19 +195,21 @@ public class SweeperOperatePanelView extends LinearLayout {
@Override
public void onCmdSuccess() {
if (isCloseAction) {
mBtnCleanWorkOpenClose.setText("Open");
mBtnCleanWorkOpenClose.setChecked(false);
toggleCleanModeBtnsStatus(false);
toggleCleanDirectionBtnsStatus(false);
toggleCleanIntensityBtnsStatus(false);
} else {
mBtnCleanWorkOpenClose.setText("Close");
mBtnCleanWorkOpenClose.setChecked(true);
toggleCleanModeBtnsStatus(true);
}
hideLoadingMask();
showCmdExecuteSuccessToast();
runOnUIThread(() -> {
if (isCloseAction) {
mBtnCleanWorkOpenClose.setText("Open");
mBtnCleanWorkOpenClose.setChecked(false);
toggleCleanModeBtnsStatus(false);
toggleCleanDirectionBtnsStatus(false);
toggleCleanIntensityBtnsStatus(false);
} else {
mBtnCleanWorkOpenClose.setText("Close");
mBtnCleanWorkOpenClose.setChecked(true);
toggleCleanModeBtnsStatus(true);
}
hideLoadingMask();
showCmdExecuteSuccessToast();
});
}
@Override
@@ -217,15 +219,17 @@ public class SweeperOperatePanelView extends LinearLayout {
@Override
public void onCmdTimeout() {
//按钮样式恢复原样
if (isCloseAction) {
mBtnCleanWorkOpenClose.setText("Close");
mBtnCleanWorkOpenClose.setChecked(true);
} else {
mBtnCleanWorkOpenClose.setText("Open");
mBtnCleanWorkOpenClose.setChecked(false);
}
hideLoadingMask();
showCmdExecuteTimeoutToast();
runOnUIThread(() -> {
if (isCloseAction) {
mBtnCleanWorkOpenClose.setText("Close");
mBtnCleanWorkOpenClose.setChecked(true);
} else {
mBtnCleanWorkOpenClose.setText("Open");
mBtnCleanWorkOpenClose.setChecked(false);
}
hideLoadingMask();
showCmdExecuteTimeoutToast();
});
}
};
if (isCloseAction) {
@@ -320,23 +324,25 @@ public class SweeperOperatePanelView extends LinearLayout {
@Override
public void onCmdSuccess() {
((CheckedTextView) currentClickView).setChecked(!isClickCurrentChoosedModeBtn);
toggleCleanModeBtnsByChoosedViewId(currentClickView.getId(), isClickCurrentChoosedModeBtn);
if (isClickCurrentChoosedModeBtn) {
toggleCleanDirectionBtnsStatus(false);
toggleCleanIntensityBtnsStatus(false);
} else {
// 如果是纯吸,没有设置清扫方向,同时自动设置作业强度为标准
if (isPureAbsorptionClick) {
runOnUIThread(() -> {
((CheckedTextView) currentClickView).setChecked(!isClickCurrentChoosedModeBtn);
toggleCleanModeBtnsByChoosedViewId(currentClickView.getId(), isClickCurrentChoosedModeBtn);
if (isClickCurrentChoosedModeBtn) {
toggleCleanDirectionBtnsStatus(false);
setCleanIntensityStandard();
} else {
toggleCleanDirectionBtnsStatus(true);
toggleCleanIntensityBtnsStatus(false);
} else {
// 如果是纯吸,没有设置清扫方向,同时自动设置作业强度为标准
if (isPureAbsorptionClick) {
toggleCleanDirectionBtnsStatus(false);
setCleanIntensityStandard();
} else {
toggleCleanDirectionBtnsStatus(true);
toggleCleanIntensityBtnsStatus(false);
}
}
}
hideLoadingMask();
showCmdExecuteSuccessToast();
hideLoadingMask();
showCmdExecuteSuccessToast();
});
}
@Override
@@ -345,9 +351,11 @@ public class SweeperOperatePanelView extends LinearLayout {
@Override
public void onCmdTimeout() {
((CheckedTextView) currentClickView).setChecked(isClickCurrentChoosedModeBtn);
hideLoadingMask();
showCmdExecuteTimeoutToast();
runOnUIThread(() -> {
((CheckedTextView) currentClickView).setChecked(isClickCurrentChoosedModeBtn);
hideLoadingMask();
showCmdExecuteTimeoutToast();
});
}
};
@@ -427,17 +435,19 @@ public class SweeperOperatePanelView extends LinearLayout {
@Override
public void onCmdSuccess() {
((CheckedTextView) currentClickView).setChecked(!isClickCurrentChoosedDirectionBtn);
toggleCleanDirectionBtnsByChoosedViewId(currentClickView.getId(), isClickCurrentChoosedDirectionBtn);
if (isClickCurrentChoosedDirectionBtn) {
toggleCleanIntensityBtnsStatus(false);
} else {
toggleCleanIntensityBtnsStatus(true);
// 一并设置作业强度为标准
setCleanIntensityStandard();
}
hideLoadingMask();
showCmdExecuteSuccessToast();
runOnUIThread(() -> {
((CheckedTextView) currentClickView).setChecked(!isClickCurrentChoosedDirectionBtn);
toggleCleanDirectionBtnsByChoosedViewId(currentClickView.getId(), isClickCurrentChoosedDirectionBtn);
if (isClickCurrentChoosedDirectionBtn) {
toggleCleanIntensityBtnsStatus(false);
} else {
toggleCleanIntensityBtnsStatus(true);
// 一并设置作业强度为标准
setCleanIntensityStandard();
}
hideLoadingMask();
showCmdExecuteSuccessToast();
});
}
@Override
@@ -446,9 +456,11 @@ public class SweeperOperatePanelView extends LinearLayout {
@Override
public void onCmdTimeout() {
((CheckedTextView) currentClickView).setChecked(isClickCurrentChoosedDirectionBtn);
hideLoadingMask();
showCmdExecuteTimeoutToast();
runOnUIThread(() -> {
((CheckedTextView) currentClickView).setChecked(isClickCurrentChoosedDirectionBtn);
hideLoadingMask();
showCmdExecuteTimeoutToast();
});
}
};
if (isClickCurrentChoosedDirectionBtn) {
@@ -500,14 +512,16 @@ public class SweeperOperatePanelView extends LinearLayout {
@Override
public void onCmdSuccess() {
((CheckedTextView) currentClickView).setChecked(true);
if (isStandardBtnClick) {
setCleanIntensityStandard();
} else {
setCleanIntensityStrong();
}
hideLoadingMask();
showCmdExecuteSuccessToast();
runOnUIThread(() -> {
((CheckedTextView) currentClickView).setChecked(true);
if (isStandardBtnClick) {
setCleanIntensityStandard();
} else {
setCleanIntensityStrong();
}
hideLoadingMask();
showCmdExecuteSuccessToast();
});
}
@Override
@@ -516,9 +530,11 @@ public class SweeperOperatePanelView extends LinearLayout {
@Override
public void onCmdTimeout() {
((CheckedTextView) currentClickView).setChecked(false);
hideLoadingMask();
showCmdExecuteTimeoutToast();
runOnUIThread(() -> {
((CheckedTextView) currentClickView).setChecked(false);
hideLoadingMask();
showCmdExecuteTimeoutToast();
});
}
};
int cmdValue = cleanIntensityBtnAndCmdValueMap.get(currentClickView.getId());
@@ -534,13 +550,11 @@ public class SweeperOperatePanelView extends LinearLayout {
* @param enable
*/
private void toggleCleanModeBtnsStatus(boolean enable) {
runOnUIThread(() -> {
for (Integer viewId : cleanModeBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
view.setEnabled(enable);
view.setChecked(false);
}
});
for (Integer viewId : cleanModeBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
view.setEnabled(enable);
view.setChecked(false);
}
}
/**
@@ -550,15 +564,13 @@ public class SweeperOperatePanelView extends LinearLayout {
* @param enable
*/
private void toggleCleanModeBtnsByChoosedViewId(int choosedBtnId, boolean enable) {
runOnUIThread(() -> {
for (Integer viewId : cleanModeBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
if (view.getId() != choosedBtnId) {
view.setEnabled(enable);
view.setChecked(false);
}
for (Integer viewId : cleanModeBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
if (view.getId() != choosedBtnId) {
view.setEnabled(enable);
view.setChecked(false);
}
});
}
}
/**
@@ -567,13 +579,11 @@ public class SweeperOperatePanelView extends LinearLayout {
* @param enable
*/
private void toggleCleanDirectionBtnsStatus(boolean enable) {
runOnUIThread(() -> {
for (Integer viewId : cleanDirectionBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
view.setEnabled(enable);
view.setChecked(false);
}
});
for (Integer viewId : cleanDirectionBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
view.setEnabled(enable);
view.setChecked(false);
}
}
/**
@@ -583,15 +593,13 @@ public class SweeperOperatePanelView extends LinearLayout {
* @param enable
*/
private void toggleCleanDirectionBtnsByChoosedViewId(int choosedBtnId, boolean enable) {
runOnUIThread(() -> {
for (Integer viewId : cleanDirectionBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
if (view.getId() != choosedBtnId) {
view.setEnabled(enable);
view.setChecked(false);
}
for (Integer viewId : cleanDirectionBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
if (view.getId() != choosedBtnId) {
view.setEnabled(enable);
view.setChecked(false);
}
});
}
}
/**
@@ -600,13 +608,11 @@ public class SweeperOperatePanelView extends LinearLayout {
* @param enable
*/
private void toggleCleanIntensityBtnsStatus(boolean enable) {
runOnUIThread(() -> {
for (Integer viewId : cleanIntensityBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
view.setEnabled(enable);
view.setChecked(false);
}
});
for (Integer viewId : cleanIntensityBtnViewIds) {
CheckedTextView view = (CheckedTextView) findViewById(viewId);
view.setEnabled(enable);
view.setChecked(false);
}
}
/**