Kanesumi

矩隅 · 以直角丈量边缘
Metro 风格 Android UI 库。独立 repo,零 material3 依赖。
「默认即 Metro」· GPU 零重组 · Sokuou 受控减速
Kotlin Compose Zero M3 Apache-2.0

设计理念 · 改良 Metro

不是 Windows 8 磁贴式堆叠,而是信息优先的直角版式;无边框 + 贴边追求屏幕利用率;动画用受控减速,而非系统默认的物理弹性。

01

直角 · No Curves

无圆角、无曲线,一切由直角切出。显示器是像素矩阵,界面应直接而诚实。

02

无边框 · Borderless

去装饰,信息优先,大量元件无缝贴边。MetroInsets 一次解 Android 几何分裂。

03

扁平与克制 · Flat & Controlled

非物理动画(UWP easing,无弹簧/回弹),受控减速。动画用 :kanesumi-anim 的 Sokuou 预设。

GPU 零重组

单一 progress 驱动所有动画;视觉属性一律在 graphicsLayer / drawBehind 读取,绝不在组合阶段逐帧重组。

单一 progress

所有动画由一个 Float 驱动,任意时刻可中断。

graphicsLayer 读取

视觉属性在 draw phase 读取,不触发 Compose 重组作用域扩张。

@Stable / @Immutable

类稳定性显式标注,避免重组作用域扩张。

API 强制约定

库不提供 state 驱动动画的高层组件,动画值只从 Animatable 进 graphicsLayer。

Sokuou 桥接

kanesumi-anim 消费 Sokuou 曲线与 Spring 物理,不吞并引擎。

无障碍

层 0 起自带语义树,MetroIndication 只负责视觉反馈。

模块划分

Compose 之上、Material 之下——保留布局/文本/手势/a11y 能力,摆脱 M3 魔改。

模块 职责
:kanesumi-core 层 0 MetroInsets 安全区、MetroBottomStack、MetroTheme/Colors/Typography、MetroText/Icon、MetroIndication 直角闪切
:kanesumi-anim 层 1 Sokuou 分支——UWP easing 全家族、sokuouSpring 桥接、SokuouPresets/Tweens、MetroFlingBehavior
:kanesumi-structure 层 2 MetroShell / MetroAppBar / MetroDetailScaffold / MetroTopScrim / MetroBottomNav
:kanesumi-controls 层 3 MetroSurface/Button/ListRow/Switch/TabRow/Dialog/BottomSheet/TextField/Drawer 等全部控件
:sample 演示 覆盖所有组件的真实交互流演示 app

现状

v0.1.0-SNAPSHOT——组件层第一轮完成 + 首屏 Ncrust 反向迁移落地。Kanesumi 已被 Ncrust 通过 Gradle includeBuild 实际消费,SearchScreen 作为首个迁移屏跑通,基础设施验证通过。

命名缘由

矩(かね)—— 矩尺,画出直角的工具。「以直角丈量边缘」的几何身份。

隅(すみ)—— 角落、边缘,同音「墨」,日本墨的东方意境。直角、无边框、贴边。

合意:「以直角丈量边缘」 —— 直角 / 无边框 / 贴边,浓缩了库的整个几何身份。