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>
-
<?xml version="1.0" encoding="utf-8"?>
定义了 xml 文件的版本和使用编码,这是每个 xml 文件固定写法
-
<android.support.constraint.ConstraintLayout>
引用布局组件,后面我们会介绍 Android 的 7 大布局
-
xmlns:android
、xmlns:app
、xmlns: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"
引用了这三个命名空间,我们就可以做下面的事情了
-
使用
alt + /
提示和补全属性,其实输入android
的过程中就会自动提示 -
使用
android:
、tools:
和app:
前缀属性
-
-
android:layout_width
和android:layout_width
属性这两个属性是用于定义控件或者布局宽度和高度的,有三个值可选
值 说明 match_parent 跟父控件或布局同宽或同高 fill_parent 跟父控件或布局同宽或同高 wrap_content 宽或高刚好显示组件内容的大小 -
tools:context="cn.twle.android.helloworld.MainActivity"
这个属性只针对 Android Studio 编辑器有用,不会打包进
.apk
用于设置该布局对应的
Activity
上下文,如果在AndroidManifest.xml
为该 Activity 设置了主题(theme),那么可视化布局编辑器也会使用这个主题 -
android:text="Hello World!"
为
<TextView>
设置显示的文本 -
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>
-
<?xml version="1.0" encoding="utf-8"?>
定义了 xml 文件的版本和使用编码,这是每个 xml 文件固定写法
-
<manifest
定义了 AndroidManifest.xml 配置文件的根节点,这是固定的写法
-
xmlns:android
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
引用了
android
这个命名空间,我们就可以做下面的事情了- 使用
alt + /
提示和补全属性,其实输入android
的过程中就会自动提示 - 使用
android:
前缀属性
- 使用
-
package="cn.twle.android.helloworld"
定义了我们应用程序所在的 Java 包,Android 会从该包下查找 Java 包
-
<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" 定义应用程序的主题 -
<activity android:name=".MainActivity">
声明一个 activity ,引用 MainActivity ,也就是 package 属性下的相应文件
.
号就是代表 package 声明的包 -
<intent-filter>
定义意图过滤器
-
<action>
和<category>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
这两个定义了程序的入口是
MainActivity
其它的
-
如果 app 包含其它组件的话,都要使用类型说明语法在该文件中进行声明
类型 说明 Service 服务 BroadcastReceiver 广播服务 ContentProvider 内容提供服务 IntentFilter <intent-filter> 意图 -
权限的声明
在该文件中显式地声明程序需要的权限,防止 app 错误地使用服务,不恰当地访问资源, 最终提高 android app 的健壮性
android.permission.SEND_SMS
有这句话表示 app 需要使用发送信息的权限,安装的时候就会提示用户 APP 要申请短信权限