scrollView_->Add(labelstrong);
scrollView_->Add(labelcalories);
}
-// 增加额外配置
+// 增加额外配置:骑行仅显示距离一行;算法支持运动显示距离/步数/配速/步幅/步频
void TraingEnddataView::BonusdataView() {
- if (!TraingModel::GetInstance()->GetIsSpecial())
- return;
-
- std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
- int height_canvas = 0;
- if (canvasData.size() > 0) {
- height_canvas = 400;
- } else {
- height_canvas = 0;
- }
-
- //需要局部变量 不然会重复增加
+ TraingModel *model = TraingModel::GetInstance();
+ std::vector<Point> canvasData = model->GetCanvasData();
+ int height_canvas = (canvasData.size() > 0) ? CANVAS_SIZE : 0;
int baseY_Init_Bonusdata = baseY + height_canvas;
int startY_Unit_Init_Bonusdata = startY_Unit + height_canvas;
int startY_Value_Init_Bonusdata = startY_Value + height_canvas;
+ int tagflge = model->GetSportTag() ? 1 : 0;
+ const int row0 = 4 + tagflge;
+
+ // 骑行:只显示距离一行
+ if (model->GetSportEvent() == UIResourceTextId::STR_EXERCISE_OUTDOORBIKING) {
+ InitImageView(imageLine8, 97, baseY_Init_Bonusdata + row0 * lineHeight, 80, 20,
+ "image8", LINE_IMAGE);
+ scrollView_->Add(imageLine8);
+ InitRollLabel(labelumile, 146, startY_Unit_Init_Bonusdata + labelInterval * row0, 240, 40,
+ "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelmile, 146, startY_Value_Init_Bonusdata + row0 * labelInterval, 240, 60,
+ "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelumile->SetTextColor(textColor);
+ labelmile->SetTextColor(Color::Blue());
+ scrollView_->Add(labelumile);
+ scrollView_->Add(labelmile);
+ return;
+ }
- bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
- int tagflge = isincludeTag ? 1 : 0;
-
- // 初始化线条
-
- InitImageView(imageLine8, 97,
- baseY_Init_Bonusdata + (4 + tagflge) * lineHeight, 80, 20,
- "image8", LINE_IMAGE); // imageLine8
- InitImageView(imageLine9, 97,
- baseY_Init_Bonusdata + (5 + tagflge) * lineHeight, 80, 20,
- "image9", LINE_IMAGE); // imageLine9
- InitImageView(imageLine10, 97,
- baseY_Init_Bonusdata + (6 + tagflge) * lineHeight, 80, 20,
- "image10", LINE_IMAGE); // imageLine10
- InitImageView(imageLine11, 97,
- baseY_Init_Bonusdata + (7 + tagflge) * lineHeight, 80, 20,
+ if (!model->GetIsSpecial())
+ return;
+
+ // 算法支持运动:5 行线条
+ InitImageView(imageLine8, 97, baseY_Init_Bonusdata + row0 * lineHeight, 80, 20,
+ "image8", LINE_IMAGE);
+ InitImageView(imageLine9, 97, baseY_Init_Bonusdata + (5 + tagflge) * lineHeight, 80, 20,
+ "image9", LINE_IMAGE);
+ InitImageView(imageLine10, 97, baseY_Init_Bonusdata + (6 + tagflge) * lineHeight, 80, 20,
+ "image10", LINE_IMAGE);
+ InitImageView(imageLine11, 97, baseY_Init_Bonusdata + (7 + tagflge) * lineHeight, 80, 20,
"image11", LINE_IMAGE);
- InitImageView(imageLine12, 97,
- baseY_Init_Bonusdata + (8 + tagflge) * lineHeight, 80, 20,
+ InitImageView(imageLine12, 97, baseY_Init_Bonusdata + (8 + tagflge) * lineHeight, 80, 20,
"image7", LINE_IMAGE);
-
scrollView_->Add(imageLine8);
scrollView_->Add(imageLine9);
scrollView_->Add(imageLine10);
scrollView_->Add(imageLine11);
scrollView_->Add(imageLine12);
- // 初始化标签
// 距离
- InitRollLabel(labelumile, 146,
- startY_Unit_Init_Bonusdata + labelInterval * (4 + tagflge), 240,
- 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME,
- 30);
- InitLabel(labelmile, 146,
- startY_Value_Init_Bonusdata + (4 + tagflge) * labelInterval, 240,
- 60, "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ InitRollLabel(labelumile, 146, startY_Unit_Init_Bonusdata + labelInterval * row0, 240, 40,
+ "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelmile, 146, startY_Value_Init_Bonusdata + row0 * labelInterval, 240, 60,
+ "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
labelumile->SetTextColor(textColor);
labelmile->SetTextColor(Color::Blue());
// 步数
- InitRollLabel(labelusteps, 146,
- startY_Unit_Init_Bonusdata + labelInterval * (5 + tagflge), 240,
- 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME,
- 30);
- InitLabel(labelsteps, 146,
- startY_Value_Init_Bonusdata + (5 + tagflge) * labelInterval, 240,
- 60, "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ InitRollLabel(labelusteps, 146, startY_Unit_Init_Bonusdata + labelInterval * (5 + tagflge), 240, 40,
+ "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelsteps, 146, startY_Value_Init_Bonusdata + (5 + tagflge) * labelInterval, 240, 60,
+ "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
labelusteps->SetTextColor(textColor);
labelsteps->SetTextColor(Color::Green());
// 平均配速
- InitRollLabel(labeluavpace, 146,
- startY_Unit_Init_Bonusdata + labelInterval * (6 + tagflge), 240,
- 40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabel(labelavpace, 146,
- startY_Value_Init_Bonusdata + (6 + tagflge) * labelInterval, 240,
- 60, "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ InitRollLabel(labeluavpace, 146, startY_Unit_Init_Bonusdata + labelInterval * (6 + tagflge), 240, 40,
+ "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelavpace, 146, startY_Value_Init_Bonusdata + (6 + tagflge) * labelInterval, 240, 60,
+ "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
labeluavpace->SetTextColor(textColor);
labelavpace->SetTextColor(Color::Green());
// 步幅
- InitRollLabel(labelustride, 146,
- startY_Unit_Init_Bonusdata + labelInterval * (7 + tagflge), 240,
- 40, "label2", STR_STEP_LENGTH, DEFAULT_VECTOR_FONT_FILENAME,
- 30);
- InitLabel(labelstride, 146,
- startY_Value_Init_Bonusdata + (7 + tagflge) * labelInterval, 240,
- 60, "label17", "77", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ InitRollLabel(labelustride, 146, startY_Unit_Init_Bonusdata + labelInterval * (7 + tagflge), 240, 40,
+ "label2", STR_STEP_LENGTH, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelstride, 146, startY_Value_Init_Bonusdata + (7 + tagflge) * labelInterval, 240, 60,
+ "label17", "77", DEFAULT_VECTOR_FONT_FILENAME, 40);
labelustride->SetTextColor(textColor);
labelstride->SetTextColor(Color::Green());
// 步频
- InitRollLabel(labelufreq, 146,
- startY_Unit_Init_Bonusdata + labelInterval * (8 + tagflge), 240,
- 40, "label2", STR_STEP_FREQUENCY, DEFAULT_VECTOR_FONT_FILENAME,
- 30);
- InitLabel(labelfreq, 146,
- startY_Value_Init_Bonusdata + (8 + tagflge) * labelInterval, 240,
- 60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ InitRollLabel(labelufreq, 146, startY_Unit_Init_Bonusdata + labelInterval * (8 + tagflge), 240, 40,
+ "label2", STR_STEP_FREQUENCY, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelfreq, 146, startY_Value_Init_Bonusdata + (8 + tagflge) * labelInterval, 240, 60,
+ "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
labelufreq->SetTextColor(textColor);
labelfreq->SetTextColor(Color::Green());
scrollView_->Add(labelufreq);
scrollView_->Add(labelfreq);
}
-// 配置退出相关位置
+// 配置退出相关位置:根据前方 Bonus 行数决定 Y,避免与「距离」「更多前往app」重叠
void TraingEnddataView::ExitView() {
-
- std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
- int height_canvas = 0;
- if (canvasData.size() > 0) {
- height_canvas = CANVAS_SIZE;
- } else {
- height_canvas = 0;
- }
+ TraingModel *model = TraingModel::GetInstance();
+ std::vector<Point> canvasData = model->GetCanvasData();
+ int height_canvas = (canvasData.size() > 0) ? CANVAS_SIZE : 0;
int startY_Value_Init_Exit = startY_Value + height_canvas;
+ int tagflge = model->GetSportTag() ? 1 : 0;
- bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
- int tagflge = isincludeTag ? 1 : 0;
-
- if (TraingModel::GetInstance()->GetIsSpecial()) {
- // 初始化退出(最后 要根据前方配置设置位置)
- // 是否为特殊运动
- // 是否包含目标
- InitRollLabel(
- exitLabel, 80,
- (startY_Value_Init_Exit + labelInterval * (8 + tagflge) + 100), 300, 40,
- "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitButtonExt(
- exitButton, 42,
- (startY_Value_Init_Exit + labelInterval * (8 + tagflge) + 160), 380,
- 100, BUTTONBACK, STR_CLOSE, 30);
+ int exitRow; // 退出区域起始行,必须在前方最后一行之下
+ if (model->GetIsSpecial()) {
+ exitRow = 8 + tagflge; // 特殊运动:时长/心率/强度/卡路里/目标 + 距离/步数/配速/步幅/步频 共 8 行
+ } else if (model->GetSportEvent() == UIResourceTextId::STR_EXERCISE_OUTDOORBIKING) {
+ exitRow = 4 + tagflge; // 骑行:上方多一行「距离」,排在 (4+tagflge) 行之后
} else {
- InitRollLabel(
- exitLabel, 80,
- (startY_Value_Init_Exit + labelInterval * (3 + tagflge) + 100), 300, 40,
- "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitButtonExt(
- exitButton, 42,
- (startY_Value_Init_Exit + labelInterval * (3 + tagflge) + 160), 380,
- 100, BUTTONBACK, STR_CLOSE, 30);
+ exitRow = 3 + tagflge; // 普通:仅时长/心率/强度/卡路里(+ 目标)
}
+
+ int yLabel = startY_Value_Init_Exit + labelInterval * exitRow + 100;
+ int yButton = startY_Value_Init_Exit + labelInterval * exitRow + 160;
+ InitRollLabel(exitLabel, 80, yLabel, 300, 40,
+ "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitButtonExt(exitButton, 42, yButton, 380, 100, BUTTONBACK, STR_CLOSE, 30);
exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
scrollView_->Add(exitLabel);
exitButton->SetOnClickListener(presenter_);
-\r
-#ifndef _TraingCard_PRESENTER_H\r
-#define _TraingCard_PRESENTER_H\r
-\r
-#include "ModelListenerSample.h"\r
-#include "Presenter.h"\r
-#include "TraingCardView.h"\r
-#include "traing/training_card/include/TrainingControlView.h"\r
-#include "traing/training_card/include/TrainingDataView.h"\r
-#include "traing/training_card/include/TrainingDetailView.h"\r
-\r
-#ifdef SUPPORT_BLE_SERVICE\r
-#include "bleInstruct.h"\r
-#include "bleService.h"\r
-#include <bleEvent.h>\r
-\r
-#endif\r
-\r
-#include "components/root_view.h"\r
-#include "components/ui_swipe_view.h"\r
-#include "components/ui_view.h"\r
-\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
-#include "cywee_hal.h"\r
-#include "cywee_service.h"\r
-#endif\r
-\r
-#include "traing/include/TraingModel.h"\r
-#include "uicomponents/UIComponents.h"\r
-\r
-namespace OHOS {\r
-class TraingCardView;\r
-class TrainingControlView;\r
-class TrainingDataView;\r
-class TrainingDetailView;\r
-class TraingModel;\r
-class TraingCardPresenter : public Presenter<TraingCardView>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener,\r
- public UISwipeView::OnSwipeListener,\r
- public RootView::OnKeyActListener,\r
- public ModelListenerSample {\r
-public:\r
- TraingCardPresenter();\r
- virtual ~TraingCardPresenter() override;\r
- static TraingCardPresenter *GetInstance(void);\r
-\r
- void OnStart() override;\r
- void OnPause() override;\r
- void OnResume() override;\r
- void OnStop() override;\r
- void OnTickEvent() override{};\r
- void Notify() override {}\r
-\r
- bool OpenSensor(ExerciseClass type);\r
- bool ControlSensor(ExerciseState state);\r
-\r
- void ModifiesTime();\r
- void RefreshData(SportData *sportdata); // 更新数据\r
-\r
- void UpdateTimeOfControl();\r
- void UpdateTimeOfData();\r
- void UpdateDataView();\r
- void updataview();\r
- /*蓝牙开启运动*/\r
-#ifdef SUPPORT_BLE_SERVICE\r
- bool send_sport_cmd(training_ble *cmd);\r
-#endif\r
-\r
- /*控制*/\r
- void handleStartState();\r
- void handleEndState();\r
- void handlePauseState();\r
- void handleContinueState();\r
-\r
-private:\r
- // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDragStart(UIView &view, const DragEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- bool OnDragEnd(UIView &view, const DragEvent &event) override;\r
- void OnSwipe(UISwipeView &view) override;\r
- bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
-\r
- int tag_ = 0;\r
- bool opensensorstuats{false};\r
- bool Y_DRAG_FLAG{false}; // 标记是否为垂直滑动,用于阻止水平滑动\r
-};\r
-} // namespace OHOS\r
-\r
+
+#ifndef _TraingCard_PRESENTER_H
+#define _TraingCard_PRESENTER_H
+
+#include "ModelListenerSample.h"
+#include "Presenter.h"
+#include "TraingCardView.h"
+#include "traing/training_card/include/TrainingControlView.h"
+#include "traing/training_card/include/TrainingDataView.h"
+#include "traing/training_card/include/TrainingDetailView.h"
+
+#ifdef SUPPORT_BLE_SERVICE
+#include "bleInstruct.h"
+#include "bleService.h"
+#include <bleEvent.h>
+
+#endif
+
+#include "components/root_view.h"
+#include "components/ui_swipe_view.h"
+#include "components/ui_view.h"
+
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_hal.h"
+#include "cywee_service.h"
+#endif
+
+#include "traing/include/TraingModel.h"
+#include "uicomponents/UIComponents.h"
+
+namespace OHOS {
+class TraingCardView;
+class TrainingControlView;
+class TrainingDataView;
+class TrainingDetailView;
+class TraingModel;
+class TraingCardPresenter : public Presenter<TraingCardView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener,
+ public UISwipeView::OnSwipeListener,
+ public RootView::OnKeyActListener,
+ public ModelListenerSample {
+public:
+ TraingCardPresenter();
+ virtual ~TraingCardPresenter() override;
+ static TraingCardPresenter *GetInstance(void);
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+ void OnTickEvent() override{};
+ void Notify() override {}
+
+ bool OpenSensor(ExerciseClass type);
+ bool ControlSensor(ExerciseState state);
+
+ void ModifiesTime();
+ void RefreshData(SportData *sportdata); // 更新数据
+
+ void UpdateTimeOfControl();
+ void UpdateTimeOfData();
+ void UpdateDataView();
+ void updataview();
+ /*蓝牙开启运动*/
+#ifdef SUPPORT_BLE_SERVICE
+ bool send_sport_cmd(training_ble *cmd);
+#endif
+
+ /*控制*/
+ void handleStartState();
+ void handleEndState();
+ void handlePauseState();
+ void handleContinueState();
+
+private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDragStart(UIView &view, const DragEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ bool OnDragEnd(UIView &view, const DragEvent &event) override;
+ void OnSwipe(UISwipeView &view) override;
+ bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
+
+ int tag_ = 0;
+ bool opensensorstuats{false};
+ bool Y_DRAG_FLAG{false}; // 标记是否为垂直滑动,用于阻止水平滑动
+};
+} // namespace OHOS
+
#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file