framework的开发比应用层就要烦的多啦。做应用在eclipse中就足够了,用android系统中的控件等工具,或者是自己写个类来实现 特定的功能。而framework层的开发,需要往源码中添加代码、xml、图片、id等等数据,这个id可是费了我好大的劲才搞定的。在项目开始的一个 半月里,我探索、尝试了很多,现在把我的经验分享出来。网上关于framework层的开发信息很少,多是靠自己。
最有效的方式就是分 析android的源码,看google是怎样实现一个类的,以及类的层次。我现在看的主要是widget和app中的代码,其他的还没涉及。像 View,ViewGroup,Activity,ActivityThread都是非常重要的类,也是代码量很大的类,我只是大概地过了下,还没有仔细分析过。
values中几个文件的作用:
attrs.xml中定义的是类的属性,属性是为了能在xml文件中被引用到,换句话说就是指定类中变量(也就是属性的实际作用者)的值。这些属性会在类的构造函数中用到。看过一两个源码就会明 白,构造函数中的TypedArray其实就是属性的数组,数组的成员会被赋给类里的成员,完成从xml的初始化。类的构造函数一般有三个,一个是 Class(context),这个用于在代码中创建一个类,所以只包含一个上下文;Class(context, attrs)和Class(context, attrs, defStyle)用于从xml创建类的情况。
styles.xml中是各个控件的“样式”,样式由一个个属性所组成。我们在编辑xml文件的时候,不同的类所能设置的属性有共同的,也有不同的,都是由样式来控制的。具体可以去看styles.xml这个文件的内容。添加自定义的styles时,注意看看文件前面的注意事项,这个文件不要添加,有专门的文件去添加新的style,而且不能添加在文件中间,必须是在最后。下面的themes也是同理。
themes.xml其实也是样式,只是适用的范围大一点,这个我是参考网上别人的看法,自己还没研究过。
ids.xml是公共的id,也就是对应用层可见的id,id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name。这些值可以在代码中用android.R.id引用到
public.xml描述的是为attr、id、drawable所指定的一个32的id值,这个值在current.xml文件中会被用到。
当我们对public.xml做了改动后,执行make update-api命令,相应的current.xml就会添加这些改动。因为这些值按类型被放在不同的段上,类型相同的必须连续存放,不指定id值的话系统会自动计算出下一个值。
添加id(Object = findViewById(R.id.id_name)中的id_name)的方法:1)在ids.xml中添加公共id项,在public.xml中也添加相应的id项。这种办法没有兼容性,会与后面的版本产生冲突。
2)在ids.xml中添加公共id项,每一项前面加一行的注释,这样就不用在public.xml中添加相应的项了。源码中是/** @hide */的形式,这样current中就不会有相应的段了。
3)在自己写的xml中,使用android:id = "@+id/id_name"的形式,就和在eclipse中一样,搜一下会发现android源码中也有这么用的,这样ids.xml和public.xml都不用改,兼容性我还不确定。
添加其它需要应用层用到的公共资源,都需要在public.xml中进行相应的类型添加。比着葫芦画着瓢就成。只是在定义数值的时候,一定要是public.xml已存在的类型最大值加一,不能占用已有的数值,以免造成不兼容的情况。
上面这些希望能对大家有所帮助吧。
http://tech.it168.com/a2010/1108/1122/000001122996.shtml
分享到:
相关推荐
通过学习《Android Framework 开发揭秘》和深入阅读“Android11.0最新Framework解析(水印版).pdf”,开发者不仅能够提升对Android系统的理解,还能提升自身在系统优化、性能调试、安全防护等方面的能力,从而在...
《Android Framework 开发揭秘》这本书深入剖析了Android系统的内部运作机制,是Android开发者提升技术深度的宝贵资料。它涵盖了从系统启动到服务框架的构建,再到关键组件的工作原理,旨在帮助读者理解和掌握...
### Android Framework层的修改规则详解 #### 一、概述 Android Framework层是Android系统的核心组件之一,它提供了连接硬件抽象层(HAL)与应用程序层之间的桥梁。为了更好地理解和操作这一层,本文将详细介绍如何...
Android底层Framework开发是Android系统开发中的一个重要组成部分,它涉及到操作系统的核心功能,如系统服务、硬件接口、应用程序框架等。这份“android底层framework开发课件”提供了深入学习这一领域的宝贵资源。 ...
2.Android开发环境搭建与编译 3.Android编译过程分析 4.android.mk初识 5.Android.mk学习1 6.Android.mk学习2 7.Android.mk学习3 8.Android启动课程大纲 9.Android启动模式 10.init启动分析 11.走入init启动脚本 12....
-Android系统Framework层源码分析
"Android 驱动、HAL 层、Framework 层到应用层的总结" Android 驱动、HAL 层、Framework 层到应用层的总结是通过学习 Android 源码和分析 HAL 层的经验笔记。下面将详细介绍 Android 系统的体系结构、HAL 层、...
Android系统Framework层源码分析(深入理解Android重难点解析)
在Android系统中,Framework层是操作系统的核心组成部分,它介于硬件抽象层(HAL)和应用程序框架之间,提供了大量的服务和接口,使得开发者可以构建各种各样的应用程序。本篇内容将深入探讨Android Framework层的源码...
Android系统Framework层源码分析PPT教学课件.pptx
android14 framework jar 包
Android系统Framework层源码分析pdf,免积分哦!
Android Bluetooth Framework 应用层分析 ...Android Bluetooth Framework 应用层分析可以帮助开发者更好地理解 Android 中的蓝牙系统服务和蓝牙应用层的实现机理,提高 Android 应用的蓝牙功能开发效率。
Android 13.0 framework jar 包
Android的Framework层是Android操作系统的核心组成部分,它是连接应用程序和硬件之间的桥梁。理解其工作原理对于开发者来说至关重要,因为它直接影响到应用程序的性能、稳定性和可扩展性。本文将深入探讨Android ...
第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 ...
在Android系统中,框架层(Android Framework)是操作系统的核心部分,它定义了应用程序与系统服务之间的接口,使得开发者可以利用这些接口构建丰富的应用。本文将深入解析Android Framework层的源码,带你理解这一...
2. **负责Android平台应用层、framework层调试与开发** - 应用层涉及的是与用户直接交互的部分,例如UI设计与实现;framework层则更加底层,涉及系统级的服务与组件。 - 在此过程中,需要熟悉Android系统的架构,...
在Android系统中,Android Framework层扮演着核心的角色,它位于Linux内核之上,提供了管理和控制底层硬件接口(HAL)的功能。这一层通过一系列的服务和API来支持上层应用软件的操作,并且负责协调各个应用之间的...