实习笔记-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

更新于

2025-04-15

许可协议

评论