Android 如何在Eclipse中查看Android API源码 及 support包源码
原文网址:http://blog.csdn.net/vipzjyno1/article/details/22954775
当我们阅读android API开发文档时候,上面的每个类,以及类的各个方法都是已经写好的方法和控件,可是我们只是在搬来使用,不知道它的原理,它是如何被实现的。android系统是开源的,所以谷歌官方在每发布一个版本的时候都会放出它对应的API源码的,让我们可以深入了解android的API实现过程,这就是开源的魅力。如果我们从API源码的角度去了解了开发过程,那样对于作为开发人员的我们,便会对他有更深入的体会,有助于日后的软件开发。
比如查看Activity的源码,如图
也可以查看系统方法怎么去实现一个过程,
如每个activity设置界面时都会去调用的一个方法:setContentView(R.layout.welcome);
从代码中我们可以看到,这个方法其实就是系统分装好我们拿来用的简化版,我们也可以按照源码里面的
getWindow().setContentView(R.layout.welcome);
这样的实现效果都是一样的。
在例如系统提供的按钮控件Button:
不看不知道一看明白了,原来它的父类就是TextView,那在然我们看看TextView控件的源码:
可以发现,它的父类是View,安卓的系统控件都是继承了View类,画出来的,所以在我们想要自定义控件的时候,可以继承View去做出自己想要的控件。
在Eclipse中需要查看某个类的源码,直接按住Ctrl 然后点击想要查看的类或则方法,就会打开相对应的类文件,可是这是建立在配置好源source的情况下才会打得开,下面让我们去看看如何配置:
一.android API 源码
1.首先要先下载SDK下的对应版本API的源码Source for Android SDK
2.之后找到你所安装的SDK所在的目录,我的SDK目录路径是:C:\Users\Administrator\android-sdks
找到各个版本的对应sources文件夹
里面就是对应的你所下载版本的源文件
我们拿4.3来做个例子(android-19 就是对应4.3)
找到目录路径
C:\Users\Administrator\android-sdks\sources\android-19
之后右击你的项目,选菜单最下方的Properties --- Java Buld Path --- Libraries --- android 4.3 --- android.jar
点击Edit,
在上图所示输入框放入你前面源码的目录,之后项目会自动更新,之后便可以查看源码了。
二:查看对应的support拓展包的源码
下面以android-support-v4.jar为例子
1.先要下载SDK下的android support library,这个里面包含了最新版本的拓展包
之后找该拓展包到目录,这就是V4的架包路径,我的路径为:C:\Users\Administrator\android-sdks\extras\android\support\v4\src
在你所在的项目的LIB文件下,会有一个android-support-v4.jar架包,在该目录下建立文件命名为:android-support-v4.jar.properties,(其他V7什么的架包类似,在原架包名称后面加上.properties既可以),如下图所示:
我的是support v4的架包源码路径为C:\Users\Administrator\android-sdks\extras\\android\support\v4\src
之后打开你所创建的这个文件,在里面输入你该架包源码所在的位置路径:
如果是WINDOWS操作系统下,输入的路径为:C:\\Users\\Administrator\\android-sdks\\extras\\android\\support\\v4\\src
ndroid-support-v4.jar.properties文件中格式: src = C:\\Users\\Administrator\\android-sdks\\extras\\android\\support\\v4\\src
之后这步很关键,就是把这个项目CLOSE了,之后在OPEN,
之后我想查看V4架包的FRAGMENT这个类,就是通过按住CTRL在点击FRAGMENT,查看了,
通过源码去深入学习API的实现过程,可以让我们对android有更深入的体会和了解。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。