Android Studio 应用目录结构说明
目录
Android 应用程序剖析
结构说明
MainActivity. java
AndroidManifest. xml
Strings 文件
R 文件
Layout 文件
Android 应用程序剖析
在运行应用之前,需要了解 Android 项目中常用目录和文件
如下所示为 Android Studio 3.1.2 创建应用构建成功之后的默认结构:
结构说明
编码 | 结构 | 说明 |
1 | AndroidManifest.xml | 应用程序的清单文件,程序中用到的四大组件均需在此注册,且可在此给应用添加权限声明。 |
2 | java/com/.... | APP 源码目录。默认情况下,它包括一个 MainActivity.java 源文件对应的活动类,当应用程序通过应用图标启动时,将运行它。 |
3 | java/com(androidTest) | Android 专用测试 |
4 | java/com(test) | 应用的 Junit 单元测试 |
4.1 | res | 存放各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件 |
5 | res/drawable | 存放各种位图文件(.png,.jpg,.9png,.gif等)。除此之外可能是一些其他的drawable类型的XML文件 |
6 | res/layout | 存放用于定义用户界面的文件,布局文件 |
7 | res/menu | 菜单按钮文件 |
8 | res/mipmap | 用来存放图片资源,如 应用图标 |
8.1 | mipmap-hdpi | 高分辨率,一般把图片丢这里 |
8.2 | mipmap-mdpi | 中等分辨率,很少,除非兼容的的手机很旧 |
8.3 | mipmap-xhdpi | 超高分辨率,手机屏幕材质越来越好,以后估计会慢慢往这里过渡 |
8.4 | mipmap-xxhdpi | 超超高分辨率,这个在高端机上有所体现 |
9 | res/values | 存放各种各样的包含一系列资源的XML文件,比如字符串和颜色的定义。 |
9.1 | demens.xml | 定义尺寸资源 |
9.2 | string.xml | 定义字符串资源 |
9.3 | styles.xml | 定义样式资源 |
9.4 | colors.xml | 定义颜色资源 |
9.5 | arrays.xml | 定义数组资源 |
9.6 | attrs.xml | 自定义控件时用的较多,自定义控件的属性! |
11 | build.gradle(Project:xxx) | 应用全局的 gradle 构建脚本 |
12 | build.gradle(Module:app) | app 模块的 gradle 构建脚本,此文件会指定很多项目构建相关的配置 |
13 | gradle.properties(Global Properties) | 全局 gradle 配置文件,配置的属性将会影响到项目中所有的 gradle 编译脚本 |
14 | gradle-wrapper.prperties | |
15 | proguard-rules.pro | |
16 | gradle.properties(Project Properties) | |
17 | settings.gradle | 用于指定项目中所有引入的模块,如 include ':app' |
18 | local.properties | 用于指定本机中的 Android SDK 路径,如 sdk.dir=D\:\\Android\\sdk |
19 | raw | 用于存放各种原生资源(音频,视频,一些XML文件等) |
MainActivity. java
主活动代码在 MainActivity.java 文件中,这是实际的应用程序文件,也是整个 App 的程序入口,将被转化为 Dalvik 可执行文件并运行。
下面是由应用向导创建的空活动窗口应用生成的默认代码,说明当前 Android Studio 版本为 3.1.2
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}
}
其中 R.layout.activity_main 引用自res/layout目录下的 activity_main.xml 文件。
onCreate() 是活动被加载之后众多被调用的方法之一。
AndroidManifest. xml
无论开发什么组件用作应用程序中的一部分,都需要在应用程序项目根目录下的 AndroidManifest.xml 文件中声明所有的组件。
AndroidManifest.xml 文件是 Android 操作系统与应用程序之间的接口,所以如果没有在这个文件中声明应用的组件,将无法被操作系统所识别。
如下所示为 Android Studio 3.1.2 版本创建的 HelloWorld 应用使用的空活动窗口时的 AndroidManifest.xml 文件 内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.administrator.helloworld"><applicationandroid: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>
<application andnroid:icon 属性指出位于 res/mipmap 下面的应用程序图标。这个应用使用 res/mipmap 文件夹下名为 ic_launcher.png 的图片。
<application android:label属性指定用于活动名称的字符串,可以使用标签来指定多个活动。
<activity android:name 属性指定一个 android.app.Activity 类子类的全名。
意图过滤器的 action 被命名为 android.intent.action.MAIN,表明这个活动被用做应用程序的入口。
意图过滤器的 category(类别) 被命名为 android.intent.category.LAUNCHER,表明应用程序可以通过设备启动器的图标来启动。
@string/app_name 指的是定义在 src/values/strings.xml 中的 app_name,值为 "Hello World"。
下面是清单文件中将用到的标签,用于指定不同的 Android应 用程序组件:
- 活动元素
- 服务元素
- 广播接收器元素
- 内容提供者元素
Strings 文件
strings.xml 文件在 res/values 文件夹下,它包含应用程序使用到的所有文本,例如 按钮、标签的名称,默认文本,以及其他相似的strings,
一个默认的 strings 文件看起来如下:
<resources><string name="app_name">TestApp</string><string name="title_home">Home</string><string name="title_dashboard">Dashboard</string><string name="title_notifications">Notifications</string>
</resources>
R 文件
R 文件是活动窗口(如 MainActivity.java)与资源文件(如strings.xml)之间的胶水。
R 文件由编辑器自动生成,无需程序员修改,R 文件的位置:切换项目列表试图为project,然后依次 app-->build-->generated-->source-->r-->debug
Layout 文件
activity_main.xml 是一个在 res/layout 目录下的 layout(布局) 文件。
当应用程序构建它的界面时被引用,在"Hello World"应用程序中,这个文件具有默认的布局,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></android.support.constraint.ConstraintLayout>
TextView 是一个 Android 的控件,用于构建用户图形界面,它包含有许多不同的属性,诸如 android:layout_width, android:layout_height 等用来设置它的宽度和高度等。
@string 指的是res/values 文件夹下的 strings.xml 文件中的内容
Android Studio 应用目录结构说明相关推荐
- Android Studio项目目录结构介绍
在Android Studio中,提供了以下几种项目结构类型 我们一般常用的有以下两种结构: Project 结构类型 app/build/ app模块build编译输出的目录 app/build.g ...
- Android项目的目录结构
引言 本篇将通过HelloWorld项目来介绍Android项目的目录结构.本文的主要主题如下: 1.HelloWorld项目的目录结构 1.1.src文件夹 1.2.gen文件夹 1.3.Andro ...
- Android studio libs目录
Android studio libs目录: 关于Android studio libs目录,Android studio 已经为我们自动生成了,如果默认 是看不到默认Libs目录的,点击红色按钮地方 ...
- Android开发:程序目录结构详解:activity主要方法等
HelloWorld程序的目录结构概述 我们可以在文件夹中看到,HelloWorld程序的目录主要包括:src文件夹.gen文件夹.Android文件夹.assets.res文件夹. AndroidM ...
- Android studio ndk目录无法点击选择
问题原因 Android studio ndk目录无法点击选择,不能点击,不能设置.在local.properties文件夹加上路径 ndk.dir=C\:\\Users\\zou\\AppData\ ...
- Android【SDK目录结构】、【HelloWorld项目的目录结构】、【源码sources目录结构】
Android SDK 目录和作用的分析详解 1.add-ons这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面. 2.docs这里面是And ...
- Android【SDK目录结构】、【HelloWorld项目的目录结构】、【源码sources目录结构】...
Android SDK 目录和作用的分析详解 1.add-ons这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面. 2.docs这里面是And ...
- android studio制作目录布局,Android Studio:新创建的目录未出现在文件夹Vi中
9个解决方案 136 votes 事实证明,顶部有一个选择器,默认设置为显示Android. 如果您将切换按钮向下拨到"包",您可以看到自己的包. Aggressor answer ...
- Android 10 根文件系统和编译系统(四):Android源码目录结构
配套系列教学视频链接: Android 10.0 AOSP源码编译: https://www.100ask.net/detail/p_60a1e037e4b0adb2d864c6d8/6 Androi ...
- 浅谈android中的目录结构
在开发android应用的过程中,总要去调试APP,安装时又想去了解android的目录结构.然后搜到了一点材料. 原文地址:http://www.hiapk.com/viewthread.php?t ...
最新文章
- 使用MrBayes构建贝叶斯系统发育树【实践】
- Spring5 - 核心原理
- 参考文献中的字母含义
- jedis操作set_redis命令行操作set集合和java方式操作set集合
- Spring Boot Admin的使用
- 解决Sublime Text3莫名的中文乱码问题
- re:Invent大会第十年,亚马逊云科技推出了哪些底层自研技术
- 身份证识别开发_成为您的身份永远不会太晚-在36岁时成为一名开发人员
- 软件工程师安德烈·梅萨加冕 2021 世界小姐冠军
- Spring Boot:关于“No converter found for return value of type: class xxx”的解决方法
- C# 遍历DLL导出函数
- Curvy Little Bottles-二分和积分
- oracle全量增量_oracle增量和全量备份方案
- iis和mysql_iis mysql
- ArcGIS学习总结(三)——空间分析基本操作
- gsensor架构和原理分析
- HelloWord代码
- php网站扫描工具,网站目录文件扫描工具dirbuster
- 一键GHOST的使用方法
- 统计学入门基础概念问答(统计学方法的分类、统计数据的分类等)
热门文章
- IIS7的HTTP 500.19错误
- CDC::Arc 汉化参数明说及举例
- 拓端tecdat|R语言分析股市相关结构:用回归估计股票尾部相关性(相依性、依赖性)
- 拓端tecdat|Matlab用BUGS马尔可夫区制转换Markov switching随机波动率SV模型、序列蒙特卡罗SMC、Metropolis Hastings采样分析时间序列数据
- L1-6 字母串 (15 分)
- 案例4-2 树种统计 (25 分)(map映射)
- 鸿蒙移植mate10,鸿蒙系统+麒麟1020再升一个台阶,华为Mate30黯然神伤无奈下跌
- SpringBoot 嵌入式web容器的启动原理
- 清华大学操作系统OS学习(三)——启动、中断、异常和系统调用
- appium java动态等待_appium封装显示等待Wait类和ExpectedCondition接口