标签:current lld 微软雅黑 包含 文件解析 final line 产生 微软
public void setContentView(int layoutResID) {getWindow().setContentView(layoutResID);initWindowDecorActionBar();}public void setContentView(View view) {getWindow().setContentView(view);initWindowDecorActionBar();}public void setContentView(View view, ViewGroup.LayoutParams params) {getWindow().setContentView(view, params);initWindowDecorActionBar();}

public void setContentView(int layoutResID) {// Note: FEATURE_CONTENT_TRANSITIONS may be set in the process of installing the window// decor, when theme attributes and the like are crystalized. Do not check the featurebefore this happens.if (mContentParent == null) {installDecor();} else if (!hasFeature(FEATURE_CONTENT_TRANSITIONS)) {mContentParent.removeAllViews();}if (hasFeature(FEATURE_CONTENT_TRANSITIONS)) {final Scene newScene = Scene.getSceneForLayout(mContentParent, layoutResID,getContext());transitionTo(newScene);} else {mLayoutInflater.inflate(layoutResID, mContentParent);}final Callback cb = getCallback();if (cb != null && !isDestroyed()) {cb.onContentChanged();}}
@Overridepublic void setContentView(View view) {//从这里就可以解释,为什么调用setContentView(View)时,被添加的View的宽高都是无效的,而是MATCH_PARENTsetContentView(view, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));}@Overridepublic void setContentView(View view, ViewGroup.LayoutParams params) {// Note: FEATURE_CONTENT_TRANSITIONS may be set in the process of installing the window// decor, when theme attributes and the like are crystalized. Do not check the featurebefore this happens.if (mContentParent == null) {installDecor();} else if (!hasFeature(FEATURE_CONTENT_TRANSITIONS)) {mContentParent.removeAllViews();}if (hasFeature(FEATURE_CONTENT_TRANSITIONS)) {view.setLayoutParams(params);final Scene newScene = new Scene(mContentParent, view);transitionTo(newScene);} else {mContentParent.addView(view, params);}final Callback cb = getCallback();if (cb != null && !isDestroyed()) {cb.onContentChanged();}}

private void installDecor() {if (mDecor == null) {mDecor = generateDecor();mDecor.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);mDecor.setIsRootNamespace(true);if (!mInvalidatePanelMenuPosted && mInvalidatePanelMenuFeatures != 0) {mDecor.postOnAnimation(mInvalidatePanelMenuRunnable);}}if (mContentParent == null) {//根据窗口的风格修饰,选择对应的修饰布局文件,并且将id为content的FrameLayout赋值给mContentParentmContentParent = generateLayout(mDecor);//......//初始化一堆属性值}}
protected DecorView generateDecor() {return new DecorView(getContext(), -1);}
protected ViewGroup generateLayout(DecorView decor) {// Apply data from current theme.从xml主题中获取窗口相关的属性TypedArray a = getWindowStyle();//......//获取代码中对主题style的设置// Inflate the window decor.int layoutResource;int features = getLocalFeatures();//......//根据设定好的features值选择不同的窗口修饰布局文件,得到layoutResource值//把选中的窗口修饰布局文件添加到DecorView对象里,并且指定contentParent值View in = mLayoutInflater.inflate(layoutResource, null);decor.addView(in, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));mContentRoot = (ViewGroup) in;ViewGroup contentParent = (ViewGroup)findViewById(ID_ANDROID_CONTENT);if (contentParent == null) {throw new RuntimeException("Window couldn‘t find content container view");}//......//继续一堆属性设置,完事返回contentParentreturn contentParent;}
/*** Return the current Callback interface for this window.*/public final Callback getCallback() {return mCallback;}
public void setCallback(Callback callback) {mCallback = callback;}
final void attach(Context context, ActivityThread aThread,......mWindow.setCallback(this);......}

标签:current lld 微软雅黑 包含 文件解析 final line 产生 微软
原文地址:http://www.cnblogs.com/baiqiantao/p/580f3d5a2ccafd37c6a8d3dad54654b8.html