常规&高级UI编程|青训营笔记
这是我参与「第四届青训营」笔记创作活动的的第3天
01 UI组件
UI:User Interface
图形用户界面
UI界面由多个不同功能的UI组件构成
Android SDK提供了大量的UI组件
Package: android.widget
UI组件的属性和方法:通用属性和方法、特定属性和方法
常用UI组件的使用
原点在左上角 Margin、Padding gravity <-> layout_gravity
高级UI组件:ViewGroup(包含View)
02 布局
大小、排列、层级
常用布局:
LinearLayout:线性布局
RelativeLayout:相对布局
FrameLayout:层级布局
ConstraintLayout:关联(对齐)布局
03 渲染
布局加载-> 布局解析-> UI渲染
布局加载:编写布局文件-> 注册Manifest-> 设置布局文件
布局解析:LayoutInflater\creatView
04 交互
获取View示例-> 添加相应监听器
常用交互事件监听器:
- onClick()
- onLongclick()
- onFocusChange()
- onKey()
- onTouch()
触摸事件-MontionEvent
- ACTION_DOWN
- ACTION_UP
- ACTION_MOVE
- ACTION_CANCEL
- ACTION_POINTER_DOWN
- ACTION_POINTER_UP
触摸事件分发: Activity -> ViewGroup -> View
05 动画
帧动画、补间动画、属性动画
帧动画
作用对象:View
原理:将动画分解为帧的形式,按顺序与间隔播放一组图片
特点:使用简单、方便,功能单一,容易OOM
应用场景:固定动画
补间动画
作用对象:View
原理:通过确定开始与结束样式,中间样式由系统通过插值器补充
动画类型:透明度动画、旋转动画、缩放动画、平移动画
特点:简单方便,不能控制属性
应用场景:转场动画
插值器:Interpolater,可以自行设置
属性动画
作用对象:任意JAVA对象
原理:在指定时间间隔内,通过不断对值的改变,实现动画效果
特点:作用范围更广,动画效果丰富
应用场景:与属性相关的复杂动画
根本区别:是否改变动画本身的属性
06 自定义UI
创建View:四种不同的构造器(不同的应用场景)
处理View布局:复写方法(onMeasure\onLayout\onSizeChanged)
绘制View:核心类:Paint、Canvas
处理用户交互:交互事件:up\down\move\cancel
处理动画:选择合适的动画类型,做监听