# z21-ui-showcase **Repository Path**: Kwolve/z21-ui-showcase ## Basic Information - **Project Name**: z21-ui-showcase - **Description**: Z21 UI Showcase - 1024x600 touchscreen UI with real FlyThings widgets - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-10 - **Last Updated**: 2026-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
|
| **控件族** | 按钮(主/描边/文本/禁用)、开关、复选、单选、滑块、步进、提示条、角标、输入框(系统键盘 + 拼音) |
|
| **图表** | 实时折线/波形、环形进度、分组柱状(自绘重绘) |
|
| **日期时间** | 数字钟、表盘指针、滚轮选择器(年月日/时分秒)、日历(可翻月/可选中) |
|
| **列表 / 封面墙** | listview 三件套;封面墙为 2 列网格 listview(动态数据 + 图片缓存) |
|
| **画板** | 自绘 painter:手指绘制、粗细/颜色切换、撤销 / 清空 / 保存 |
|
| **音乐** | 黑胶唱片旋转 + **真实音频播放**:本地 MP3、暂停/切歌/拖动进度/静音、歌词按时间同步 + **实时频谱曲线** |
|
| **设置 / 关于** | 开关组、分段选择、诊断信息、保存 / 重置 |
|
---
## 平台能力
| 项 | 说明 |
|---|---|
| 平台 | **Z21**(FlyThings OS) |
| 屏幕 | **1024 × 600** 触摸屏 |
| UI 系统 | **FlyThings UI**(自研 GUI 交互系统,设备侧产物 `zkgui` / `libzkgui.so`) |
| 系统底座 | 基于 **Linux** 的操作系统(内核 + 自研系统框架 + GUI);应用是普通 Linux 进程 |
| 应用形态 | 界面由 `ui/*.ftu` 描述、逻辑在 `src/logic/*.cc`;`fsc build` 编译成 `libzkgui.so` 推到设备运行 |
| 输入 | 电容触摸(本机示例含触摸注入验证脚本);文本输入走**系统内置键盘 + 拼音** |
| 网络/外设 | 依赖组件提供 WiFi(`zknet`)、GPIO/背光/ADC/PWM 等硬件 API(`zkhardware`) |
> 整机型号、主控、供电、接口与存储等**整机规格**请见随硬件提供的规格书,或直接联系我们(见文末)。
---
## 用到的组件能力
本示例跑在一条完整的组件链上 —— **全部只需在 `Manifest.xml` 里声明依赖**,`fsc install` 自动解析依赖树并拉取(含跨包传递依赖),不需要手工移植/编译任何第三方库:
| 组件包 | 提供的能力 | 本示例的用法 |
|---|---|---|
| `easyui` | **FlyThings UI 控件库**(按钮/开关/滑块/列表/图表/画板/pointer/seekbar/painter…) | 8 个页面的全部控件与交互 |
| `audio-utility` | 音频解码播放 + **播放 PCM 回调** + 音量/静音(MI_AO 后端) | 音乐页真播、**设备端实时频谱**、音量/静音 |
| `zknet` | 网络能力(WiFi/连接状态) | 设置页的「无线网络」与系统设置页跳转 |
| `zkhardware` | 硬件 API(GPIO/背光/ADC/PWM/蜂鸣器) | 背光、按键/指示灯这类硬件交互的落点 |
| `base-utility` | 基础库(文件/功能/日志等) | 生成代码与业务代码的公共底座 |
| `png` / `jpeg` | PNG / JPEG 解码 | 切图资源与照片类素材的加载 |
| `z` | 压缩库 | 网络/升级链路依赖 |
| `curl` + `openssl` + `cares` | HTTP(S) 客户端 / TLS / 异步 DNS | 需要联网拉数据时的现成通道 |
| `ffmpeg` | 解码链(音频/视频软解) | `audio-utility` 的解码后端;**这个依赖需按需显式声明** |
> **开发便捷性就体现在这里**:上面这些包(包括 `audio-utility` 自动带出的 `mi_ao` / `mi_aio` / `mi_sys` / `mi_common` / `apc` / `aec` / `base-json` / `rapidjson` 等)**都不是手工移植的** —— 声明依赖 → 自动拉取 → 直接 `#include` 用。
> 拿音乐页的「**设备端实时频谱**」为例:只加一行 `