Android Demo 之 No Activity (上)
使用 Android Studio 创建 Android 项目,第一个模板就是 “No Activity”,也就是没有一个窗口的项目,等同于空项目,是一个项目最基础的模板。这里我们使用"No Activity"模板,在完成在此基础上手动添加 Activity 等一些基本功能,使窗口能够活动起来,用来学习 Activity 相关的知识。
以下可能会用到的缩写:
- AS = Android Studio
创建 No Activity 工程
- 创建新工程
- 选择 No Activity 模板,后 Next 选项
- 填写 app 信息,后 Finish
- 等待 Android Studio 完成 app 初始化
- 发现警告提示
点击右下方 “Event Log” 显示
- 处理 Gradle jdk 与 Android Studio 使用 JDK 不一直问题
问题 5 是由于 Gradle 与 AndroidStudio 使用了不一致的 JDK 造成的提示,选择 Select a JDK 或者在 Gralde settting 中设置 JDK 与 ANdroid Studio 一致即可。
- Resolved:JDK_1_8 问题
打开 Rpoject Structure,选择到 Modules 选项,出现红色Resolved:JDK_1_8
-
解决问题 7 中 Resolved:JDK_1_8
-
在 project 层 build.gradle 中创建java_version 变量:
ext.java_version = JavaVersion.VERSION_1_8
-
修改 module app 中 bugild.gradle 中 sourceCompatibility 与 targetCompatibility 的值
1
2
3
4
5//sourceCompatibility JavaVersion.VERSION_1_8
//targetCompatibility JavaVersion.VERSION_1_8
// 修改
sourceCompatibility java_version
targetCompatibility java_version
-
-
解决 Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (junit:junit:4.+)
- 打开 Project Structure 定位到 Suggestions,点击 Suggestions 项:
- 选中升级到 “4.13.1” 点击 Apply 后 点击 OK
-
重新 gradle sync,没有任何错误及警告
- grad了sync
手动创建第一个 Activity
-
选中 app 中 java 源码包,点击右键,在弹出菜单中,依次选择 “New” -> "Kotlin File/Class"菜单项
-
填写类名,创建 MainActivity 类
-
完善 MainActivity 类,使其继承 AppCompatActivity 类,并重载 onCreate 方法
1
2
3
4
5
6
7
8
9
10
11
12package com.example.uiapp
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
//MainActivity 必须是 AppCompatActivity 的直接或间接子类
class MainActivity : AppCompatActivity(){
//重载函数必须调用父类中的相同方法
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
创建 UI 布局(Layout)
-
选中 app 中 res 资源上,点击右键,在弹出菜单中,依次选择 “New” -> "Android Resource File"菜单项
-
设置 Layout 属性,创建 activity_main layout
-
Resource Layout 布局
-
将 layout activity_main 绑定到 MainActivity 类:
1
2
3
4
5
6
7
8
9
10
11
12
13package com.example.uiapp
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 此方法将 layout activity_main 绑定到 MainActivity 类
setContentView(R.layout.activity_main)
}
} -
在Android Manifest.xml 中注册 activity_main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.uiapp">
<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/Theme.UIApp" >
//---以下 为添加 main activity 并设置为启动 activity ---------------//
<activity android:name=".MainActivity" android:label="Main Activity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
//--- main activity 添加结束 ---------------//
</application>
</manifest>
编译和运行项目
-
首先设置 AVD 模拟器,用来模拟真机
请参照其他文档设置 AVD 模拟器 -
点击 绿色 “运行” 按钮,显示如下:
至此,我们完成创建空项目,添加类、添加资源,并绑定类与资源,并设置了启动项等,下节我们在此基础上增加一些控件及窗口间的调用。