Android 最简工程基本文件介绍

还记得我们之前创建的 HelloWorld 项目 ,本章节我们就用这个项目介绍 Android APP 的主要文件

文件 说明
java/MainActivity.java APP 入口 Java 文件
res/layout/activity_main.xml 布局文件
AndroidManifest.xml Android 配置文件

MainActivity.java

package cn.twle.android.helloworld;

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);
    }
}

布局文件 activity_main.xml

<?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="cn.twle.android.helloworld.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>
  1. <?xml version="1.0" encoding="utf-8"?>

    定义了 xml 文件的版本和使用编码,这是每个 xml 文件固定写法

  2. <android.support.constraint.ConstraintLayout>

    引用布局组件,后面我们会介绍 Android 的 7 大布局

  3. xmlns:androidxmlns:appxmlns:tools 命名空间声明

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

    引用了这三个命名空间,我们就可以做下面的事情了

    1. 使用 alt + / 提示和补全属性,其实输入 android 的过程中就会自动提示

    2. 使用 android:tools:app: 前缀属性

  4. android:layout_widthandroid:layout_width 属性

    这两个属性是用于定义控件或者布局宽度和高度的,有三个值可选

    说明
    match_parent 跟父控件或布局同宽或同高
    fill_parent 跟父控件或布局同宽或同高
    wrap_content 宽或高刚好显示组件内容的大小
  5. tools:context="cn.twle.android.helloworld.MainActivity"

    这个属性只针对 Android Studio 编辑器有用,不会打包进 .apk

    用于设置该布局对应的 Activity 上下文,如果在 AndroidManifest.xml 为该 Activity 设置了主题(theme),那么可视化布局编辑器也会使用这个主题

  6. android:text="Hello World!"

    <TextView> 设置显示的文本

  7. app:layout_*

    用来约束控件的位置的,这四个属性的意思是期待控件布局紧贴 ConstraintLayout

AndroidManifest.xml 配置文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.twle.android.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>
  1. <?xml version="1.0" encoding="utf-8"?>

    定义了 xml 文件的版本和使用编码,这是每个 xml 文件固定写法

  2. <manifest

    定义了 AndroidManifest.xml 配置文件的根节点,这是固定的写法

  3. xmlns:android

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    

    引用了 android 这个命名空间,我们就可以做下面的事情了

    1. 使用 alt + / 提示和补全属性,其实输入 android 的过程中就会自动提示
    2. 使用 android: 前缀属性
  4. package="cn.twle.android.helloworld"

    定义了我们应用程序所在的 Java 包,Android 会从该包下查找 Java 包

  5. <application

    用于定义 应用程序 级别的属性

    属性 说明
    allowBackup="true" 是否允许备份文件,允许
    icon="@mipmap/ic_launcher" 定义应用程序的图标,引用 res/mipmap/ic_launcher 文件
    label="@string/app_name" 定义应用程序的名称,引用 res/values/string.xml 中的 app_name
    roundIcon="@mipmap/ic_launcher_round" 定义圆角图标
    supportsRtl="true" 支持右向左的布局,有点向古代的书,从右边往左读
    theme="@style/AppTheme" 定义应用程序的主题
  6. <activity android:name=".MainActivity">

    声明一个 activity ,引用 MainActivity ,也就是 package 属性下的相应文件

    . 号就是代表 package 声明的包

  7. <intent-filter>

    定义意图过滤器

  8. <action><category>

    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    

    这两个定义了程序的入口是 MainActivity

其它的

  1. 如果 app 包含其它组件的话,都要使用类型说明语法在该文件中进行声明

    类型 说明
    Service 服务
    BroadcastReceiver 广播服务
    ContentProvider 内容提供服务
    IntentFilter <intent-filter&gt 意图
  2. 权限的声明

    在该文件中显式地声明程序需要的权限,防止 app 错误地使用服务,不恰当地访问资源, 最终提高 android app 的健壮性

    android.permission.SEND_SMS
    

    有这句话表示 app 需要使用发送信息的权限,安装的时候就会提示用户 APP 要申请短信权限

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.