From 82482cf363432da6118f35115218b2d89e8771bc Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Mon, 15 Jun 2026 15:09:45 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E7=BB=93?= =?utf8?q?=E6=9E=9C=E4=B8=A4=E4=BD=8D=E6=95=B0=E4=B8=8E=E4=B8=89=E4=BD=8D?= =?utf8?q?=E6=95=B0=E7=BB=84=E4=BB=B6=E4=BD=8D=E7=BD=AE=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/ecg/src/ECGHistoryView.cpp | 39 ++++++++++++++++--- .../nativeui/ecg/src/ECGMeasureResultView.cpp | 37 +++++++++++++----- 2 files changed, 60 insertions(+), 16 deletions(-) diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/ecg/src/ECGHistoryView.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/ecg/src/ECGHistoryView.cpp index 2f09d0673..0c176707f 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/ecg/src/ECGHistoryView.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/ecg/src/ECGHistoryView.cpp @@ -12,6 +12,31 @@ static constexpr int16_t ECG_HISTORY_CARD_MARGIN = 40; static constexpr int16_t ECG_HISTORY_CARD_W = 380; static constexpr int16_t ECG_HISTORY_MAX_ITEMS = 10; static constexpr uint32_t ECG_CARD_BG_COLOR = 0xff1a1a1a; + +static constexpr int16_t ECG_RECENT_HEART_X = 129; +static constexpr int16_t ECG_RECENT_HEART_W = 54; +static constexpr int16_t ECG_RECENT_BPM_X = ECG_RECENT_HEART_X + ECG_RECENT_HEART_W + 8; +static constexpr int16_t ECG_RECENT_BPM_Y = 182 + 35 + 12; +static constexpr int16_t ECG_RECENT_BPM_W_TWO_DIGIT = 74; +static constexpr int16_t ECG_RECENT_BPM_W_THREE_DIGIT = 120; +static constexpr int16_t ECG_RECENT_BPM_H = 66; +static constexpr int16_t ECG_RECENT_BPM_UNIT_GAP = 8; +static constexpr int16_t ECG_RECENT_BPM_UNIT_Y = 258; + +static int16_t GetRecentBpmLabelWidth(uint8_t bpm) { + return (bpm >= 100) ? ECG_RECENT_BPM_W_THREE_DIGIT : ECG_RECENT_BPM_W_TWO_DIGIT; +} + +static void UpdateRecentBpmLabelLayout(UILabel *recentBpm, UILabel *recentBpmUnit, uint8_t bpm) { + if (recentBpm == nullptr) { + return; + } + int16_t bpmW = GetRecentBpmLabelWidth(bpm); + recentBpm->Resize(bpmW, ECG_RECENT_BPM_H); + if (recentBpmUnit != nullptr) { + recentBpmUnit->SetPosition(ECG_RECENT_BPM_X + bpmW + ECG_RECENT_BPM_UNIT_GAP, ECG_RECENT_BPM_UNIT_Y); + } +} } // namespace static ECGHistoryView *g_pECGHistoryView = nullptr; @@ -172,14 +197,15 @@ void ECGHistoryView::InitRecentPage() { DEFAULT_VECTOR_FONT_FILENAME, 30); recentResult_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - InitImageView(recentHeart_, 129, 182+35+12+8, 54, 54, "ecg_recent_heart", ECG_PATH_HEART_RED_ICON); + InitImageView(recentHeart_, ECG_RECENT_HEART_X, 182 + 35 + 12 + 8, ECG_RECENT_HEART_W, 54, "ecg_recent_heart", + ECG_PATH_HEART_RED_ICON); - InitUILabel(recentBpm_, 129+54+8, 182+35+12, 74, 66, "ecg_recent_bpm", "--", - DEFAULT_VECTOR_FONT_FILENAME, 65); + InitUILabel(recentBpm_, ECG_RECENT_BPM_X, ECG_RECENT_BPM_Y, ECG_RECENT_BPM_W_TWO_DIGIT, ECG_RECENT_BPM_H, + "ecg_recent_bpm", "--", DEFAULT_VECTOR_FONT_FILENAME, 65); recentBpm_->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER); - InitUILabel(recentBpmUnit_, 129+54+12+66+8, 258, 72, 30, "ecg_recent_bpm_unit", "次/分", - DEFAULT_VECTOR_FONT_FILENAME, 30); + InitUILabel(recentBpmUnit_, ECG_RECENT_BPM_X + ECG_RECENT_BPM_W_TWO_DIGIT + ECG_RECENT_BPM_UNIT_GAP, + ECG_RECENT_BPM_UNIT_Y, 72, 30, "ecg_recent_bpm_unit", "次/分", DEFAULT_VECTOR_FONT_FILENAME, 30); recentBpmUnit_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); recentBpmUnit_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); @@ -242,6 +268,7 @@ void ECGHistoryView::UpdateRecentPage() { } else { recentBpm_->SetText("--"); } + UpdateRecentBpmLabelLayout(recentBpm_, recentBpmUnit_, last.bpm); } void ECGHistoryView::RebuildList() { @@ -287,7 +314,7 @@ void ECGHistoryView::RebuildList() { UILabel *bpmLabel = nullptr; std::string bpmStr = rec.bpm > 0 ? (std::to_string(rec.bpm) + " 次/分") : "-- 次/分"; - InitUILabel(bpmLabel, ECG_HISTORY_CARD_MARGIN + 40 + 38 + 8 + 8 + 120, y + 36 + 5 + 2, 119, 35, "ecg_list_bpm", + InitUILabel(bpmLabel, ECG_HISTORY_CARD_MARGIN + 40 + 38 + 8 + 8 + 120, y + 36 + 5, 119, 35, "ecg_list_bpm", bpmStr.c_str(), DEFAULT_VECTOR_FONT_FILENAME, 28); bpmLabel->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER); diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/ecg/src/ECGMeasureResultView.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/ecg/src/ECGMeasureResultView.cpp index baf1c289c..641223cb7 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/ecg/src/ECGMeasureResultView.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/ecg/src/ECGMeasureResultView.cpp @@ -8,16 +8,32 @@ namespace OHOS { namespace { static constexpr int16_t ECG_RESULT_ROW_Y = 168; -static constexpr int16_t ECG_HEART_X = 129; +static constexpr int16_t ECG_HEART_X = 120; static constexpr int16_t ECG_HEART_Y = ECG_RESULT_ROW_Y + 8; static constexpr int16_t ECG_HEART_W = 54; static constexpr int16_t ECG_HEART_H = 54; -static constexpr int16_t ECG_BPM_X = ECG_HEART_X + ECG_HEART_W + 12; +static constexpr int16_t ECG_BPM_X = ECG_HEART_X + ECG_HEART_W; static constexpr int16_t ECG_BPM_Y = ECG_RESULT_ROW_Y; -static constexpr int16_t ECG_BPM_W = 66; +static constexpr int16_t ECG_BPM_W_TWO_DIGIT = 85; +static constexpr int16_t ECG_BPM_W_THREE_DIGIT = 120; static constexpr int16_t ECG_BPM_H = 66; -static constexpr int16_t ECG_BPM_UNIT_X = ECG_BPM_X + ECG_BPM_W + 8; -static constexpr int16_t ECG_BPM_UNIT_Y = ECG_RESULT_ROW_Y + 35; +static constexpr int16_t ECG_BPM_UNIT_GAP = 8; +static constexpr int16_t ECG_BPM_UNIT_Y = ECG_RESULT_ROW_Y + 32; + +static int16_t GetBpmLabelWidth(uint8_t bpm) { + return (bpm >= 100) ? ECG_BPM_W_THREE_DIGIT : ECG_BPM_W_TWO_DIGIT; +} + +static void UpdateBpmLabelLayout(UILabel *bpmValueLabel, UILabel *bpmUnitLabel, uint8_t bpm) { + if (bpmValueLabel == nullptr) { + return; + } + int16_t bpmW = GetBpmLabelWidth(bpm); + bpmValueLabel->Resize(bpmW, ECG_BPM_H); + if (bpmUnitLabel != nullptr) { + bpmUnitLabel->SetPosition(ECG_BPM_X + bpmW + ECG_BPM_UNIT_GAP, ECG_BPM_UNIT_Y); + } +} } // namespace static ECGMeasureResultView *g_instance = nullptr; @@ -61,6 +77,7 @@ void ECGMeasureResultView::UpdateText() { } else { bpmValueLabel_->SetText(std::to_string(bpm).c_str()); } + UpdateBpmLabelLayout(bpmValueLabel_, bpmUnitLabel_, bpm); } if (resultLabel_ != nullptr) { resultLabel_->SetText(model->GetAfibResultText(afibResult).c_str()); @@ -78,12 +95,12 @@ UIViewGroup *ECGMeasureResultView::InitView() { InitImageView(heartIcon_, ECG_HEART_X, ECG_HEART_Y, ECG_HEART_W, ECG_HEART_H, "ecg_result_heart", ECG_PATH_HEART_RED_ICON); - InitUILabel(bpmValueLabel_, ECG_BPM_X, ECG_BPM_Y, ECG_BPM_W, ECG_BPM_H, "ecg_result_bpm", "--", - DEFAULT_VECTOR_FONT_FILENAME, 65); - bpmValueLabel_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + InitUILabel(bpmValueLabel_, ECG_BPM_X, ECG_BPM_Y, ECG_BPM_W_TWO_DIGIT, ECG_BPM_H, "ecg_result_bpm", "--", + DEFAULT_VECTOR_FONT_FILENAME, 60); + bpmValueLabel_->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER); - InitUILabel(bpmUnitLabel_, ECG_BPM_UNIT_X, ECG_BPM_UNIT_Y, 72, 30, "ecg_result_bpm_unit", "次/分", - DEFAULT_VECTOR_FONT_FILENAME, 30); + InitUILabel(bpmUnitLabel_, ECG_BPM_X + ECG_BPM_W_TWO_DIGIT + ECG_BPM_UNIT_GAP, ECG_BPM_UNIT_Y, 72, 30, + "ecg_result_bpm_unit", "次/分", DEFAULT_VECTOR_FONT_FILENAME, 30); bpmUnitLabel_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); bpmUnitLabel_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); -- 2.17.1