动态小鹰表盘提交,还有问题 3012/1 3012/head 3013/target/1 3014/target/1
authorluozheng <1732036298@qq.com>
Mon, 5 Jan 2026 06:31:27 +0000 (14:31 +0800)
committerluozheng <1732036298@qq.com>
Mon, 5 Jan 2026 06:31:27 +0000 (14:31 +0800)
15 files changed:
code/sdk/application/wearable/fd272/nativeapp/nativeui/include/main/dial/DialDataType.h
code/sdk/application/wearable/fd272/nativeapp/nativeui/include/main/dial/DialModelBg.h [new file with mode: 0644]
code/sdk/application/wearable/fd272/nativeapp/nativeui/main/include/dial/DialDataType.h
code/sdk/application/wearable/fd272/nativeapp/nativeui/main/include/dial/DialModelBg.h [new file with mode: 0644]
code/sdk/application/wearable/fd272/nativeapp/nativeui/main/src/dial/DialModelBg.cpp [new file with mode: 0644]
tools/dial_converter_tool/instance/207/BACKGROUND_0_6.png [new file with mode: 0644]
tools/dial_converter_tool/instance/207/BACKGROUND_12_18.png [new file with mode: 0644]
tools/dial_converter_tool/instance/207/BACKGROUND_18_24.png [new file with mode: 0644]
tools/dial_converter_tool/instance/207/BACKGROUND_6_12.png [new file with mode: 0644]
tools/dial_converter_tool/instance/207/Battery/Battery.png [new file with mode: 0644]
tools/dial_converter_tool/instance/207/Battery/BatteryCharge.png [new file with mode: 0644]
tools/dial_converter_tool/instance/207/Battery/Battery_Nomoal.png [new file with mode: 0644]
tools/dial_converter_tool/instance/207/owl_clock.png [new file with mode: 0644]
tools/dial_converter_tool/instance/207/owl_clock.xml [new file with mode: 0644]
tools/dial_converter_tool/out/owl_clock.bin [new file with mode: 0644]

