实习笔记-16

Android View绘制流程

performTraversals()

获取Surface对象,performMeasure-丈量View树的各个view的大小,performLayout-对整个视图树进行布局,performDraw,对视图树进行绘制
源码解析

  1. 第一阶段,确定activity的宽高
1
2
3
4
5
6
7
8
9
if(Activity窗口是第一次被请求执行测量、布局和绘制操作){
if(如果窗口的类型是有状态栏的){
Activity窗口所需要的宽度和高度就是除了状态栏;
}else{
Activity窗口所需要的宽度和高度就是整个屏幕的宽高;
}
}else{
Activity窗口的宽高为frame成员变量中的保存的上一次测量、布局和绘制时的值;
}

排序

中文按照拼音排序

1
2
3
4
5
6
7
list.sortBy {
try {
URLEncoder.encode(it.label.lowercase(), "GBK")
} catch (e:Exception) {
""
}
}
1
2
3
Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
cmp.compare(s1,s2);
Arrays.sort(arr, cmp);

VectorDrawable

merge标签

将merge下的所有view直接添加到根标签下

作者

Meow Meow Liu

发布于

2022-03-22

更新于

2024-04-23

许可协议

评论