一键导入
material-3-expressive-animation-standards
Guidelines for implementing M3 Expressive (M3E) animations, transitions, and touch physics in Varisankya.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Guidelines for implementing M3 Expressive (M3E) animations, transitions, and touch physics in Varisankya.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Guidelines for managing Varisankya releases across Beta and Production tracks.
How to safely record extra payments without advancing the Varisankya subscription next due date.
Instructions for extracting the Play Store upload keystore, Firebase JSON, and passwords from Bitwarden.
Standard operating procedure for concluding an AI agent session and ensuring workspace integrity.
Guidelines for compiling Varisankya from the CLI without Android Studio.
How to correctly handle custom dates for extra subscription payments using MaterialDatePicker.
| name | Material 3 Expressive Animation Standards |
| description | Guidelines for implementing M3 Expressive (M3E) animations, transitions, and touch physics in Varisankya. |
Varisankya strictly adheres to Material 3 Expressive design parameters. Standard M3 is too linear; M3E utilizes dramatic scale depth, sudden entrances with long easing tails, and heavy touch physics.
All animations MUST use the predefined M3E tokens in Constants.kt. Never use hardcoded millisecond values in Views or XML.
ANIM_DURATION_SHORT (200ms): Use for rapid snaps, such as a bouncing recovery after an interactive press.ANIM_DURATION_MEDIUM (400ms): Use for standard layout state changes.ANIM_DURATION_LONG (500ms): Use for all Activity/Fragment Shared Axis window transitions and large list entrances. This provides the signature "fast entrance, long Emphasized tail" feel.When loading a list of items (RecyclerView), the items MUST NOT just slide upward. They must cascade from a deeper Z-axis scale.
AnimationHelper.animateEntrance(view, position).scaleX = 0.85f, scaleY = 0.85f and animate to 1.0f while translating up 50f.ANIM_DURATION_LONG (500ms) curve.We use MaterialSharedAxis(MaterialSharedAxis.Z) for all primary activity-to-activity navigation (Home -> Settings, Home -> History).
.duration property of the MaterialSharedAxis object to Constants.ANIM_DURATION_LONG (500ms) on both the enter/return and exit/reenter definitions.// Correct Implementation in Activity onCreate
window.enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).apply {
duration = Constants.ANIM_DURATION_LONG
}
window.returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false).apply {
duration = Constants.ANIM_DURATION_LONG
}
M3 Expressive relies on mechanical tactile feedback.
PreferenceHelper.attachScrollHaptics(recyclerView) for standard lists, OR bake the logic directly into NestedScrollView.setOnScrollChangeListener if multiple scroll actions (like FAB hiding) need to coexist.FloatingActionButton exists over a scrollable list, it MUST hide entirely (.hide()) when scrolling down, and show (.show()) when scrolling up. Do not use Extended FABs for the main feed, as they permanently obstruct too much vertical space.insets.bottom + FAB resting height + margin (usually ~88dp total) so the final item in the list can be scrolled above the resting FAB.