一、Android项目结构:
二、各文件夹和文件的作用:
1. manifests文件夹:AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.firstapplication">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.FirstApplication"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
- 系统配置文件,位于整个项目的根目录下,是Android应用程序中重要的清单文件。
- 为应用程序的启动和运行提供必要的基本信息。
- 仅包含一个
<application></application>
标签,代表整个app。 - 包含多个
<activity></activity>
标签,代表多个不同页面。 - 描述了应用程序中的全局数据,包括了应用程序包名,组件(activities, services, 等等),它们各自的实现类,各种能被处理的数据和启动位置。
- 关于文件中的
<intent-filter>
标签:
android.intent.action.MAIN
:决定应用的入口Activity,也就是我们启动应用时首先显示哪一个Activity。android.intent.category.LAUNCHER
:表示activity应该被列入系统的启动器(launcher)(允许用户启动它)。Launcher是安卓系统中的桌面启动器,是桌面UI的统称。- action和category都是Intent的组成部分,前者表示意图的动作,后者表示意图的类别。所以对于上面这段话,我的理解是:android.intent.action.MAIN表明了一个应用启动时首先启动这个Activity的动作。怎样启动呢?android.intent.category.LAUNCHER告诉了我们动作是什么。
2. R.Java文件:
- 会自动收录当前应用程序中所有的资源,并根据这些资源建立对应的ID,包括:布局资源、控件资源、String资源、Drawable资源等。
- 我们可以简单的把R.java理解成是当前Android应用的资源文件的字典。
- 该文件自动生成,自动维护,程序开发人员不能对其进行修改。
- 当用户向drawable-hdpi、drawable-ldpi、drawable-mdpi文件夹中增加图片,或者在main.xml文件中配置控件以及在strings.xml文件中定义文本信息都会自动在此文件中生成一个唯一的ID,以供程序使用。
- project视图下打开改程序可查看R.java文件在硬盘中存储的位置:app/build/generated/not_namespaced_r_class_sources/debug/r/[packagename]/R.java。
3. res:资源文件夹:
- 资源文件夹,包括图片、声音、布局文件、菜单等。项目中应到的资源都包含在此文件夹中,可以看到子文件夹比较多。
- 应用程序运行的时候,res中的内容会在启动的时候载入内存。
- res 文件夹中放置的所有的资源文件都会在R.java中生成相应的id。
- res/drawable: 主要存放一些用户自定义的形状和背景选择器(用于改变一些控件的背景颜色)。这些资源文件都是xml类型。
- res/layout: 界面布局文件,文件类型为xml。可以控制各个Activity中控件的位置及相关的属性。在Android的应用程序中有两种方式生成用户界面。一种是通过静态的界面描述文件,另外一种就是通过Java文件。
- res/mipmap: 包含一些应用程序可以用的原生图片文件(png,gif,jpg)。Google强烈建议使用mipmap存放图片文件,可以提高系统渲染图片的速度,减轻CPU的压力。
- res/values: 放置应用程序中需要用到的值,如:我们常用的字符串,颜色值,数组等。Strings.xml里存储的都是键值对,这些键值对会在R.java中生成相应的id。这样,我们需要使用这些资源时,就可以使用相应的id来引用这些资源。好处: 把所有的资源提供了统一的入口,修改程序会变得更加方便。 该目录中包含了所有的XML格式的参数描述文件,如string.xml字符串描述文件、color.xml颜色描述文件、style.xml样式描述文件和array.xml数组描述文件等。
4. java文件夹: 项目的源文件
- Android应用程序主要由资源文件和代码文件两部分构成。资源文件以xml格式描述,代码文件主要为java文件,用于实现业务逻辑。
- Java目录:项目的源代码文件,所有用户自己添加的或者允许用户修改完成一定业务逻辑的java文件全部存放于该目录下。该目录下的java文件以用户所声明的包自动组织。
- res 文件夹中放置的所有的资源文件都会在R.java中生成相应的id。
- 在Android的应用程序中有两种方式生成用户界面。一种是通过静态的界面描述文件,另外一种就是通过Java文件。
5. MainActivity.java :
- 为了在Android系统上显示图形界面,需要使用代码继承Activity类。
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
- 关于
R.layout.activity_main
的说明:res 文件夹中放置的所有的资源文件都会在R.java中生成相应的id静态常量,表示R.java文件中layout内部类的activity_main静态常量,即使用了res/layout文件夹内的activity_main.xml文件。 onCreate()方法
会在Activity首次启动时会被调用。savedInstanceState参数
是保存当前Activity的状态信息,如果一个非running的Activity因为资源紧张而被系统销毁,当再次启动这个Activity时,可以通过这个保存下来的状态实例,即通过saveInstanceState获取之前的信息,然后使用这些信息,让用户感觉和之前的界面一模一样,提升用户体验。public void setContentView (int layoutResID)