Android学习笔记(一)
前言:
最近想学Android开发,暑假过后的校招可能会找Android方面的工作。我选择的教材是郭霖前辈写的《第一行代码》,这本书早在14年出版,且出版之前,郭霖前辈的博客就已经在CSDN上积攒了很多的人气。因为我之前对Android缺乏了解,平时也很少关注CSDN的技术博客,因此我是这次想学习Android的时候,才了解到郭霖前辈,了解了这本书,深感惭愧。我决定把我学习这本书的过程作为学习笔记写下来,一方面是在写博客的过程对学习的知识再做一次沉淀,另一方面,如果我的博文有幸能够被其它初学者看到,也许能够对他们有帮助。如果能被比我厉害的前辈们看到,指出我博客中的纰漏,对我自己也有帮助。
第一章 开始启程,你的第一行Android代码
- Linux内核层:这一层为各种硬件提供驱动
- 库:包括系统运行时库(Android Runtime)和C/C++库(Libraries)
- 应用框架:提供应用程序可能会使用到的各种API
- 应用层:所有的应用程序
更加具体的内容可以参见吴秦前辈的博客http://www.cnblogs.com/skynet/archive/2010/04/15/1712924.html
![](https://images2015.cnblogs.com/blog/933805/201607/933805-20160702101651890-910693478.jpg)
- 活动(Activity):所有Android应用程序的门面,在APP中能看到的东西,都是放在活动中的。
- 服务(Service):用户无法看到,在后台默默运行。
- 广播接收器(Broadcast Receiver):允许程序接收来自各处的广播消息,程序也可以向外发送广播。
- 内容提供器(Content Provider):使应用程序之间能够共享数据。
![](https://images2015.cnblogs.com/blog/933805/201607/933805-20160702102630468-2071303143.jpg)
- manifests:存放AndroidManifest.xml配置文件,这是整个Android项目的配置文件,项目中所用到的四大组件都必须在这里注册。
- java:项目的源代码,现在这个刚创建的项目里只有孤零零的一个MainActivity文件。
- res:resource的缩写,存放各种资源文件。layout存放布局文件,drawable和mipmap都用于存放图片,常用的是drawable,values存放字符串。其中drawable里面的每张图片,都会有好几个不同分辨率的副本,以便兼容不同的机型或者版本。
![](https://images2015.cnblogs.com/blog/933805/201607/933805-20160702103424624-379524954.jpg)
![](https://images2015.cnblogs.com/blog/933805/201607/933805-20160702103602577-1547487220.jpg)
回到AndroidManifest.xml,可以看到<activity .... </activity>这一组内容,这是对MainActivity这个活动进行注册,没有在AndroidMainifest.xml里注册过的活动是不能使用的。
<intent-filter>这个标签里有两行代码,这两行代码的作用指示了这个Activity是项目的主活动,你一打开APP,第一眼看到的就是这个活动。
关于<activity>和<intent-filter>怎么使用,以后还会再提到。
2、MainAcitivity:
这是项目目前仅有的源代码,MainAcitivity 继承自AppCompatActivity类,这是Android系统提供的活动基类。MainAcitivity重写了基类的onCreate方法,这个方法是每个活动被创建时一定要执行的方法,因为每个活动必定有对应的布局文件,它必须通过读取布局文件,才能知道如何布置自己的界面。
我们看这一行代码:setContentView(R.layout.activity_main);这行代码读取了名为activity_main.xml的布局文件来进行布局,我们去activity_main.xml文件看看。
3、activity_main.xml:
可以看到布局文件里定义了一个<TextView>控件,这是一个文本控件,具体如何使用先略过不谈,只看android:text="Hello World!"这里,双引号的内容会作为文本显示在APP活动界面上,如果你修改这里的内容,那么APP上显示的内容就会改变。值得注意的是,Android程序的设计讲究逻辑与视图分离,不建议使用硬编码。因此,这里的Hello World!,我们最好把它拿到strings.xml里去,就像前面提到的app_name那样,我们可以在strings.xml里加入<string name="hello_world">Hello World!</string>,然后将android:text="Hello World!"改为android:text="@string/hello_world",如下:
这样整个逻辑就显得更加清楚,对字符串也可以进行统一的管理。
4、strings.xml:
看完上文,你应该已经了解到这个文件的作用了,就是存储字符串的地方。