Android Studio 应用目录结构说明

目录

Android 应用程序剖析

结构说明

MainActivity. java

AndroidManifest. xml

Strings 文件

R 文件

Layout 文件


Android 应用程序剖析

在运行应用之前,需要了解 Android 项目中常用目录和文件

如下所示为  Android Studio 3.1.2 创建应用构建成功之后的默认结构:

结构说明

编码结构说明
1AndroidManifest.xml应用程序的清单文件,程序中用到的四大组件均需在此注册,且可在此给应用添加权限声明。
2java/com/....APP 源码目录。默认情况下,它包括一个 MainActivity.java 源文件对应的活动类,当应用程序通过应用图标启动时,将运行它。
3java/com(androidTest)Android 专用测试
4java/com(test)应用的 Junit 单元测试
4.1res存放各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件
5res/drawable存放各种位图文件(.png,.jpg,.9png,.gif等)。除此之外可能是一些其他的drawable类型的XML文件
6res/layout存放用于定义用户界面的文件,布局文件
7res/menu菜单按钮文件
8res/mipmap用来存放图片资源,如 应用图标
8.1mipmap-hdpi高分辨率,一般把图片丢这里
8.2mipmap-mdpi中等分辨率,很少,除非兼容的的手机很旧
8.3mipmap-xhdpi超高分辨率,手机屏幕材质越来越好,以后估计会慢慢往这里过渡
8.4mipmap-xxhdpi超超高分辨率,这个在高端机上有所体现
9res/values存放各种各样的包含一系列资源的XML文件,比如字符串和颜色的定义。
9.1demens.xml定义尺寸资源
9.2string.xml定义字符串资源
9.3styles.xml定义样式资源
9.4colors.xml定义颜色资源
9.5arrays.xml定义数组资源
9.6attrs.xml自定义控件时用的较多,自定义控件的属性!
11build.gradle(Project:xxx)应用全局的 gradle 构建脚本
12build.gradle(Module:app)app 模块的 gradle 构建脚本,此文件会指定很多项目构建相关的配置
13gradle.properties(Global Properties)全局 gradle 配置文件,配置的属性将会影响到项目中所有的 gradle 编译脚本
14gradle-wrapper.prperties 
15proguard-rules.pro 
16gradle.properties(Project Properties) 
17settings.gradle用于指定项目中所有引入的模块,如 include ':app'
18local.properties用于指定本机中的 Android SDK 路径,如 sdk.dir=D\:\\Android\\sdk
19raw用于存放各种原生资源(音频,视频,一些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 {
    @Override
    protected 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">
    <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>

<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应 用程序组件:

  1. 活动元素
  2. 服务元素
  3. 广播接收器元素
  4. 内容提供者元素

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">

    <TextView
        android: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 文件中的内容

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚩尤后裔-汪茂雄

芝兰生于深林,不以无人而不芳。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值