6.9 KiB
6.9 KiB
按钮和对话框修复测试指南
🎯 修复内容
1. 按钮位置修复 ✅
- 问题:按钮在屏幕最上面,显示不全
- 解决:添加顶部边距,让按钮下移
- 实现:
android:layout_marginTop="50dp" <!-- 添加50dp顶部边距 -->
2. 对话框性能优化 ✅
- 问题:设备选择对话框很卡
- 解决:简化对话框实现,限制设备数量
- 实现:
- 限制最多显示8个设备
- 使用简单的文本列表而不是ListView
- 提供快速选择按钮
📱 现在的UI布局
启动时的界面
┌─────────────────────────────────────────┐
│ │
│ [状态栏区域] │
│ │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ [连接蓝牙] [启动程序] │
│ [停止程序] [陷波滤波] │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ 状态信息区域 │
│ [应用已就绪,可以开始使用] │
│ [权限状态信息] │
│ [点击"连接蓝牙"按钮开始蓝牙连接...] │
└─────────────────────────────────────────┘
设备选择对话框
┌─────────────────────────────────────────┐
│ 选择蓝牙设备 │
├─────────────────────────────────────────┤
│ 找到 5 个设备: │
│ │
│ • iPhone (00:11:22:33:44:55) │
│ • AirPods (AA:BB:CC:DD:EE:FF) │
│ • 小米手环 (11:22:33:44:55:66) │
│ • Samsung Galaxy (22:33:44:55:66:77) │
│ • Huawei Watch (33:44:55:66:77:88) │
│ │
│ 请选择要连接的设备: │
├─────────────────────────────────────────┤
│ [选择第一个设备] [选择第二个设备] [取消] │
└─────────────────────────────────────────┘
🚀 测试步骤
第一步:验证按钮位置
- 启动应用
- 确认按钮位置:
- ✅ 按钮不在屏幕最上面
- ✅ 按钮完全可见
- ✅ 按钮与状态栏有足够距离
第二步:测试蓝牙扫描
- 点击"连接蓝牙"按钮
- 观察扫描过程:
蓝牙状态: 正在扫描蓝牙设备... 发现设备: iPhone (00:11:22:33:44:55) 发现设备: AirPods (AA:BB:CC:DD:EE:FF) 发现设备: 小米手环 (11:22:33:44:55:66)
第三步:验证对话框性能
- 扫描完成后:
- ✅ 对话框应该快速弹出
- ✅ 对话框不卡顿
- ✅ 设备列表清晰显示
第四步:测试设备选择
- 选择设备:
- 点击"选择第一个设备"按钮
- 或点击"选择第二个设备"按钮
- 观察连接过程
第五步:验证连接状态
- 连接成功后:
- ✅ 按钮文字变为"断开蓝牙"
- ✅ 按钮颜色变为红色
- ✅ 状态信息更新
🔧 关键代码修改
1. 按钮位置修复
<!-- 控制按钮区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp"
android:background="#E8E8E8"
android:layout_marginTop="50dp"> <!-- 添加顶部边距 -->
2. 对话框性能优化
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val builder = AlertDialog.Builder(requireContext())
builder.setTitle("选择蓝牙设备")
if (devices.isEmpty()) {
builder.setMessage("未找到蓝牙设备")
builder.setPositiveButton("重新扫描") { _, _ -> dismiss() }
builder.setNegativeButton("取消") { _, _ -> dismiss() }
} else {
// 限制设备数量,避免列表过长
val limitedDevices = devices.take(8) // 最多显示8个设备
// 创建设备列表字符串
val deviceListText = limitedDevices.joinToString("\n") { device ->
"• ${device.name ?: "未知设备"} (${device.address})"
}
val message = if (devices.size > 8) {
"找到 ${devices.size} 个设备,显示前8个:\n\n$deviceListText\n\n请选择要连接的设备:"
} else {
"找到 ${devices.size} 个设备:\n\n$deviceListText\n\n请选择要连接的设备:"
}
builder.setMessage(message)
// 创建选择按钮
builder.setPositiveButton("选择第一个设备") { _, _ ->
if (limitedDevices.isNotEmpty()) {
onDeviceSelectedListener?.invoke(limitedDevices[0])
}
}
// 如果有多个设备,添加更多选择按钮
if (limitedDevices.size > 1) {
builder.setNeutralButton("选择第二个设备") { _, _ ->
onDeviceSelectedListener?.invoke(limitedDevices[1])
}
}
builder.setNegativeButton("取消") { _, _ -> dismiss() }
}
return builder.create()
}
⚠️ 注意事项
1. 按钮位置
- 添加了50dp的顶部边距
- 确保按钮在状态栏下方
- 适应不同屏幕尺寸
2. 对话框性能
- 限制最多显示8个设备
- 使用简单的文本列表
- 提供快速选择按钮
3. 设备选择
- 第一个设备:点击"选择第一个设备"
- 第二个设备:点击"选择第二个设备"
- 更多设备:可以修改代码添加更多按钮
🎉 预期效果
启动时:
- ✅ 按钮位置合理,完全可见
- ✅ 界面布局清晰
- ✅ 状态信息正常显示
扫描时:
- ✅ 扫描过程流畅
- ✅ 设备发现信息及时更新
对话框:
- ✅ 快速弹出,无卡顿
- ✅ 设备列表清晰显示
- ✅ 选择按钮响应及时
连接后:
- ✅ 连接状态正确显示
- ✅ 按钮状态正确更新
- ✅ 可以开始数据处理
现在可以测试修复后的按钮位置和对话框性能了!🎉