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

北京seo顾问服务公司优化seo公司哪家好

北京seo顾问服务公司,优化seo公司哪家好,杭州网站优化推荐,页面设计时最好使用一种颜色2019独角兽企业重金招聘Python工程师标准 做Android应用的人都知道#xff0c;要一个apk适用多个不同的手机屏幕是很容易的#xff0c;就是在项目的res文件夹下面有多套相关的资源文件。程序运行的 时候#xff0c;Android系统会根据当前设备的信息去加载不同… 2019独角兽企业重金招聘Python工程师标准 做Android应用的人都知道要一个apk适用多个不同的手机屏幕是很容易的就是在项目的res文件夹下面有多套相关的资源文件。程序运行的 时候Android系统会根据当前设备的信息去加载不同文件夹下的资源文件。但是Android系统是怎么做到这一点的呢上网上搜了一下很少有这方 便的介绍只好自己研究下代码了。下面是我研究代码得到的结果正确性有待确认在这里分享一下。   这里以ICS上在Activity的onCreate()方法里面调用setContentView(int resourceID)为例介绍一下系统如何根据我们的idR.layout.xxxx找到合适的layout文件进行解析加载 如果你的res下面有三种不同的layoutlayout, layout-sw480dp和 layout-sw600dp这里的swNdp表示这个layout文件夹下面的布局文件只有在设备短边的最小宽带为N时才加载。你的 设备是800x480的分辨率那么这个apk安装在你的设备上就会加载 layout-sw480dp里面的布局文件。下面是framework的 java层调用链 Activity.setContentView(int resourceID) - PhoneWindow.setContentView(int resourceID) - LayoutInflater.inflate(int resource, ViewGroup root) - LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot) - Resources.getLayout(int id) - Resources.loadXmlResourceParser(int id, String type) - Resources.getValue(int id, TypedValue outValue, boolean resolveRefs) - AssetManager.getResourceValue(int ident, int density, TypedValue outValue, boolean resolveRefs) - AssetManager.loadResourceValue(int ident, short density, TypedValue outValue,  boolean resolve)   在上面的掉用链中 1. 最后加载的是哪个xml是由Resources.getValue(int id, TypedValue outValue, boolean resolveRefs)调用完成之后的outValue.string决定的因为outValue.string的值就是你的资源文件的具体路径 如   1) xxx/values/xxx.xml   2) xxx/layout-sw600dp/xxx.xml 2. AssetManager.loadResourceValue()调的是frameworks/base/core/jni /android_util_AssetManager.cpp里面的native方法 如何获得正确的outValue值在native方法俩面主要有以下几步   1) 调用frameworks/base/libs/utils/ResourceTypes.cpp 的ResTable::getResource()遍历所有资源文件   2) 在ResTable::getResource()里面调用ResTable::getEntry()来确定资源文件来自哪个entry即 layout,或者layout-swNdp由此可见ResTable::getEntry()是我们这个问题的关键   3) 在ResTable::getEntry()里面     a) 首先获取本设备的configurion信息屏幕分辨率屏幕大小locale横竖屏等。     b) 根据得到的本设备的configurion信息过滤掉不适应本设备的entry比如设备是800x480的那么超过此分辨率的资源 (例layout-sw600dp)就要被过滤掉实现在frameworks/base/include/utils /ResourceTypes.h中ResTable_config的match函数中     c) 对过滤后的resource进行最佳适配找到最符合的entry文件。因为之前已经将不符合的即大分辨率的entry已经被过滤掉了所以这里就找剩 下的最大的就是最佳适配的。实现在frameworks/base/include/utils/ResourceTypes.h中 ResTable_config的isBetterThan()函数中。 3. 我做了一个尝试就是想让800x480分辨率的设备上的应用都加载 layout-sw600dp里面的资源文件。所以将上面b步骤的 frameworks/base/include/utils/ResourceTypes.h里面ResTable_config的match函数改动 如下 /*if (smallestScreenWidthDp ! 0                smallestScreenWidthDp settings.smallestScreenWidthDp){            return false; }*/ if (smallestScreenWidthDp ! 0                smallestScreenWidthDp 600) {            return false ; } 我将settings.smallestScreenWidthDp强制换成了600这样的话所有比600dp小的包含600在内的资源文 件在做过滤时就被保留了下来而c步骤不做检查只找最大的所以layout-sw600dp就成了系统认为的“最合适”的资源问价了。   将重新编译frameworks/base/libs/utils/生成的lib库push到/system/libs下面再重启手机然后启动上述应用就可以了看见程序加载的layout-sw600dp的ui了。 转载于:https://my.oschina.net/zhuzihasablog/blog/205455
http://wiki.neutronadmin.com/news/149042/

相关文章:

  • 专业做网站哪个公司好石家庄网站建设解决方案
  • 网站开发税率多少钱小白测评做网站
  • 个人建网站有什么好处电子商务主要课程
  • 商城网站策划书怎么写公司网站的文案
  • 网站建设栏目管理哪里可以发广告
  • 做网站的公司首选智投未来办事处网站建设
  • 辽阳市建设行业培训中心网站昆明云南微网站制作
  • 深圳的网站设计网页设计模板流程图
  • 贵阳专业网站制作有没有那种帮人做ppt的网站
  • 织梦如何做中英文网站公司建设网站需求
  • 南昌市建设局网站用wordpress还是用框架
  • 公司装修款怎么入账汕头seo排名收费
  • 哪个网站建站好美食分享网站设计
  • dede网站本地访问速度慢什么是关键词
  • 网站建设运营创意字体logo设计免费
  • 免费网站制作在线软件开发工具免费下载
  • 给别的公司提供网站建设免费的虚拟电脑app
  • 站长之家域名查询排行学做网站论坛 可以吗
  • 网站布局方法分类企业网站主页设计模板
  • 音乐网站建设规划网页设计课程的总结
  • 彩票做的最好是个网站好乐清网
  • 目前网站在初级建设阶段_需要大量数据丰富包装盒网站模板
  • 网站设计seo九一制作厂网站app
  • seo如何优化网站推广农林科技公司网站模板
  • 龙岩论坛石家庄seo代理
  • 大连做网站科技有限公司哪个公司做网站最好深圳
  • 网站权重与排名浅谈中国比较有名的产品设计公司
  • 云南省建设培训网站企业宣传片制作软件
  • 建站seo推广复杂大型网站建设成本
  • 藁城手机网站建设热门的网站模板