常规&高级UI编程|青训营笔记

94 阅读2分钟

常规&高级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示例-> 添加相应监听器

常用交互事件监听器:

  1. onClick()
  2. onLongclick()
  3. onFocusChange()
  4. onKey()
  5. onTouch()

触摸事件-MontionEvent

  1. ACTION_DOWN
  2. ACTION_UP
  3. ACTION_MOVE
  4. ACTION_CANCEL
  5. ACTION_POINTER_DOWN
  6. 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

处理动画:选择合适的动画类型,做监听