§1.2 Android项目结构及“Hello World”应用解析

五陵年少金市东,银鞍白马渡春风。这篇文章主要讲述§ 1.2 Android项目结构及“Hello World”应用解析相关的知识,希望能为你提供帮助。
书接上文,我们创建一个新的android项目,进入Android Studio开发页面,如下图:

§1.2 Android项目结构及“Hello World”应用解析

文章图片

左侧为项目工具窗口,通过项目工具窗口可以管理整个项目的相关文件
右侧为代码编辑区,我们可以在这里进行Android程序的开发工作
底部为调试区,在调试区可以进行程序的断点调试、日志打印,可以监视整个程序的内存消耗,从而有针对性的进行性能优化。
首先,通过查看左侧的项目工具窗口区,为大家介绍一个Android项目的基本结构:
§1.2 Android项目结构及“Hello World”应用解析

文章图片

如上图所示,在这里我们只需要关注图中app目录下的内容:
  • build目录:构建目录,相当于java SE开发中的bin目录,该目录为自动生成的,我们不需要关心里面的内容,也没必要改动其中的内容。
  • libs目录:依赖包目录,我们通常将第三方jar包放置在该目录下
  • src目录:src目录是我们日常开发中经常打交道的一个目录,其中androidTest目录和test目录用于测试,此处不做介绍,我们着重介绍的是main目录,main目录分为:java目录、res目录、AndroidManifest.xml文件。
????java目录:存放Java代码
【§ 1.2 Android项目结构及“Hello World”应用解析】????res目录:存放资源文件,其中:
????drawable存放图片资源
????layout存放布局文件
????mipmap也是存放图像资源的,在使用上和drawable没什么区别,但在缩放方面做了一定的优化,因此,我们通常将图标存在在mipmap中。
????value存放了一些字符串资源,我们在后面章节会详细介绍
????AndroidManifest文件:是对整个Android项目的配置文件
运行代码,得到运行结果:
§1.2 Android项目结构及“Hello World”应用解析

文章图片

可以看到,在手机上显示出了“Hello World”字符串
以盖房子为例,我们首先要有一张图纸,即我们要盖什么样的房子;
然后,我们要根据图纸建造房子;当然,我们还要为房子在“有关部门”登记。
 
其实Android程序的运行和盖房子的流程是类似的。
首先,查看xml布局文件代码:activty_main.xml
1 < ?xml version="1.0" encoding="utf-8"?> 2 < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3xmlns:tools="http://schemas.android.com/tools" 4android:id="@+id/activity_main" 5android:layout_width="match_parent" 6android:layout_height="match_parent" 7android:paddingBottom="@dimen/activity_vertical_margin" 8android:paddingLeft="@dimen/activity_horizontal_margin" 9android:paddingRight="@dimen/activity_horizontal_margin" 10android:paddingTop="@dimen/activity_vertical_margin" 11tools:context="com.rongma.helloworld.MainActivity"> 12 13< TextView 14android:layout_width="wrap_content" 15android:layout_height="wrap_content" 16android:text="Hello World!" /> 17 < /RelativeLayout>

暂时不必知道这个布局文件代码的含义,我们只需要知道,这个文件是用来“告诉机器”,我们要在手机上显示“Hello World”字符串。(类比到盖房子,其实这就是图纸)
然后,查看Java代码:MainActivity.java
1 public class MainActivity extends Activity { 2@Override 3protected void onCreate(Bundle savedInstanceState) { 4super.onCreate(savedInstanceState); 5setContentView(R.layout.activity_main); 6} 7 }

不是什么人都可以盖房子的,为了解锁“盖房子”的技能,我们要让MainActivity继承自Activity类,即所有描述独立页面的类都要继承自Activity类(或Activity的后代类),以此来获得“盖房子”技能。
然后,我们可以看到在onCreate方法中,调用了setContentView方法来获取布局。其中传入的参数为R.layout.activity_main. 这个方法用于获取到我们的“图纸”,并根据“图纸”来盖这个房子,并对房子进行操作。那么,此处的图纸就是R.layout.activity_main.
R.java文件是根据应用的资源文件自动生成的Android应用字典,在这个文件里,我们可以找到Android布局资源、图片资源、字符串资源等相关的映射。在这里,R.layout.activity_main 其实相当于调用了layout资源文件夹下的activity_main.xml布局文件
最后,要将“房子”登记到“有关部门”:
Android程序的“有关部门”------AndroidManifest.xml
之所以称AndroidManifest请单文件为“有关部门”,因为它是整个Android应用的全局描述文件,它说明了该应用的名称、图标、权限、组件等。
这是初始状态下,系统生成的AndroidManifest.xml清单文件:
1 < ?xml version="1.0" encoding="utf-8"?> 2 < manifest xmlns:android="http://schemas.android.com/apk/res/android" 3package="com.rongma.helloworld"> 4 5< application 6android:allowBackup="true" 7android:icon="@mipmap/ic_launcher" 8android:label="@string/app_name" 9android:supportsRtl="true" 10android:theme="@style/AppTheme"> 11< activity android:name=".MainActivity"> 12< intent-filter> 13< action android:name="android.intent.action.MAIN" /> 14< category android:name="android.intent.category.LAUNCHER" /> 15< /intent-filter> 16< /activity> 17< /application> 18 < /manifest>

在activity节点,我们可以看到android:name=".MainActivity" 此处相对应的就是com.rongma.helloworld.MainActivity文件。也就是对MainActivity这个文件进行了登记。
每一个页面新建之后,都需要在清单文件下进行注册,注册方法:
< activity android:name="Activity的文件名"> < /activity>

如果这个页面是“主页”,即刚进入app时显示的第一个页面,其注册方法:
< activity android:name="Activity的文件名"> < intent-filter> < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> < /intent-filter> < /activity>

总结:
我们要让“Hello World”显示在界面上:
首先,要在res/layout文件夹下,写一个xml布局文件(图纸)
然后,新建一个类,继承自Activity(解锁建造技能),通过setContentView方法获取布局文件(获取图纸)
最后,在AndroidManifest.xml文件下,进行注册(有关部门处登记)
 











    推荐阅读