一、分析项目目录结构的组成
已经学习了:一篇文章带你搞定 Android Studio 的安装入门及环境的搭建
在 Android Studio 中的目录结构如图,可以切换至真正的目录结构 Project
(1).gradle和.idea
:Android Studio 自动生成的一些文件,无需关心
(2)app
:项目中的代码、资源等内容放置在此处,开发工作也是在这个目录进行
(3)build
:编译时自动生成的文件,无需关心
(4)gradle
:这个目录下包含了gradle wrapper 的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。Android Studio默认没有
启用gradle wrapper的方式,如果需要打开,可以点击Android Studio导航栏→File→Settings→Build,
Execution, Deployment→Gradle, 进行配置更改。
(5).gitignore
:将指定的目录或文件排除在版本控制之外
(6)build.gradle
:项目全局的 gradle 构建脚本,通常内容不需要修改
(7)gradle.properties
:全局的 gradle 配置文件,配置的属性会影响到项目中所有的 gradle 编译脚本
(8)gradlew 和 gradlew.bat
:gradlew 是在 linux 或者 MAC 系统使用,gradlew.bat 是在 windows 使用
(9)local.propertis
:指定本机的 Android SDK 路径
二、分析 app 的目录结构
(1)build
:编译时自动生成的文件
(2)libs
:项目使用的第三方 jar 包
(3)AndroidTest
:编写 Android Test 测试用例
(4)java
:放置所有的 java 代码
(5)res
:放置项目中的 图片、布局、字符串资源
(6) test
:此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
(7)gitignore
:这个文件用于将app 模块内的指定的目录或文件排除在版本控制之外,作用和外层
的.gitignore文件类似。
(8)app.iml
:IntelliJ IDEA项目自动生成的文件,我们不需要关心或修改这个文件中的内容。
(9)build.gradle
:这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置,我们稍后将会详细分析gradle构建脚本中的具体内容。
(10)proguard-rules.pro
:指定项目代码的混淆规则,目的是让破解者难以阅读
三、分析 Android-Manifest.xml
以 HelloWorld示例 解释说明。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworldactivity">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这段代码表示 HelloWorldActivity这个活动进行注册,没有在 Android-Manifest.xml
里注册的活动是不能使用的。
其中 intent-filter 代码时非常重要的,包括的两行代码是这个项目的主要活动,手机上点击应用图标时,首先启动也会是这个活动,这个活动其实就是这个程序的界面。
打开 HelloWorldActivity:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Android 程序的设计讲究逻辑和视图分离,是不推荐直接在活动中编写界面,一般都是布局文件中编写界面,然后在活动中引入进来如这里的:setContentView(R.layout.activity_main)
四、分析 res 的目录结构
(1)drawable:以此开头的文件夹是用来存放图片
(2)mipmap:以此开头的文件夹都是用来存放应用图标的
(3)values:以此开头的文件夹都是用来存放字符串、样式、颜色等配置
(4)layout:存放布局文件
之所以有这么多mipmap开头的文件夹,其实主要是为了让程序能够更好地兼容各种设备。drawable文件夹也是相同的道理,虽然AndroidStudio没有帮我们自动生成,但是我们应该自己创建drawable-hdpi、drawable -xhdpi、drawable-xxhdpi 等文件夹。在制作程序的时候最好能够给同一张图片提供几个不同分辨率的版本,分别放在这些文件夹下,然后当程序运行的时候,会自动根据当前运行设备分辨率的高低选择加载哪个文件夹下的图片。当然这只是理想情况,更多的时候美工只会提供给我们一-份图片,这时你就把所有图片都放在drawable-xxhdpi文件夹下就好了。
打开 strings.xml:
这里定义了应用程序的名的字符串,
代码中,可以通过R.string.HelloWordActivity
引用
XML中,可以通过@string/HelloWordActivity
引用
其中 string 部分可以根据引用的是图片或图标,布局更换为 drawable 或者 mipmap,layout
所以可以打开 AndroidManifest.xml 文件修改应用的图标或者名称: