第2章 Android应用的界面编程
依据电子工业出版社第4版完整目录,覆盖107个本页节点:从View树、布局管理器、控件族、AdapterView、对话框、菜单和ActionBar构造完整传统View界面
第2章 Android应用的界面编程
在《第2章 Android应用的界面编程》中,本页依据电子工业出版社《疯狂Android讲义》第4版完整目录独立重构,不复制原文。版本锁定李刚、2019年3月、764页、ISBN 9787121360091,以Android 9 系列、Android Studio与Java为基线;现代项目必须另建迁移层,不能无说明地把Compose或最新targetSdk规则写回原书语境。
学习目标
- 能解释“第2章 Android应用的界面编程”全部正式节点的组件所有者、生命周期、线程、权限和Android 9 系列版本边界。
- 能实现“从View树、布局管理器、控件族、AdapterView、对话框、菜单和ActionBar构造完整传统View界面”的最小垂直切片,并保存构建、设备操作、原始日志和断言。
- 能比较正常运行、旋转、后台、进程重建、权限拒绝与外部故障下的行为差异。
- 能设计推翻当前实现的反例,并凭View树、约束与测量记录、控件状态矩阵、列表回收轨迹和无障碍检查完成独立交接。
机制总览
第2章 Android应用的界面编程:机制路径
- 1
从项目合同与生命周期开始
在《第2章 Android应用的界面编程》中,第4版以近百个实例和两个综合项目组织知识,不是零散API列表。每个节点都要回答用户从哪里进入、哪个组件拥有工作、回调在哪个线程发生、哪些事实必须恢复、需要什么权限、外部系统如何失败,以及资源何时释放。
- 2
最小可执行切片
ScreenState reduce(ScreenState current, UiEvent event) return nextState(current, event);
- 3
线程、权限、状态与资源
在《第2章 Android应用的界面编程》中,主线程负责输入、生命周期分发和UI;文件、SQLite、网络、图片解码、OpenGL准备与长计算不得阻塞帧。后台结果返回前确认所有者仍有效,Service并不自动拥有后台线程,Receiver也不能无限运行。每个实现列出入口、线程、事实源、权限、取消点、关闭责任和用户可见失败。
章级决策实验
第2章 Android应用的界面编程:机制与证据
切换《第2章 Android应用的界面编程》的三个关键教学阶段,先解释机制,再用运行与失败证据验证结论。
选择推理阶段
当前阶段 · 从项目合同与生命周期开始
在《第2章 Android应用的界面编程》中,第4版以近百个实例和两个综合项目组织知识,不是零散API列表。每个节点都要回答用户从哪里进入、哪个组件拥有工作、回调在哪个线程发生、哪些事实必须恢复、需要什么权限、外部系统如何失败,以及资源何时释放。
可核验证据
在 Android 9.x/Java 基线上复现「从项目合同与生命周期开始」,保存构建与设备指纹、操作、线程/生命周期轨迹、状态快照,并注入一个权限、重建或外部服务失败。
学完《第2章 Android应用的界面编程》后,应能从输入和前置条件推导状态变化,并用可重复的构建、运行或边界测试证明结果。
失效—证据矩阵
第2章 Android应用的界面编程:失效与核验
从项目合同与生命周期开始
典型失效
若学习「从项目合同与生命周期开始」只复制正常路径示例而不声明组件 owner、线程、状态、权限与外部失败,应用会在旋转、进程重建、拒权或弱网时丢失行为。
核验证据
在 Android 9.x/Java 基线上复现「从项目合同与生命周期开始」,保存构建与设备指纹、操作、线程/生命周期轨迹、状态快照,并注入一个权限、重建或外部服务失败。
最小可执行切片
典型失效
若学习「最小可执行切片」只复制正常路径示例而不声明组件 owner、线程、状态、权限与外部失败,应用会在旋转、进程重建、拒权或弱网时丢失行为。
核验证据
在 Android 9.x/Java 基线上复现「最小可执行切片」,保存构建与设备指纹、操作、线程/生命周期轨迹、状态快照,并注入一个权限、重建或外部服务失败。
线程、权限、状态与资源
典型失效
若学习「线程、权限、状态与资源」只复制正常路径示例而不声明组件 owner、线程、状态、权限与外部失败,应用会在旋转、进程重建、拒权或弱网时丢失行为。
核验证据
在 Android 9.x/Java 基线上复现「线程、权限、状态与资源」,保存构建与设备指纹、操作、线程/生命周期轨迹、状态快照,并注入一个权限、重建或外部服务失败。
从项目合同与生命周期开始
在《第2章 Android应用的界面编程》中,第4版以近百个实例和两个综合项目组织知识,不是零散API列表。每个节点都要回答用户从哪里进入、哪个组件拥有工作、回调在哪个线程发生、哪些事实必须恢复、需要什么权限、外部系统如何失败,以及资源何时释放。↡负责创建、取消并最终释放组件、任务或资源的明确作用域连接Activity、Fragment、View、Service、Receiver、线程与媒体资源。
在《第2章 Android应用的界面编程》中,界面字段和进程单例不是可靠事实源。↡配置变化或进程重建后能从保存事实重新构造的最小用户状态要按大小和寿命放入Bundle、文件、SQLite或服务端。Intent、Provider、网络、定位、地图和系统服务构成↡跨组件或系统边界交换数据时必须验证的类型、权限、大小、时序与失败约束,成功响应只是其中一个样本。
在《第2章 Android应用的界面编程》中,本书准确反映Android 9时代。↡Android版本、targetSdk、设备能力、权限与依赖共同限定的行为适用范围要求先复现原书机制,再迁移组件导出、分区存储、通知、后台启动、位置和废弃API。↡由环境指纹、输入、操作、日志、状态快照和断言组成的可重放结论保证示例不是只在作者机器上可用。
最小可执行切片
先把业务状态转换与Android副作用分开,便于在设备之外验证不变量:
sealed interface ScreenState permits Loading, Ready, Failed {}
record Loading() implements ScreenState {}
record Ready(String key) implements ScreenState {}
record Failed(String reason, boolean retryable) implements ScreenState {}
ScreenState reduce(ScreenState current, UiEvent event) { return nextState(current, event); }固定环境并从命令行保留构建和设备证据:
./gradlew --no-daemon clean test assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
adb shell am force-stop org.example.app
adb shell monkey -p org.example.app 1
adb logcat -d -v threadtime > run.log先写行为合同,再执行用户动作与故障注入:
Given a pinned JDK, SDK, Gradle build, device API, locale, permission state, and input
When the owner is recreated after state saving or process death
Then durable facts reconstruct the same user-visible state
And cancelled work cannot update a destroyed owner
And denied permission, offline input, malformed data, and missing hardware remain recoverable在《第2章 Android应用的界面编程》中,三段代码分别约束状态模型、环境重放和行为结果。第4版源码使用当时Java/Android API;这里的状态骨架只说明测试边界,不冒充原书代码。真实项目还需要静态检查、仪器测试、无障碍检查和发布构建。
线程、权限、状态与资源
在《第2章 Android应用的界面编程》中,主线程负责输入、生命周期分发和UI;文件、SQLite、网络、图片解码、OpenGL准备与长计算不得阻塞帧。后台结果返回前确认所有者仍有效,Service并不自动拥有后台线程,Receiver也不能无限运行。每个实现列出入口、线程、事实源、权限、取消点、关闭责任和用户可见失败。
在《第2章 Android应用的界面编程》中,Intent、Provider、WebView、JSON、文件URI、地图Key、位置和传感器样本都按不可信输入处理。在《第2章 Android应用的界面编程》中,校验action、scheme、MIME、大小、授权、时效和响应者;导出组件最小授权;日志、截图与数据库不得泄露联系人、短信、位置、令牌或签名密钥。
在《第2章 Android应用的界面编程》中,性能以用户任务衡量:界面看首帧和掉帧,列表看回收与分配,媒体和图形看帧时间与内存,网络看超时和取消,传感器看采样与耗电,后台工作看约束与重复调度。比较时固定设备、构建类型、数据规模和网络条件。
在《第2章 Android应用的界面编程》中,现代迁移一次改变一个条件。在《第2章 Android应用的界面编程》中,AsyncTask、IntentService、旧Fragment、外部存储、后台Service、隐式广播、HTTP明文、旧定位和地图SDK都需要查当前合同;先保存Android 9基线,再迁移并保留行为差异、测试和回滚。
本章回顾
本页从“第2章 Android应用的界面编程”覆盖到“2.12 本章小结”,共107个正式目录条目。掌握标准是能沿“从View树、布局管理器、控件族、AdapterView、对话框、菜单和ActionBar构造完整传统View界面”解释组件与数据边界,运行正常、重建与失败实验,并让另一位开发者仅凭View树、约束与测量记录、控件状态矩阵、列表回收轨迹和无障碍检查重放结论。
练习
问题 1:“第2章 Android应用的界面编程”覆盖哪些正式节点和主线?
问题 2:怎样建立本页最小可执行实验?
问题 3:为什么只在正常路径运行不能证明完成?
问题 4:怎样设计能推翻实现的反例?
问题 5:从Android 9迁移到现代targetSdk时如何控制变量?
问题 6:达到独立交接标准需要什么?
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 生命周期所有者
负责创建、取消并最终释放组件、任务或资源的明确作用域。
- 可恢复状态
配置变化或进程重建后能从保存事实重新构造的最小用户状态。
- 外部合同
跨组件或系统边界交换数据时必须验证的类型、权限、大小、时序与失败约束。
- 版本边界
Android版本、targetSdk、设备能力、权限与依赖共同限定的行为适用范围。
- 证据链
由环境指纹、输入、操作、日志、状态快照和断言组成的可重放结论。
← 上一页:第1章 Android应用和开发环境 · 下一页:第3章 Android事件机制 →
原版目录概念补充核对
以下条目补齐官方目录中容易被示例主线掩盖的概念。它们不重复罗列目录,而是明确每项概念的机制、适用边界和验收证据。
2.1 界面编程与视图(View)组件:机制、边界与证据
第2章 Android应用的界面编程中的2.1 界面编程与视图(View)组件由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.1.1 视图组件与容器组件:机制、边界与证据
第2章 Android应用的界面编程中的2.1.1 视图组件与容器组件要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.1.2 使用XML布局文件控制UI界面:机制、边界与证据
第2章 Android应用的界面编程中的2.1.2 使用XML布局文件控制UI界面由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.1.3 在代码中控制UI界面:机制、边界与证据
第2章 Android应用的界面编程中的2.1.3 在代码中控制UI界面由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:用编程的方式开发UI界面:机制、边界与证据
第2章 Android应用的界面编程中的实例:用编程的方式开发UI界面由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.1.4 使用XML布局文件和代码混合控制UI界面:机制、边界与证据
第2章 Android应用的界面编程中的2.1.4 使用XML布局文件和代码混合控制UI界面由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:简单图片浏览器:机制、边界与证据
第2章 Android应用的界面编程中的实例:简单图片浏览器要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.1.5 开发自定义View:机制、边界与证据
第2章 Android应用的界面编程中的2.1.5 开发自定义View由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:跟随手指的小球:机制、边界与证据
第2章 Android应用的界面编程中的实例:跟随手指的小球要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.2 第1组UI组件:布局管理器:机制、边界与证据
第2章 Android应用的界面编程中的2.2 第1组UI组件:布局管理器由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.2.1 线性布局:机制、边界与证据
第2章 Android应用的界面编程中的2.2.1 线性布局由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.2.2 表格布局:机制、边界与证据
第2章 Android应用的界面编程中的2.2.2 表格布局由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:丰富的表格布局:机制、边界与证据
第2章 Android应用的界面编程中的实例:丰富的表格布局由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.2.3 帧布局:机制、边界与证据
第2章 Android应用的界面编程中的2.2.3 帧布局由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:霓虹灯效果:机制、边界与证据
第2章 Android应用的界面编程中的实例:霓虹灯效果要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.2.4 绝对布局:机制、边界与证据
第2章 Android应用的界面编程中的2.2.4 绝对布局由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.2.5 约束布局:机制、边界与证据
第2章 Android应用的界面编程中的2.2.5 约束布局由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.3 第2组UI组件:TextView及其子类:机制、边界与证据
第2章 Android应用的界面编程中的2.3 第2组UI组件:TextView及其子类由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.3.1 文本框(TextView)和编辑框(EditText)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.3.1 文本框(TextView)和编辑框(EditText)的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:功能丰富的文本框:机制、边界与证据
第2章 Android应用的界面编程中的实例:功能丰富的文本框要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.3.2 EditText的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.3.2 EditText的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.3.3 按钮(Button)组件的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.3.3 按钮(Button)组件的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:按钮、圆形按钮、带文字的图片按钮:机制、边界与证据
第2章 Android应用的界面编程中的实例:按钮、圆形按钮、带文字的图片按钮要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.3.4 使用9Patch图片作为背景:机制、边界与证据
第2章 Android应用的界面编程中的2.3.4 使用9Patch图片作为背景要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.3.5 单选钮(RadioButton)和复选框(CheckBox)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.3.5 单选钮(RadioButton)和复选框(CheckBox)的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:利用单选钮、复选框获取用户信息:机制、边界与证据
第2章 Android应用的界面编程中的实例:利用单选钮、复选框获取用户信息要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.3.6 状态开关按钮(ToggleButton)和开关(Switch)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.3.6 状态开关按钮(ToggleButton)和开关(Switch)的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:动态控制布局:机制、边界与证据
第2章 Android应用的界面编程中的实例:动态控制布局由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.3.7 时钟(AnalogClock和TextClock)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.3.7 时钟(AnalogClock和TextClock)的功能与用法要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:手机里的“劳力士”:机制、边界与证据
第2章 Android应用的界面编程中的实例:手机里的“劳力士”要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.3.8 计时器(Chronometer):机制、边界与证据
第2章 Android应用的界面编程中的2.3.8 计时器(Chronometer)要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.4 第3组UI组件:ImageView及其子类:机制、边界与证据
第2章 Android应用的界面编程中的2.4 第3组UI组件:ImageView及其子类由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:图片浏览器:机制、边界与证据
第2章 Android应用的界面编程中的实例:图片浏览器要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:强大的图片按钮:机制、边界与证据
第2章 Android应用的界面编程中的实例:强大的图片按钮要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:使用QuickContactBadge关联联系人:机制、边界与证据
第2章 Android应用的界面编程中的实例:使用QuickContactBadge关联联系人要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:可折叠的悬浮按钮:机制、边界与证据
第2章 Android应用的界面编程中的实例:可折叠的悬浮按钮要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.5 第4组UI组件:AdapterView及子类:机制、边界与证据
第2章 Android应用的界面编程中的2.5 第4组UI组件:AdapterView及子类由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.5.1 Adapter接口及实现类:机制、边界与证据
第2章 Android应用的界面编程中的2.5.1 Adapter接口及实现类由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:使用ArrayAdapter创建ListView:机制、边界与证据
第2章 Android应用的界面编程中的实例:使用ArrayAdapter创建ListView由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:使用SimpleAdapter创建ListView:机制、边界与证据
第2章 Android应用的界面编程中的实例:使用SimpleAdapter创建ListView由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.5.2 自动完成文本框(AutoCompleteTextView)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.5.2 自动完成文本框(AutoCompleteTextView)的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.5.3 可展开的列表组件(ExpandableListView):机制、边界与证据
第2章 Android应用的界面编程中的2.5.3 可展开的列表组件(ExpandableListView)由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.5.4 Spinner的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.5.4 Spinner的功能与用法要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.5.5 AdapterViewFlipper的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.5.5 AdapterViewFlipper的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:自动播放的图片库:机制、边界与证据
第2章 Android应用的界面编程中的实例:自动播放的图片库要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.5.6 StackView的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.5.6 StackView的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:叠在一起的图片:机制、边界与证据
第2章 Android应用的界面编程中的实例:叠在一起的图片要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.5.7 优秀的RecyclerView组件:机制、边界与证据
第2章 Android应用的界面编程中的2.5.7 优秀的RecyclerView组件由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:使用RecyclerView实现列表:机制、边界与证据
第2章 Android应用的界面编程中的实例:使用RecyclerView实现列表由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.6 第5组UI组件:ProgressBar及其子类:机制、边界与证据
第2章 Android应用的界面编程中的2.6 第5组UI组件:ProgressBar及其子类要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.6.1 进度条(ProgressBar)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.6.1 进度条(ProgressBar)的功能与用法要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.6.2 拖动条(SeekBar)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.6.2 拖动条(SeekBar)的功能与用法要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:通过拖动滑块来改变图片的透明度:机制、边界与证据
第2章 Android应用的界面编程中的实例:通过拖动滑块来改变图片的透明度要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.6.3 星级评分条(RatingBar)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.6.3 星级评分条(RatingBar)的功能与用法要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:通过星级改变图片的透明度:机制、边界与证据
第2章 Android应用的界面编程中的实例:通过星级改变图片的透明度要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.7 第6组UI组件:ViewAnimator及其子类:机制、边界与证据
第2章 Android应用的界面编程中的2.7 第6组UI组件:ViewAnimator及其子类由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.7.1 ViewSwitcher的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.7.1 ViewSwitcher的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:仿Android系统的Launcher界面:机制、边界与证据
第2章 Android应用的界面编程中的实例:仿Android系统的Launcher界面由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.7.2 图像切换器(ImageSwitcher)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.7.2 图像切换器(ImageSwitcher)的功能与用法要沿资源解码、内存布局、坐标变换、绘制命令和帧提交解释结果。使用固定图像和画布状态,比较缩放、裁剪、复用与释放,保存像素差、分配和帧时间,防止以 OOM 或失真换取表面速度。
实例:支持动画的图片浏览器:机制、边界与证据
第2章 Android应用的界面编程中的实例:支持动画的图片浏览器要沿资源解码、内存布局、坐标变换、绘制命令和帧提交解释结果。使用固定图像和画布状态,比较缩放、裁剪、复用与释放,保存像素差、分配和帧时间,防止以 OOM 或失真换取表面速度。
2.7.3 文本切换器(TextSwitcher)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.7.3 文本切换器(TextSwitcher)的功能与用法要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.7.4 ViewFlipper的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.7.4 ViewFlipper的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.8 各种杂项组件:机制、边界与证据
第2章 Android应用的界面编程中的2.8 各种杂项组件要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.8.1 使用Toast显示提示信息框:机制、边界与证据
第2章 Android应用的界面编程中的2.8.1 使用Toast显示提示信息框要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:带图片的消息提示:机制、边界与证据
第2章 Android应用的界面编程中的实例:带图片的消息提示要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.8.2 日历视图(CalendarView)组件的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.8.2 日历视图(CalendarView)组件的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:选择您的生日:机制、边界与证据
第2章 Android应用的界面编程中的实例:选择您的生日要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.8.3 日期、时间选择器(DatePicker和TimePicker)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.8.3 日期、时间选择器(DatePicker和TimePicker)的功能与用法要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:用户选择日期、时间:机制、边界与证据
第2章 Android应用的界面编程中的实例:用户选择日期、时间要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.8.4 数值选择器(NumberPicker)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.8.4 数值选择器(NumberPicker)的功能与用法要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:选择您意向的价格范围:机制、边界与证据
第2章 Android应用的界面编程中的实例:选择您意向的价格范围要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.8.5 搜索框(SearchView)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.8.5 搜索框(SearchView)的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:搜索:机制、边界与证据
第2章 Android应用的界面编程中的实例:搜索要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.8.6 滚动视图(ScrollView)的功能与用法:机制、边界与证据
第2章 Android应用的界面编程中的2.8.6 滚动视图(ScrollView)的功能与用法由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:可垂直和水平滚动的视图:机制、边界与证据
第2章 Android应用的界面编程中的实例:可垂直和水平滚动的视图要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.8.7 Android 9 改进的通知和通知Channel:机制、边界与证据
第2章 Android应用的界面编程中的2.8.7 Android 9 改进的通知和通知Channel要区分组件生命周期、任务线程、进程存活和系统后台政策,Service 本身不提供后台线程。记录启动来源、PID/TID、任务 owner 与停止点,用重复投递、进程回收、后台限制和迟到回调验证幂等与释放。
实例:加薪通知:机制、边界与证据
第2章 Android应用的界面编程中的实例:加薪通知要区分组件生命周期、任务线程、进程存活和系统后台政策,Service 本身不提供后台线程。记录启动来源、PID/TID、任务 owner 与停止点,用重复投递、进程回收、后台限制和迟到回调验证幂等与释放。
2.9 第7组UI组件:对话框:机制、边界与证据
第2章 Android应用的界面编程中的2.9 第7组UI组件:对话框要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.9.1 使用AlertDialog创建对话框:机制、边界与证据
第2章 Android应用的界面编程中的2.9.1 使用AlertDialog创建对话框由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:显示提示消息的对话框:机制、边界与证据
第2章 Android应用的界面编程中的实例:显示提示消息的对话框要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:简单列表项对话框:机制、边界与证据
第2章 Android应用的界面编程中的实例:简单列表项对话框要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:单选列表项对话框:机制、边界与证据
第2章 Android应用的界面编程中的实例:单选列表项对话框要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:多选列表项对话框:机制、边界与证据
第2章 Android应用的界面编程中的实例:多选列表项对话框要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:自定义列表项对话框:机制、边界与证据
第2章 Android应用的界面编程中的实例:自定义列表项对话框要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
实例:自定义View对话框:机制、边界与证据
第2章 Android应用的界面编程中的实例:自定义View对话框由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.9.2 对话框风格的窗口:机制、边界与证据
第2章 Android应用的界面编程中的2.9.2 对话框风格的窗口要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.9.3 使用PopupWindow:机制、边界与证据
第2章 Android应用的界面编程中的2.9.3 使用PopupWindow要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.9.4 使用DatePickerDialog、TimePickerDialog:机制、边界与证据
第2章 Android应用的界面编程中的2.9.4 使用DatePickerDialog、TimePickerDialog由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.9.5 使用ProgressDialog创建进度对话框:机制、边界与证据
第2章 Android应用的界面编程中的2.9.5 使用ProgressDialog创建进度对话框由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.10 菜单:机制、边界与证据
第2章 Android应用的界面编程中的2.10 菜单由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.10.1 选项菜单和子菜单(SubMenu):机制、边界与证据
第2章 Android应用的界面编程中的2.10.1 选项菜单和子菜单(SubMenu)由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.10.2 使用监听器来监听菜单事件:机制、边界与证据
第2章 Android应用的界面编程中的2.10.2 使用监听器来监听菜单事件由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.10.3 创建多选菜单项和单选菜单项:机制、边界与证据
第2章 Android应用的界面编程中的2.10.3 创建多选菜单项和单选菜单项由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.10.4 设置与菜单项关联的Activity:机制、边界与证据
第2章 Android应用的界面编程中的2.10.4 设置与菜单项关联的Activity由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.10.5 上下文菜单:机制、边界与证据
第2章 Android应用的界面编程中的2.10.5 上下文菜单由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.10.6 使用XML文件定义菜单:机制、边界与证据
第2章 Android应用的界面编程中的2.10.6 使用XML文件定义菜单由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:使用XML资源文件定义菜单:机制、边界与证据
第2章 Android应用的界面编程中的实例:使用XML资源文件定义菜单由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.10.7 使用PopupMenu创建弹出式菜单:机制、边界与证据
第2章 Android应用的界面编程中的2.10.7 使用PopupMenu创建弹出式菜单由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.11 使用活动条(ActionBar):机制、边界与证据
第2章 Android应用的界面编程中的2.11 使用活动条(ActionBar)由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.11.1 启用ActionBar:机制、边界与证据
第2章 Android应用的界面编程中的2.11.1 启用ActionBar由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.11.2 使用ActionBar显示选项菜单项:机制、边界与证据
第2章 Android应用的界面编程中的2.11.2 使用ActionBar显示选项菜单项由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
2.11.3 启用程序图标导航:机制、边界与证据
第2章 Android应用的界面编程中的2.11.3 启用程序图标导航要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。
2.11.4 添加Action View:机制、边界与证据
第2章 Android应用的界面编程中的2.11.4 添加Action View由 View 树、MeasureSpec、布局结果、绘制、输入焦点和可恢复状态共同决定。固定屏幕、字体和数据后改变一个尺寸、配置或复用条件,保存层级、回调顺序、无障碍语义与帧结果,避免只看静态截图。
实例:“标题”上的时钟:机制、边界与证据
第2章 Android应用的界面编程中的实例:“标题”上的时钟要在 Android 9 系列/Java 基线上写清入口、组件 owner、线程、可恢复状态、权限和外部失败。固定设备与输入,只改变一个生命周期或平台条件,用原始日志、状态快照和最终用户结果复核。