这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战
Android 是广义前端的一部分,写 UI 是 Android 开发者必备的基础技能,谁还不是个切图仔呢。
基于 View 的 UI 框架
先回顾一下之前的内容,Android App 的 UI 可以通过 xml 描述构建,我们用 TextView 绘制文字,用 ImageView 绘制图片,还用过 FloatingActionButton 实现一个悬浮的扁平风格按钮。这些都是「View」,Android 现有的 UI 框架是基于「View」的。
一个比较新的技术 Compose 是从根本上区别于 View 的不同框架,最近刚刚宣布 release,但效果不是很理想,虽然也可能是对复杂业务的优化经验不足,总之还不成熟,目前无法取代 View 体系。
为什么要有这些 UI 框架呢?
Android 也有提供绘制图形的基础 API,View 框架并不是唯一的选择,比如游戏开发就是通过游戏引擎直接接入系统的绘制 API,我们使用 View 框架是为了提高开发效率,降低开发难度。
比如 FloatingActionButton,如果全部自己绘制,需要考虑形状、尺寸、颜色、中间的图标和边缘阴影等效果,而且在另一个页面也想用的话就要再写一遍,非常不符合软件工程的(偷懒)思想。
「View」将复杂的绘制代码变成简单的参数配置,不仅开发简单,还便于迁移复用。
关于 Android 中的 View
View 可以分为单纯的 View 和复合的 ViewGroup,View 会描述自身的内容,可以被系统解析并绘制到屏幕上,ViewGroup 则是其他 View 的「容器」,除了自身的内容(比如背景)之外还负责安排子 View 的大小和位置等参数。
简单介绍一下开发中最最常用的各种 View:
- 基本类型
- ImageView | 图片
- TextView | 文字
- EditText | 文本输入
- 特殊绘制类型
- TextureView | 常用于视频
- SurfaceView | 常用于视频
- WebView | 渲染 Web 页面
- 布局类 ViewGroup
- ConstraintLayout | 约束布局
- FrameLayout | 帧布局
- LinearLayout | 线性布局
- 重复列表类 ViewGroup
- RecyclerView | 列表、网格、以及一切皆可实现
- ViewPager(和 ViewPager2)| 整页列表
结
今天加班,没时间准备 Demo 和代码了,就把想要分开写的两节文字合并到一起了,看起来可能有点枯燥,实在抱歉。每日打卡活动难免会有这样的情况,单篇的内容都很少,文章多了做成专栏一起看应该就好一些了…(我猜)
再次感谢阅读我的文章,对内容有任何疑问欢迎评论指出,🤓。