Skip to content

Latest commit

 

History

History
143 lines (109 loc) · 3.87 KB

File metadata and controls

143 lines (109 loc) · 3.87 KB

拍摄动画效果指南

🎬 动画效果概述

应用现在支持炫酷的像素水波扩散拍摄动画!每次拍照时,屏幕会显示白色小正方形组成的网格,从中心向四周扩散,营造出像素水波的视觉效果。

✨ 动画特性

基础动画效果

  • 像素网格: 屏幕被划分为白色小正方形的无缝网格
  • 水波扩散: 拍摄时从屏幕中央开始,像素逐渐亮起然后熄灭
  • 平滑过渡: 使用正弦函数实现自然的亮度和缩放变化
  • 动态缩放: 像素在亮起时会有轻微的缩放效果

增强动画效果(可选)

如果启用增强版动画,还支持:

  • 水波纹效果: 经典的从中心扩散的圆形波纹
  • 爆炸效果: 从中心爆发的粒子效果
  • 螺旋效果: 螺旋状的像素激活模式
  • 随机闪烁: 随机的像素闪烁效果

🎮 使用方法

触发动画

  • 点击屏幕任意位置 → 拍照 + 动画
  • 按音量键 → 拍照 + 动画
  • 调整音量 → 拍照 + 动画

切换动画效果

  • 长按右下角灰色按钮 → 切换到下一种动画效果
  • 会显示Toast提示当前动画类型

⚙️ 动画配置

网格大小

可以通过代码调整像素网格的大小:

// 在PixelWaveAnimationView中
setGridSize(20f) // 默认20像素

动画持续时间

duration = 1500 // 1.5秒,可在代码中调整

动画颜色

setAnimationColor(Color.WHITE) // 默认白色

🔧 技术实现

核心组件

  1. PixelWaveAnimationView: 基础动画View
  2. EnhancedPixelWaveView: 增强版动画View(支持多种效果)
  3. CaptureAnimationConfig: 动画配置管理

动画原理

  1. 网格计算: 根据屏幕尺寸和网格大小计算像素位置
  2. 距离计算: 计算每个像素到屏幕中心的距离
  3. 波浪传播: 使用动画进度控制波浪半径
  4. 像素状态: 根据距离和波浪位置计算每个像素的透明度和缩放

性能优化

  • 只绘制可见的像素(alpha > 0)
  • 使用硬件加速
  • 动画结束后自动隐藏View

🎨 自定义动画

添加新的动画类型

  1. EnhancedPixelWaveView.AnimationType中添加新类型
  2. updatePixelStates()中添加对应的更新逻辑
  3. CaptureAnimationConfig中注册新类型

示例:添加心形扩散效果

// 在AnimationType中添加
HEART

// 在updatePixelStates()中添加
AnimationType.HEART -> updateHeartEffect()

// 实现心形效果
private fun updateHeartEffect() {
    // 心形数学公式实现
    // ...
}

📱 用户体验

视觉反馈

  • 动画提供即时的拍照反馈
  • 不会阻挡相机预览
  • 动画结束后自动消失

性能影响

  • 动画运行在独立线程
  • 不影响拍照性能
  • 内存占用极小

🐛 故障排除

动画不显示

  1. 检查View是否正确添加到布局
  2. 确认动画View的层级在最上方
  3. 查看日志确认动画是否启动

动画卡顿

  1. 减小网格大小(增大gridSize值)
  2. 缩短动画持续时间
  3. 检查设备性能

自定义问题

# 查看动画相关日志
adb logcat | grep -E "(PixelWave|Animation|开始拍摄动画)"

🚀 未来扩展

可能的增强功能

  • 根据音量大小调整动画强度
  • 支持自定义动画颜色主题
  • 添加音效同步
  • 支持手势控制动画参数
  • 保存用户偏好的动画设置

高级自定义

  • 支持导入自定义动画脚本
  • 实时调整动画参数
  • 动画录制和回放功能

💡 使用技巧

  1. 最佳效果: 在较暗的环境中使用,动画效果更明显
  2. 性能优化: 如果设备性能较低,可以增大网格大小
  3. 个性化: 长按切换按钮尝试不同的动画效果
  4. 调试: 通过日志查看动画执行状态

现在你的拍照应用有了超炫酷的像素水波动画效果!🎉