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;
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);
} else {
recentBpm_->SetText("--");
}
+ UpdateRecentBpmLabelLayout(recentBpm_, recentBpmUnit_, last.bpm);
}
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);
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;
} else {
bpmValueLabel_->SetText(std::to_string(bpm).c_str());
}
+ UpdateBpmLabelLayout(bpmValueLabel_, bpmUnitLabel_, bpm);
}
if (resultLabel_ != nullptr) {
resultLabel_->SetText(model->GetAfibResultText(afibResult).c_str());
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);