了解了下AppcompatActivity的中的兼容性的处理

控件的兼容性 v4 v7 v13 数字代表的是支持的api 的version
AppCompatActivity 是如何做到兼容性的
原理: 继承了AppCompatActivity 的Activity 都会在解析XML 的时候,将xml里面所有的系统控件转换为 appCompatButton。它的源码是怎样的呢? 所谓的兼容,就是一个着色问题!!!
AppCompatDelegate 的工作就是涂色。 替换:widget着色是通过这个widget 的layout 在inflation 的时候,被AppCompatDelegate 拦截下来,然后根据 控件的名字,强制被系统转换成为
以AppCompat 开头的控件。

1.首先查看继承的关系

2.AppCompatActivity 中代理的实现

LinearLayoutCompat

  • 这个类是干什么的,是控件还是组件,看他的初始化在干什么
  • 找到入口,一般是构造器
  • 找关键方法:onMeasure onLayout onDraw
  • onMeasure 是 计算子控件的大小,同时计算自己的大小。自己的宽高是由子空间的宽高决定的,根据摆放的方向不同而算法不同
  • onLayout 是将子控件的上下左右位置进行确定。然后布局到layout上面
  • onDraw 只用来画layout 自己的分割线,其他的内容由具体的item来绘制

原文:大专栏  Appcompat兼容性的处理


02-12 15:23