这是我参与笔记创作活动的第二天
今天学习的主要内容是UI编程,下面是苟蒻的课堂笔记。如有错误,欢迎指正
组件概述
常规UI组件
常规UI组件多为View,多数仅完成自己本身的功能。
常规view的属性方法
- 通用属性和方法
- 特定属性和方法
高级UI组件
高级UI组件多是ViewGroup(下面简记VP),可以嵌套、包含更多UI组件,这是与常规UI组件的不同点。VP有更多的功能,可以包含View和VP。VP继承自View。
布局
布局的三个方向:方向 大小 层级
布局方式
- LinearLayout 线性布局(按顺序排队,可嵌套实现更多样式)
- RelativeLayout 相对布局(广播体操式布局,通过周围组件和父容器定位自己。可保持布局扁平化,提高性能)
- Framelayout 层级布局(叠罗汉)
- ConstraintLayout 约束布局(我觉得也可以记作对齐布局,形式和功能类似相对布局)
渲染
过程:编写布局文件->注册Manifest->设置布局文件
布局加载(setContentView)
创建DecorView,由LayoutInflater来加载、解析XML文件,根据XML文件生成View实例并添加到其VP中
布局解析(creatView)
根据XML中VIew类名找到相应View,将XML包含属性解析后传参给View构造器
交互
交互是指触摸事件传递到某个具体View并处理的过程
实现交互的过程
- 获取View实例
- 添加监听器
所有交互事件都来自于对屏幕触摸信号的处理,View.OnClickListener()等常用的点击事件是对交互事件的二次封装。
当用户触摸屏幕时,系统将建立一系列对象包含位置时间等细节信息,然后传递至相应捕获函数中。
事件分发:
- 顺序:Activity->ViewGroup->View
- 核心方法
动画
View动画
作用于视图控件,不可作用于View的属性以及其他对象,动画效果单一
帧动画
应用于连续性动画,播放时序可控
补间动画
确定视图样式开始与结束,由系统根据差值器补全动画。应用于转场动画、试图基础动画
属性动画
作用于任意Java对象,不局限于视图控件。应用于属性相关、复杂的动画
两种动画的根本区别在于是否改变动画本身属性
自定义UI
创建View 处理布局 绘制 交互 动画