????????????????λ????????WindowManagerService?????????????????????????е??????У??????????????????ɡ???????????????????е?????????????????????????????????????????????????????Щ?????????????UI???????????????????????????????????н????????????????????????????????????У???????????????????????????????

????????Android???????????????????????????????д?????????з????????????д????????????TextView?????????Щ?????????????Button??EditText??CheckBox????????????????????????????????????????????????????????????????Щ??????????????????в??????????????????????????????????TextView?????????????????п????????????????????????????????????TextView????????

?????????????????????????????????????????????????????????????????????????????????????????????????л??????????UI????????????????????????н??????????????????????????TextView??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????о?????

?????????Android??ó?????(Activity)??????????????????????е???????????????ó????????Activity????????????PhoneWindow???????DecorView??????????ViewRoot????????????????У?PhoneWindow???????????????????DecorView?????????????????????????ViewRoot?????????????WindowManagerService?????????????????????????????????????????????????????View???????????????ν??????????γ??????????UI??????????????????????????TextView?????????????????????????????????DecorView???????????1?????

?????1 ????????????DecorView??TextView???????

?????1????????????????TextView?????Activity?????????????DecorView??TextView?????????????п????????

????1. ???????????????ViewRoot??????????????TextView????;

????2. DecorView???????????????????????ViewGroup???????????ViewGroup?????????View?????????;

????3. TextView???????????????????????????View??

???????????????????1?????Activity???????????????TextView?????UI??????????ü????????????

?????. TextView?????UI??????

?????????Android??ó?????(Activity)?????(Measure)??????(Layout)?????(Draw)??????????????????Activity?????UI??????????????????????????????????????

????1. ????

???????????????????????????????С?????п???????????д????View????????onMeasure??

????TextView?????????onMeasure??????????????

????[java] view plaincopyprint?

????public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {

????......

????@Override

????protected void onMeasure(int widthMeasureSpec?? int heightMeasureSpec) {

????int widthMode = MeasureSpec.getMode(widthMeasureSpec);

????int heightMode = MeasureSpec.getMode(heightMeasureSpec);

????int widthSize = MeasureSpec.getSize(widthMeasureSpec);

????int heightSize = MeasureSpec.getSize(heightMeasureSpec);

????int width;

????int height;

????//????TextView??????????

????......

????setMeasuredDimension(width?? height);

????}

????......

????}

????public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {

????......

????@Override

????protected void onMeasure(int widthMeasureSpec?? int heightMeasureSpec) {

????int widthMode = MeasureSpec.getMode(widthMeasureSpec);

????int heightMode = MeasureSpec.getMode(heightMeasureSpec);

????int widthSize = MeasureSpec.getSize(widthMeasureSpec);

????int heightSize = MeasureSpec.getSize(heightMeasureSpec);

????int width;

????int height;

????//????TextView??????????

????......

????setMeasuredDimension(width?? height);

????}

????......

????}

????????????????????frameworks/base/core/java/android/widget/TextView.java?С?