Android学习笔记

Posted 木道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android学习笔记相关的知识,希望对你有一定的参考价值。

前言:

  最近想学android开发,暑假过后的校招可能会找Android方面的工作。我选择的教材是郭霖前辈写的《第一行代码》,这本书早在14年出版,且出版之前,郭霖前辈的博客就已经在CSDN上积攒了很多的人气。因为我之前对Android缺乏了解,平时也很少关注CSDN的技术博客,因此我是这次想学习Android的时候,才了解到郭霖前辈,了解了这本书,深感惭愧。我决定把我学习这本书的过程作为学习笔记写下来,一方面是在写博客的过程对学习的知识再做一次沉淀,另一方面,如果我的博文有幸能够被其它初学者看到,也许能够对他们有帮助。如果能被比我厉害的前辈们看到,指出我博客中的纰漏,对我自己也有帮助。


 

第一章  开始启程,你的第一行Android代码

 

一  Android系统架构
学习Android编程,最好先了解Android的系统架构,如下图所示,分为四个层次。
  • Linux内核层:这一层为各种硬件提供驱动
  • 库:包括系统运行时库(Android Runtime)和C/C++库(Libraries)
  • 应用框架:提供应用程序可能会使用到的各种API
  • 应用层:所有的应用程序

更加具体的内容可以参见吴秦前辈的博客http://www.cnblogs.com/skynet/archive/2010/04/15/1712924.html

 
二     Android四大组件
  这四个组件的具体作用,后面的章节才会提到,我这里也就先略过。
  • 活动(Activity):所有Android应用程序的门面,在APP中能看到的东西,都是放在活动中的。
  • 服务(Service):用户无法看到,在后台默默运行。
  • 广播接收器(Broadcast Receiver):允许程序接收来自各处的广播消息,程序也可以向外发送广播。
  • 内容提供器(Content Provider):使应用程序之间能够共享数据。
三     Android Studio中的项目组成
     郭霖前辈的著作中使用的编程环境是Eclipse,而我使用的是Android Studio,Android Studio提供多种结构(Android、Project Files等),我个人比较常用的是Android,这也是默认的结构,下面我就基于Android结构介绍一下。
  • manifests:存放AndroidManifest.xml配置文件,这是整个Android项目的配置文件,项目中所用到的四大组件都必须在这里注册。
  • java:项目的源代码,现在这个刚创建的项目里只有孤零零的一个MainActivity文件。
  • res:resource的缩写,存放各种资源文件。layout存放布局文件,drawable和mipmap都用于存放图片,常用的是drawable,values存放字符串。其中drawable里面的每张图片,都会有好几个不同分辨率的副本,以便兼容不同的机型或者版本。 
四     初步探索HelloWorld项目
     我创建了一个HelloWorld项目,刚创建的项目内容很简单,我们只需研究AndroidManifest.xml、MainActivity、layout文件夹中的activity_main.xml、values文件夹中的strings.xml 四个文件即可。
     1、AndroidManifest.xml:
  
  我们只看android:label="@string/app_name" 这一行,这一行表示项目的label存储在strings.xml中,且字符串的名称(相当于一个字符串的id,可以根据这个id找到字符串)为app_name。
  打开strings.xml,可以看到果然存储了一个名称为app_name的字符串,字符串的具体内容为:HelloWorld
  
  此时如果让项目生成一个apk,下载到手机进行安装,就会发现APP的名字叫作HelloWorld,如果将app_name的字符串内容修改为Goodbye,那么APP的名字就是Goodbye。

  回到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:

  看完上文,你应该已经了解到这个文件的作用了,就是存储字符串的地方。

 
 
     

以上是关于Android学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Android学习笔记(34):Android菜单

android学习笔记

Android学习笔记:Android Service组件深入解析

Android学习笔记

Android:学习笔记

Android学习笔记-----------布局