CLAUDE.md 3.0 KB

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 对象:

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 实时显示特效播放时的内存占用情况。

启动方式

// 启动设置界面
EffectPreviewSettingActivity.start(activity)

// 直接启动预览界面
val intent = Intent(context, EffectPreviewActivity::class.java)
intent.putExtra(EffectPreviewSettingActivity.EXTRA_PRESET, preset)
startActivity(intent)