You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6.7 KiB

🎬 加载动画系统文档

📖 系统概述

加载动画系统为应用提供了统一的加载状态管理,包括:

  • 🎯 自定义加载对话框
  • 🔄 旋转动画效果
  • 🎨 淡入淡出动画
  • 📱 多场景适配

🎯 主要功能

1. 加载对话框 (LoadingDialog)

  • 自定义外观:圆角白色背景,居中显示
  • 动态文本:支持自定义加载提示文本
  • 旋转动画ProgressBar自动旋转
  • 不可取消:防止用户在加载过程中误操作

2. 加载管理器 (LoadingManager)

  • 统一管理:集中管理所有加载状态
  • 场景适配:针对登录、注册等不同场景的专用方法
  • 动画工具提供View动画的便捷方法

🚀 使用方法

基础使用

// 显示加载动画
loadingManager.show();

// 隐藏加载动画
loadingManager.hideLoading();

// 自定义文本
loadingManager.showLoading("正在处理...");

场景专用方法

// 登录加载
loadingManager.showLoginLoading();

// 注册加载
loadingManager.showRegisterLoading();

// 发送验证码
loadingManager.showSendCodeLoading();

// 重置密码
loadingManager.showResetPasswordLoading();

View动画效果

// 淡入动画
LoadingManager.fadeInView(view);

// 淡出动画
LoadingManager.fadeOutView(view);

// 缩放动画
LoadingManager.scaleInView(view);

🎨 动画资源文件

旋转动画 (rotate_loading.xml)

<rotate
    android:duration="1000"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:repeatCount="infinite" />

淡入动画 (fade_in.xml)

<alpha
    android:duration="300"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />

淡出动画 (fade_out.xml)

<alpha
    android:duration="300"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" />

缩放动画 (scale_in.xml)

<scale
    android:duration="400"
    android:fromXScale="0.8"
    android:fromYScale="0.8"
    android:toXScale="1.0"
    android:toYScale="1.0" />

📱 在各Activity中的集成

MainActivity (登录)

// 显示登录加载动画
loadingManager.showLoginLoading();

// 在新线程中执行登录
new Thread(() -> {
    UserRepository.LoginResult result = userRepository.login(user, pass);

    runOnUiThread(() -> {
        loadingManager.hideLoading(); // 隐藏加载动画
        // 处理结果...
    });
}).start();

RegisterActivity (注册)

// 注册操作
loadingManager.showRegisterLoading();

new Thread(() -> {
    UserRepository.RegisterResult result = userRepository.register(user, pass, email);

    runOnUiThread(() -> {
        loadingManager.hideLoading();
        // 处理结果...
    });
}).start();

// 发送验证码
loadingManager.showSendCodeLoading();

ForgotPasswordActivity (密码找回)

// 发送验证码
loadingManager.showSendCodeLoading();

// 重置密码
loadingManager.showResetPasswordLoading();

🎨 视觉设计

加载对话框设计

  • 尺寸280dp宽度自适应高度
  • 背景白色圆角矩形16dp圆角
  • 边框1dp灰色边框
  • 内边距32dp

颜色配置

<!-- 加载对话框 -->
<color name="loading_background">#FFFFFF</color>
<color name="loading_text">#333333</color>
<color name="loading_border">#E0E0E0</color>

<!-- ProgressBar颜色 -->
<color name="purple_500">#FF6200EE</color>

⚙️ 配置参数

动画时长

  • 旋转动画1000ms (1秒/圈)
  • 淡入淡出300ms
  • 缩放动画400ms

加载文本

  • 登录"正在登录..."
  • 注册"正在注册..."
  • 发送验证码"正在发送验证码..."
  • 重置密码"正在重置密码..."

🔧 自定义配置

修改加载文本

// 在LoadingManager中修改对应方法
public void showLoginLoading() {
    loadingDialog.show("自定义登录文本...");
}

修改动画时长

<!-- 在动画文件中修改android:duration -->
<rotate
    android:duration="2000"  <!-- 改为2秒 -->
    ... />

修改对话框样式

<!-- 在bg_loading_dialog.xml中修改 -->
<corners android:radius="24dp" />  <!-- 更大的圆角 -->
<solid android:color="#F5F5F5" />  <!-- 浅灰色背景 -->

🎯 最佳实践

1. 及时隐藏加载动画

// ✅ 正确的做法
loadingManager.showLoading();
try {
    // 执行操作
    performOperation();
} finally {
    loadingManager.hideLoading(); // 确保隐藏
}

// ❌ 错误的做法
loadingManager.showLoading();
performOperation();
// 忘记调用hideLoading()

2. 异步操作中使用

// 在新线程中执行耗时操作
new Thread(() -> {
    // 耗时操作
    performLongOperation();

    // 回到主线程更新UI
    runOnUiThread(() -> {
        loadingManager.hideLoading();
        updateUI();
    });
}).start();

3. 错误处理

loadingManager.showLoading("正在处理...");

try {
    // 执行操作
    boolean success = performOperation();

    if (success) {
        showToast("操作成功");
    } else {
        showToast("操作失败");
    }
} catch (Exception e) {
    showToast("发生错误:" + e.getMessage());
} finally {
    loadingManager.hideLoading();
}

🔍 调试技巧

检查加载状态

if (loadingManager.isLoading()) {
    Log.d("Loading", "当前正在加载");
}

模拟网络延迟(测试用)

// 在开发阶段添加延迟以便观察动画
loadingManager.showLoading();
new Handler().postDelayed(() -> {
    // 执行实际操作
    performOperation();
    loadingManager.hideLoading();
}, 2000); // 2秒延迟

📊 性能考虑

内存管理

  • 自动清理LoadingManager在Activity销毁时自动释放资源
  • 单例模式每个Activity只有一个LoadingManager实例
  • View复用加载对话框复用同一个View

线程安全

  • 主线程更新所有UI操作都在主线程执行
  • 异步处理:耗时操作在后台线程执行
  • 状态同步使用runOnUiThread确保线程安全

🎨 扩展建议

添加更多动画效果

<!-- 弹跳动画 -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:duration="600"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:toXScale="1.0"
        android:toYScale="1.0"
        android:interpolator="@android:anim/bounce_interpolator" />
</set>

自定义进度指示器

// 添加进度百分比显示
public void showProgressLoading(int progress) {
    String text = "加载中... " + progress + "%";
    loadingDialog.show(text);
}

加载动画系统版本v1.0 最后更新2026年3月24日