index 6978439..9584267 100644 (file)
@@ -137,6 +137,7 @@ enum class DialDataType : int16_t {
     BLOOD_OXYGEN = 220,
     SYSTOLIC_BLOOD_PRESSURE = 221,
     DIASTOLIC_BLOOD_PRESSURE = 222,
+    TIME_PERIOD_BG = 223, // 时间段背景索引(0-3: 0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3)
     DUAL_LANGUAGE_SYSTEM = 230,
     UNREAD_SMS_MSG = 250,
     UNREAD_WECHAT_MSG = 251,
diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/include/main/dial/DialModelBg.h b/code/sdk/application/wearable/fd272/nativeapp/nativeui/include/main/dial/DialModelBg.h
new file mode 100644 (file)
index 0000000..d6f55ea
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2025. All rights reserved.
+ * Description: DialModelBg - 时间段背景切换模型
+ * Author:
+ * Create: 2025-01
+ */
+
+#ifndef DIAL_MODEL_BG_H
+#define DIAL_MODEL_BG_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS
+{
+    class DialModelBg : public DialBaseModel
+    {
+    public:
+        DialModelBg() {}
+        ~DialModelBg() override {}
+        static DialModelBg *GetInstance()
+        {
+            static DialModelBg instance;
+            return &instance;
+        }
+        bool GetDialFloatData(DialDataType &type, float &out) override;
+
+    private:
+        struct tm tblock_;
+        /**
+         * @brief 根据小时计算时间段索引
+         * @param hour 当前小时(0-23)
+         * @return 时间段索引: 0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3
+         */
+        int CalculateTimePeriodIndex(int hour);
+    };
+}
+
+#endif // DIAL_MODEL_BG_H
+
index 6978439..9584267 100644 (file)
@@ -137,6 +137,7 @@ enum class DialDataType : int16_t {
     BLOOD_OXYGEN = 220,
     SYSTOLIC_BLOOD_PRESSURE = 221,
     DIASTOLIC_BLOOD_PRESSURE = 222,
+    TIME_PERIOD_BG = 223, // 时间段背景索引(0-3: 0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3)
     DUAL_LANGUAGE_SYSTEM = 230,
     UNREAD_SMS_MSG = 250,
     UNREAD_WECHAT_MSG = 251,
diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/main/include/dial/DialModelBg.h b/code/sdk/application/wearable/fd272/nativeapp/nativeui/main/include/dial/DialModelBg.h
new file mode 100644 (file)
index 0000000..d6f55ea
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2025. All rights reserved.
+ * Description: DialModelBg - 时间段背景切换模型
+ * Author:
+ * Create: 2025-01
+ */
+
+#ifndef DIAL_MODEL_BG_H
+#define DIAL_MODEL_BG_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS
+{
+    class DialModelBg : public DialBaseModel
+    {
+    public:
+        DialModelBg() {}
+        ~DialModelBg() override {}
+        static DialModelBg *GetInstance()
+        {
+            static DialModelBg instance;
+            return &instance;
+        }
+        bool GetDialFloatData(DialDataType &type, float &out) override;
+
+    private:
+        struct tm tblock_;
+        /**
+         * @brief 根据小时计算时间段索引
+         * @param hour 当前小时(0-23)
+         * @return 时间段索引: 0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3
+         */
+        int CalculateTimePeriodIndex(int hour);
+    };
+}
+
+#endif // DIAL_MODEL_BG_H
+
diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/main/src/dial/DialModelBg.cpp b/code/sdk/application/wearable/fd272/nativeapp/nativeui/main/src/dial/DialModelBg.cpp
new file mode 100644 (file)
index 0000000..d552362
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2025. All rights reserved.
+ * Description: DialModelBg - 时间段背景切换模型实现
+ * Author:
+ * Create: 2025-01
+ */
+
+#include "main/include/dial/DialModelBg.h"
+#include "main/include/dial/RegisterDialModel.h"
+#include "custom_runtime.h"
+#include <sys/time.h>
+
+// 注册模块
+REGIST_DIAL_MODULE(OHOS::DialDataType::TIME_PERIOD_BG, OHOS::DialModelBg::GetInstance());
+
+namespace OHOS
+{
+
+int DialModelBg::CalculateTimePeriodIndex(int hour)
+{
+    // 时间段映射:0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3
+    if (hour >= 0 && hour < 6) {
+        return 0;  // 0-5点
+    } else if (hour >= 6 && hour < 12) {
+        return 1;  // 6-11点
+    } else if (hour >= 12 && hour < 18) {
+        return 2;  // 12-17点
+    } else {
+        return 3;  // 18-23点
+    }
+}
+
+bool DialModelBg::GetDialFloatData(DialDataType &type, float &out)
+{
+    (void)type;
+    
+    // 获取当前时间
+    struct timeval tv;
+    gettimeofday(&tv, NULL);
+    localtime_r(&tv.tv_sec, &tblock_);
+
+    // 获取当前小时(0-23)
+    int hour = tblock_.tm_hour;
+    
+    // 计算时间段索引
+    int periodIndex = CalculateTimePeriodIndex(hour);
+    
+    // 返回时间段索引作为浮点数
+    out = static_cast<float>(periodIndex);
+    
+    return true;
+}
+
+} // namespace OHOS
+
diff --git a/tools/dial_converter_tool/instance/207/BACKGROUND_0_6.png b/tools/dial_converter_tool/instance/207/BACKGROUND_0_6.png
new file mode 100644 (file)
index 0000000..eca5bea
Binary files /dev/null and b/tools/dial_converter_tool/instance/207/BACKGROUND_0_6.png differ
diff --git a/tools/dial_converter_tool/instance/207/BACKGROUND_12_18.png b/tools/dial_converter_tool/instance/207/BACKGROUND_12_18.png
new file mode 100644 (file)
index 0000000..fda00cd
Binary files /dev/null and b/tools/dial_converter_tool/instance/207/BACKGROUND_12_18.png differ
diff --git a/tools/dial_converter_tool/instance/207/BACKGROUND_18_24.png b/tools/dial_converter_tool/instance/207/BACKGROUND_18_24.png
new file mode 100644 (file)
index 0000000..8bfa69a
Binary files /dev/null and b/tools/dial_converter_tool/instance/207/BACKGROUND_18_24.png differ
diff --git a/tools/dial_converter_tool/instance/207/BACKGROUND_6_12.png b/tools/dial_converter_tool/instance/207/BACKGROUND_6_12.png
new file mode 100644 (file)
index 0000000..e1d8a2c
Binary files /dev/null and b/tools/dial_converter_tool/instance/207/BACKGROUND_6_12.png differ
diff --git a/tools/dial_converter_tool/instance/207/Battery/Battery.png b/tools/dial_converter_tool/instance/207/Battery/Battery.png
new file mode 100644 (file)
index 0000000..916febe
Binary files /dev/null and b/tools/dial_converter_tool/instance/207/Battery/Battery.png differ
diff --git a/tools/dial_converter_tool/instance/207/Battery/BatteryCharge.png b/tools/dial_converter_tool/instance/207/Battery/BatteryCharge.png
new file mode 100644 (file)
index 0000000..4c26888
Binary files /dev/null and b/tools/dial_converter_tool/instance/207/Battery/BatteryCharge.png differ
diff --git a/tools/dial_converter_tool/instance/207/Battery/Battery_Nomoal.png b/tools/dial_converter_tool/instance/207/Battery/Battery_Nomoal.png
new file mode 100644 (file)
index 0000000..4cd353d
Binary files /dev/null and b/tools/dial_converter_tool/instance/207/Battery/Battery_Nomoal.png differ
diff --git a/tools/dial_converter_tool/instance/207/owl_clock.png b/tools/dial_converter_tool/instance/207/owl_clock.png
new file mode 100644 (file)
index 0000000..6e8149c
Binary files /dev/null and b/tools/dial_converter_tool/instance/207/owl_clock.png differ
diff --git a/tools/dial_converter_tool/instance/207/owl_clock.xml b/tools/dial_converter_tool/instance/207/owl_clock.xml
new file mode 100644 (file)
index 0000000..d198dee
--- /dev/null
@@ -0,0 +1,20 @@
+<dial title="owl_clock" description="动态小鹰" size="466 466" version="2.0" preview_img="./instance/207/owl_clock.png" ambient_period="60">\r
+    \r
+    <static_img id="back_ground" position="0 0" img_name="./instance/207/BACKGROUND_6_12.png"></static_img>\r
+    <!-- 时间段背景切换:0-6点、6-12点、12-18点、18-24点 -->\r
+    <!-- 时间段映射:0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3 -->\r
+    <!-- 时间段背景切换(已实现系统端映射逻辑) -->\r
+    <option_img position="0 0" img_names="./instance/207/BACKGROUND_0_6.png,./instance/207/BACKGROUND_6_12.png,./instance/207/BACKGROUND_12_18.png,./instance/207/BACKGROUND_18_24.png" bind_data="223" period="10"></option_img>\r
+    \r
+    <!-- 数字时间显示 - 小时 -->\r
+    <label id="hour_label" color="0xFFFFFFFF" font="HarmonyOS_Sans_SC_Regular.ttf" break_mode="adapt" rect="86 162 200 60" text="%02.f" font_size="120" align="center" bind_data="15" period="10" display_mode="always" ambient_periodic="true"></label>\r
+    \r
+    <!-- 数字时间显示 - 分钟 -->\r
+    <label id="minute_label" color="0xFF666666" font="HarmonyOS_Sans_SC_Regular.ttf" break_mode="adapt" rect="240 162 200 60" text="%02.f" font_size="120" align="center" bind_data="14" period="10" display_mode="always" ambient_periodic="true"></label>\r
+    \r
+    <!-- 电池显示 -->\r
+    <option_img position="173 52" img_names="./instance/207/Battery/Battery_Nomoal.png,./instance/207/Battery/BatteryCharge.png" bind_data="20" period="10"></option_img>\r
+    \r
+    <!-- 电池百分比标签 -->\r
+    <label id="battery_label" color="0xFFFFFFFF" font="HarmonyOS_Sans_SC_Regular.ttf" break_mode="adapt" rect="228 52 200 62" text="%s" font_size="26" align="center" bind_data="20485" period="10"></label>\r
+</dial>\r
diff --git a/tools/dial_converter_tool/out/owl_clock.bin b/tools/dial_converter_tool/out/owl_clock.bin
new file mode 100644 (file)
index 0000000..72ff88b
Binary files /dev/null and b/tools/dial_converter_tool/out/owl_clock.bin differ