android jar 包 意见反馈功能,android重点jar包详解.docx

本文探讨了Android中的View系统,从Activity的setContentView方法入手,详细解析了其内部工作原理,包括PhoneWindow、LayoutInflater的使用,以及布局XML文件的解析过程。通过对这些关键步骤的分析,帮助开发者深入理解Android视图系统的构建和渲染。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android重点jar包详解

深入理解View(一):从setContentView谈起

我们都知道?MVC,在Android中,这个?V?即指View,那我们今天就来探探View的究竟。在onCreate方法中,可以调用this.setContentView(layout_id),来设置这个Activity的视图,今天就从setContentView(...)说起吧。先编写一个简单的Activity:public class ViewDemoActivity extends Activity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.view_demo); }}查看父类Activity的setContentView方法: public void setContentView(int layoutResID) { getWindow().setContentView(layoutResID); ...}这个getWindow()指向哪里?我们在onCreate中打个log瞧瞧:D/ViewDemoActivity(3969): ernal.policy.impl.PhoneWindow原来是PhoneWindow,来看看它的setContentView方法: @Override public void setContentView(int layoutResID) { // 1 if (mContentParent == null) { installDecor(); } else { mContentParent.removeAllViews(); }

// 2 mLayoutInflater.inflate(layoutResID, mContentParent);

// 3 final Callback cb = getCallback(); if (cb != null && !isDestroyed()) { cb.onContentChanged(); } }我们分三步来介绍这个方法:第一步:判断父容器是否为空为空:生成Decor; (Decor是什么?参看 HYPERLINK "/p/16d156bdfd04" \t "_blank" 这篇文章)不为空:删除 contentParent 所有的子控件。第二步:解析layoutResID所代表的xml文件直接看LayoutInflater.inflate(...)方法: // 为节省篇幅,删除一些调试代码 public View inflate(int resource, ViewGroup root) { return inflate(resource, root, root != null); }

public View inflate(int resource, ViewGroup root, boolean attachToRoot) { XmlResourceParser parser = getContext().getResources().getLayout(resource); try { return inflate(parser, root, attachToRoot); } finally { parser.close(); } }

public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) { synchronized (mConstructorArgs) { final AttributeSet attrs = Xml.asAttributeSet(parser); Context lastContext = (Context)mConstructorArgs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值