Android-UI组件|青训营笔记
这是我参加「第四届青训营」笔记创作活动第二天
1.1UI组件
例:输入框组件、按钮组件、文本组件、播放器组件、图片组件、列表组件
其内部展示图
高级UI组件
常规UI组件大多是view,高级UI组件大多是ViewGroup、比常规组件多的功能
view和viewGroup的关系
部分view继承关系
1.2布局
linearLayout
RelativeLayout
FrameLayout
前景图像:永远处于FrameLayout最上层,不会被覆盖的图片
ConstrainLayout
布局总结
布局加载
1.编写布局文件
2.注册Manifest
3.设置布局文件
布局解析
1.3渲染
为什么Activity在onResume()之后显示?
onCreate():setContentView()创建了DecorView,并将layout中view添加至DecorView中 onCreate():ActivityThread.handleResumeActivity()
- windowManagerImpl.addView
- 创建ViewRootImpl
- ViewRootImpl.setView
- ViewRootImpl.requestLayout(),触发页面绘制
View绘制流程
页面绘制流程
Vsync信号
UI渲染
渲染总结
1.4交互
- 获取View实例
- 添加相应的监听器
View和ViewGroup关系
常用交互时间监听
屏幕触摸事件
所有交互事件都来自于对屏幕触摸信号的处理,View.onClickListener()等常用点击事件时对交互事件的二次封装
触摸事件
当用户触摸屏幕时,系统将建立一系列的MotionEvent对象,MotionEvent包含关于发生触摸的位置和时间等信息MotionEvent对象被传递到相应的捕获函数中例如ontouchEvent()
触摸事件分发
事件处理流程
交互总结
1.5动画
帧动画
补间动画
属性动画
小结
两类动画根本区别在于:是否改变动画本身的属性
- 视图动画:不改变动画的属性,在动画过程中仅对图像进行变换来达到动画效果,无论动画结果在哪,该View的位置和响应都是在原地,不会根据结果移动
- 属性动画:改变了动画属性因属性动画在动画过程中对动态改变了对象属性,从而达到动画效果
\