当前位置: 首页 > news >正文

合作网站开发公司网站建设模板html

合作网站开发公司,网站建设模板html,辽宁网络推广公司,梁山网站建设电话前文http://blog.csdn.net/sahadev_/article/details/49072045虽然讲解了LayoutInflate的整个过程#xff0c;但是其中很多地方是不准确不充分的#xff0c;这一节就详细讲一下我们上一节遗留的细节问题#xff0c;我们遗留的问题有这些#xff1a; 1.在PhoneWindow的setC…前文http://blog.csdn.net/sahadev_/article/details/49072045虽然讲解了LayoutInflate的整个过程但是其中很多地方是不准确不充分的这一节就详细讲一下我们上一节遗留的细节问题我们遗留的问题有这些 1.在PhoneWindow的setContentView里我们看到了一个mLayoutInflater对象我们还没清楚它从哪来 2.mLayoutInflater对象后来所调用的那些方法有没有被重载 3.mFactorymFactory2 mPrivateFactory这三个对象是否不为空如果系统默认给它设置了值那么后来生成的View是不是就是通过它们来设置的呢 好接下来就让我们一起把这些问题解开 1. 我们先来看看mLayoutInflater从哪来我们推测它极有可能和我们一样是使用这样的方式得来的 LayoutInflater inflater (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);但这仅仅是推测我们要看到实际的代码 public PhoneWindow(Context context) {super(context);mLayoutInflater LayoutInflater.from(context);}通过查看源码我们可以得知在 PhoneWindow的构造方法里是LayoutInflater.from(context);的方式对mLayoutInflater对象进行了初始化看来它也是和我们一样使用了同一个系统提供的LayoutInflater对象那么系统提供的这个LayoutInflater对象是在哪被构造和添加进去的呢这我们就需要去Context.getSystemService方法里一探究竟了 我们知道getSystemService其实调用的就是ContextImpl的方法ContextImpl是Context的具体实现类我们进入ContextImpl的getSystemService中一探究竟 public Object getSystemService(String name) {ServiceFetcher fetcher SYSTEM_SERVICE_MAP.get(name);return fetcher null ? null : fetcher.getService(this);}好看来所有的服务都是通过SYSTEM_SERVICE_MAP取出来的那么我们看看这些服务什么时候被添加进去的在 ContextImpl这个类中我们看到有个静态方法 private static void registerService(String serviceName, ServiceFetcher fetcher) {if (!(fetcher instanceof StaticServiceFetcher)) {fetcher.mContextCacheIndex sNextPerContextServiceCacheIndex;}SYSTEM_SERVICE_MAP.put(serviceName, fetcher);}看来所有的服务都是通过它加进去的那什么时候加进去的呢我们在这个类当中可以看到一段很长的静态代码块在代码块中发现了它的身影 static {...registerService(LAYOUT_INFLATER_SERVICE, new ServiceFetcher() {public Object createService(ContextImpl ctx) {return PolicyManager.makeNewLayoutInflater(ctx.getOuterContext());}});...}好吧看来系统系统的 LayoutInflater的对象其实是由PolicyManager.makeNewLayoutInflater(ctx.getOuterContext());这个方法构造出来的又是PolicyManager我们刚才看到它执行的makeNewWindow看来它做了不少事情 不用多说我们直接进入Policy中看不清楚这个过程的同学可以直接看这里 http://blog.csdn.net/sahadev_/article/details/49072045public LayoutInflater makeNewLayoutInflater(Context context) {return new PhoneLayoutInflater(context);}噢原来所有的工作都是它在干啊到这里我们第一个问题就清楚了。 2.mLayoutInflater对象后来所调用的那些方法有没有被重载其实这个问题我们直接进PhoneLayoutInflater中就可以知道答案 /** Override onCreateView to instantiate names that correspond to thewidgets known to the Widget factory. If we dont find a match,call through to our super class.*/Override protected View onCreateView(String name, AttributeSet attrs) throws ClassNotFoundException {for (String prefix : sClassPrefixList) {try {View view createView(name, prefix, attrs);if (view ! null) {return view;}} catch (ClassNotFoundException e) {// In this case we want to let the base class take a crack// at it.}}return super.onCreateView(name, attrs);}噢原来我们在上一篇文章当中分析的onCreateView方法是没有被调用的那看来父类中的这个方法的功能是不满足的那我们分析分析被复写的这个方法 我们可以看到这个方法内部在遍历一个字符串数组这个字符串数组被定义在类里 private static final String[] sClassPrefixList {android.widget.,android.webkit.,android.app.}; 在上一篇文章当中我请大家在onCreateView中注意调用createView方法的第二个参数是android.view.这里被重写看来是不满足了子类实现了更为强大的功能支持了更多的包进行加载它这个过程一直在尝试去创建View,直到成功。好我们第二个问题也解决完了。 3.mFactorymFactory2 mPrivateFactory这三个对象是否不为空看来这个问题我们就都知道了PhoneLayoutInflater在构造的时候调用的是 public PhoneLayoutInflater(Context context) {super(context);}后来也没有对它进行什么设置所以看来它们都是空这里这3个对象是开放给我们使用的我们可以在View被加载的时候动态的修改它们的效果这是个很强大的功能比如动态修改皮肤什么的希望你们可以手动去实现一下☺谢谢。
http://wiki.neutronadmin.com/news/371319/

相关文章:

  • 做网站值钱吗wordpress极速优化
  • 移动应用开发适合女生吗哈尔滨网站优化排名
  • 我想在阿里巴巴网站开店 怎么做企业wordpress主题免费下载
  • 做qq空间动态皮肤网站网页美工设计培训学校哪家好
  • 做阀门网站电话号码注册域名之后怎么做网站
  • 网站开发公司首页网站概念设计
  • 有没有专门做衣服搭配的网站专业零基础网站建设教学公司
  • 旅游网站开发流程重庆百度优化
  • 如何在微信上做广告新站seo优化快速上排名
  • 视觉创意设计公司商城网站不易优化
  • 外贸建站哪家织梦网站标题被改
  • 定制网站建设官网wordpress 表格小工具
  • 青岛做公司网站的多吗自己做的网站数据库
  • 什么网站有高端定制案例国内建筑公司排名
  • wordpress多站点 文章导入怀柔富阳网站建设
  • 兼职做问卷调查的网站好做网站的岗位好吗
  • 网站建设公众号开高端企业网站建设制作
  • 贵州网站建设设计公司哪家好网站建设的困难
  • 网站建设系统规划电商小程序定制开发
  • 网站推广策划书自己可以学着做网站吗
  • 怎么帮助网站推广wordpress 计数
  • 广告设计网站官网网络营销模式
  • 邵阳建网站自己建站模板
  • 网站被百度惩罚怎么办邢台市政建设集团网站
  • linux做网站教程排版
  • 公司网页网站建设+ppt模板下载网站设计开发报价
  • 国家补贴软件网站开发政策做外贸哪些国外网站可以推广
  • dedecms医院网站wap模板(橙色)腾讯云网站搭建流程
  • 网站建设都分几个阶段平面设计接单网站有哪些
  • 企业网站怎么搭建wordpress 特效插件