# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 模块概述 `frame/effectpreview` 是动画特效预览与编辑工具模块,用于预览、调试和测试各种动画特效文件(SVGA、VAP等格式)。提供了完整的预览界面和参数调整工具。 ## 架构组成 ### 核心组件 - **EffectPreviewActivity**: 主预览界面,支持单个和多个特效文件的预览 - **EffectPreviewSettingActivity**: 特效参数设置界面,提供预设配置和自定义参数 - **PresetAdapter**: RecyclerView适配器,处理不同类型的特效展示 - **Preset**: 特效配置数据模型,包含尺寸、缩放、重力等参数 ### 显示场景类型 (DisplayScene) - **AvatarDecor**: 头像框特效 - **MicDecor**: 麦位装饰特效 - **Headline**: 横幅特效 ### ViewHolder 类型 - **DefaultViewHolder**: 默认特效展示 - **AvatarViewHolder**: 头像框特效展示,包含头像+特效叠加 - **MicViewHolder**: 麦位特效展示,支持多层级z-index - **HeadlineViewHolder**: 横幅特效展示,固定高度布局 ## 关键依赖 ### 内部框架依赖 (compileOnly) - `frame:effect` - 动画特效播放核心功能 - `frame:download` - 文件下载管理 - `frame:base` - 基础框架支持 - `frame:util` - 工具类集合 - `frame:storage` - 存储管理 - `frame:mvvm` - MVVM架构支持 - `frame:coroutine` - 协程工具 ### 外部库依赖 - AndroidX组件(RecyclerView、ViewPager2、ConstraintLayout等) - Material Design组件 ## 开发指南 ### 添加新的预设配置 在 `EffectPreviewSettingActivity.presets` 列表中添加新的 `Preset` 对象: ```kotlin Preset( label = "特效名称(宽×高,缩放比例)", width = 宽度dp, height = 高度dp, scale = 缩放比例f, displayScene = 显示场景类型, gravity = 重力位置, scaleType = ImageView.ScaleType, zIndex = z轴层级 ) ``` ### 测试特效文件 1. 启动 `EffectPreviewSettingActivity` 2. 选择预设配置或自定义参数 3. 输入特效文件URL(支持多行,一行一个URL) 4. 点击应用进入预览界面 ### 动态数据提供 `PresetAdapter.dynamicProvider` 提供动画所需的动态文本和图片数据: - 文本数据:用户等级、用户名等 - 图片数据:头像、装饰图标等 ## 布局自适应逻辑 - **单个特效**: 使用RecyclerView展示 - **多个特效**: - 小尺寸特效:网格布局(GridLayoutManager, 2列) - 大尺寸特效:ViewPager2+TabLayout - 横幅类型:强制使用RecyclerView单列 ## 内存监控 模块包含内存使用监控功能,通过 `IWeEffectCallback.onRamConsumption` 实时显示特效播放时的内存占用情况。 ## 启动方式 ```kotlin // 启动设置界面 EffectPreviewSettingActivity.start(activity) // 直接启动预览界面 val intent = Intent(context, EffectPreviewActivity::class.java) intent.putExtra(EffectPreviewSettingActivity.EXTRA_PRESET, preset) startActivity(intent) ```