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
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日