☰
Android移动应用开发实验报告:环境搭建、Activity跳转与UI设计实战
2026/10/19 6:24:28 网站建设 项目流程

简介:这份实验报告面向软件学院修读移动应用软件开发技术课程的学生,聚焦Android平台开发入门,帮助读者完成从环境搭建到界面设计的完整实践流程。资源包内含1个doc文档,大小约1.63MB,以文字与截图结合的形式记录实验过程,便于对照操作与整理笔记。报告覆盖三大实验模块:Android系统环境搭建,涉及JDK安装与环境变量配置、Eclipse解压使用、Android SDK在线更新与离线安装、ADT插件部署;Activity运用实验,讲解Activity的创建、启动、生命周期管理及Intent跳转与数据传递;Android应用UI设计,涵盖TextView、Button、ImageView等基础控件,LinearLayout、RelativeLayout、GridLayout等布局管理器,以及自定义View与XML布局文件设计。目前已有767人学习下载,适合需要完成课程实验、巩固Android开发基础或准备移动应用开发入门实践的学生参考,可据此理解开发工具链配置思路与Activity、UI组件的实际用法。

1. 从一份实验报告说起:移动应用开发到底要交什么

很多同学拿到“移动应用软件开发技术”这门课的实验报告模板时,第一反应是:不就是装几个软件、写几个按钮吗?但真正动手才发现,环境变量配错一个字母,Eclipse 就找不到 Android SDK;Activity 之间传个字符串,Bundle 的 key 写错一个大小写,TextView 就永远显示空白。这份实验报告的价值,不在于它有多高深,而在于它把移动应用开发最基础的三个环节——环境搭建、Activity 运用、UI 设计——串成了一条完整的动手链路。它适合软件学院正在做课程设计的学生,也适合刚接触 Android 开发、需要一份可复现操作记录的从业者。下面我按“需求→设计→实现→验收”的顺序,把这份报告拆成一份可以直接参考的方案。

2. 环境搭建方案:JDK、Eclipse、SDK 与 ADT 的安装链路

2.1 为什么环境搭建要单独作为第一个实验

移动应用开发的第一道门槛从来不是写代码,而是让工具链跑起来。JDK 负责编译 Java 源码,Eclipse 提供编辑和调试界面,Android SDK 提供平台库和模拟器镜像,ADT 则是把 Eclipse 和 SDK 粘在一起的插件。这四者缺一个,新建工程时就会报 “Android SDK not found” 或者 “ADT not installed”。实验报告把环境搭建放在实验一,目的就是先让开发环境具备可运行的最小闭环,后面的 Activity 和 UI 实验才有地方落地。

2.2 JDK 安装与环境变量配置

JDK 要求 6.0 以上版本,安装完成后必须配置JAVA_HOME,否则在 cmd 里执行java或javac会提示“不是内部或外部命令”。配置路径是:右击“我的电脑”→属性→高级→环境变量,新建系统变量JAVA_HOME,值为 JDK 安装目录,例如C:\Program Files\Java\jdk1.6.0_45。然后在Path变量末尾追加%JAVA_HOME%\bin。

验证方式不是看安装界面,而是写一个最小 Java 文件并运行:

// test.java public class test { public static void main(String[] args) { System.out.println("JDK install OK"); } }

编译运行命令:

javac test.java java test

如果控制台输出JDK install OK,说明 JDK 和JAVA_HOME都生效了。这里有个细节:javac和java必须来自同一个 JDK 目录,如果系统里装过多个 Java 版本,Path里靠前的那个会优先被找到,容易出现编译通过但运行报版本不匹配的情况。

2.3 Eclipse 与 Android SDK 的安装策略

Eclipse 选择 “Eclipse IDE for Java EE Developers” 的 Windows 版本,下载后解压即可,不需要安装程序。解压路径建议不要带中文和空格,否则后续 ADT 插件安装时可能因为路径解析问题失败。

Android SDK 有两种安装方式:在线和离线。在线安装通过 SDK Manager 勾选需要的 API 版本和工具,适合网络稳定的场景。离线安装则需要先下载android-sdk_r16-windows.zip安装包,解压到目标目录,然后手动创建platforms、docs、samples、usb_driver、market_licensing等文件夹,再把对应版本的 SDK 包解压进去。实验报告里列出了一长串下载地址,覆盖 Android 1.5 到 2.2 以及 google_apis 和 samples,这种做法的好处是版本齐全,坏处是手动操作容易漏文件。

我一般会建议先在线装一个基础版本,确认 SDK Manager 能正常识别目录后,再按需补充离线包。SDK 路径中同样不要出现中文,否则 ADT 配置时会报 “Invalid SDK location”。

2.4 ADT 插件安装与 SDK 路径绑定

ADT 是 Eclipse 的插件,安装入口在Help → Install New Software。点击Add,Name 填ADT,Location 填http://dl-ssl.google.com/android/eclipse/,然后勾选Developer Tools一路 Next 并重启 Eclipse。

重启后还要做最后一步:Windows → Preference → Android,在SDK Location里填入 Android SDK 的根目录。这一步不做,新建 Android 项目时 Eclipse 会直接报错。配置完成后,Eclipse 工具栏会出现 Android 机器人图标,SDK Manager 也能从 Eclipse 内部启动,说明整条链路已经打通。

3. Activity 与 Intent 实现:两个页面跳转和一次数据传递

3.1 Activity 跳转的最小实现

实验二要求写两个应用:TestActivity01 实现 MainActivity 启动 OtherActivity,TestActivity02 在跳转时把字符串“中国”传过去。这两个实验看起来简单,但覆盖了 Activity 最核心的两个能力:启动和传参。

先看 TestActivity01 的 MainActivity。界面上只有一个按钮,点击后通过 Intent 启动第二个 Activity:

// MainActivity.java public class MainActivity extends Activity { Button b; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button) findViewById(R.id.button1); b.setOnClickListener(new OnClickListener() { public void onClick(View v) { // 显式 Intent:指定从当前 Activity 跳到 second Intent intent = new Intent(MainActivity.this, second.class); startActivity(intent); } }); } }

对应的布局文件activity_main.xml只放一个 Button,id 为button1。第二个 Activity 的布局two.xml只放一个 TextView,id 为ray,用于显示默认文本。

这里的关键点是Intent的构造函数:第一个参数是当前上下文,第二个参数是目标 Activity 的 Class 对象。这种写法叫显式 Intent,适合应用内部页面跳转。如果目标 Activity 没有在AndroidManifest.xml里注册,运行时会直接崩溃,报ActivityNotFoundException。

3.2 用 Bundle 在 Activity 之间传值

TestActivity02 在跳转的基础上增加了数据传递。发送方把“中国”放进 Bundle,再塞进 Intent:

// TextMainActivity.java y.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent testintent = new Intent(); Bundle testbundle = new Bundle(); // key 为 "name",值为 "中国" testbundle.putString("name", "中国"); testintent.putExtras(testbundle); testintent.setClass(TextMainActivity.this, test_2.class); startActivity(testintent); } });

接收方在onCreate里从 Intent 中取出 Bundle,再按同一个 key 读取字符串:

// test_2.java TextView test; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); test = (TextView) findViewById(R.id.ruirui); Bundle tbd = this.getIntent().getExtras(); String name = tbd.getString("name"); test.setText(name); }

这段代码里最容易翻车的地方是 key 的大小写。发送方写"name",接收方写"Name",getString返回 null,TextView 就显示空白,而且不会报错。另一个坑是getExtras()可能返回 null,如果接收方直接调用tbd.getString(),空指针异常会让应用闪退。稳妥的做法是先判断getIntent().getExtras() != null再取值。

3.3 两个实验的源码组织与运行验证

实验报告要求附上MainActivity.java、OtherActivity.java以及对应的 xml 文件源码,并粘贴运行界面图。从工程结构看,两个实验分别放在com.example.test1和com.example.test包下,布局文件分别命名为activity_main.xml、two.xml、activity_text_main.xml、second.xml。这种命名不算规范,但作为实验记录足够用。

运行验证时,先确认模拟器或真机已经连接。Eclipse 里点击 Run As → Android Application,如果控制台出现ActivityManager: Starting: Intent并且界面成功跳转,说明 Activity 注册和 Intent 构造都没问题。如果卡在启动页,优先检查AndroidManifest.xml里是否声明了第二个 Activity。

4. UI 设计落地:嵌套布局与多输入对话框

4.1 用 LinearLayout 嵌套实现三行结构

实验三第一部分要求实现一个特定布局:最外层是纵向 LinearLayout,里面依次是横向 LinearLayout(四列)、TableLayout(三行三列)、纵向 LinearLayout(四行)。这种嵌套结构在早期 Android 开发里很常见,因为 ConstraintLayout 还没普及,LinearLayout 的layout_weight是控制比例的主要手段。

外层纵向布局的写法:

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <!-- 第一块:横向四列 --> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="2"> <TextView android:text="red" android:gravity="center" android:background="#CE0000" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" /> <!-- green、blue 同理 --> </LinearLayout> <!-- 第二块:TableLayout 三行三列 --> <!-- 第三块:纵向四行 --> </LinearLayout>

这里layout_weight的作用是分配剩余空间。横向布局里三个 TextView 的 weight 都是 1,所以它们等宽。外层纵向布局给第一块设了layout_weight="2",意味着它在纵向剩余空间里占两份,后面两块各占一份。如果忘记给layout_height设0dp而用了wrap_content,weight 分配会失效,这是新手最常见的布局翻车点。

4.2 多输入对话框与 Toast 输出

实验三第二部分要求用 LinearLayout、两个 TextView、两个 EditText 做一个多输入框对话框,点击按钮后通过 Toast、TextView 或 Logcat 输出内容。对话框可以用AlertDialog.Builder构建,把自定义布局 inflate 进去:

// 构建对话框 AlertDialog.Builder builder = new AlertDialog.Builder(this); View dialogView = getLayoutInflater().inflate(R.layout.dialog_layout, null); builder.setView(dialogView); builder.setTitle("多输入对话框"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { EditText input1 = dialogView.findViewById(R.id.input1); EditText input2 = dialogView.findViewById(R.id.input2); String text1 = input1.getText().toString(); String text2 = input2.getText().toString(); // 用 Toast 输出两个输入框的内容 Toast.makeText(MainActivity.this, "输入1:" + text1 + ",输入2:" + text2, Toast.LENGTH_LONG).show(); } }); builder.show();

dialog_layout.xml里用纵向 LinearLayout 包两个 TextView 和两个 EditText,id 分别设为input1和input2。点击确定后,dialogView里的 EditText 通过findViewById拿到实例,再读取文本。这里要注意:dialogView是在对话框显示之前 inflate 的,如果在onClick里重新 inflate 一次,拿到的就是新的空输入框,读出来永远是空字符串。

4.3 布局文件与源码的对应关系

实验报告要求附上 java 源文件和对应 xml 文件源码,并粘贴运行界面图。从给出的代码看,MainActivity.java只做了setContentView(R.layout.activity_main),真正的布局逻辑全在 xml 里。这种分离方式符合 Android 的开发习惯:xml 负责静态结构,java 负责动态交互。

验证 UI 实验时,我一般会先在 Eclipse 的 Graphical Layout 里预览,确认没有红色报错再运行。如果预览正常但真机显示错位,通常是layout_weight和layout_height配合有问题,或者背景色把文字盖住了。把android:background临时去掉,能快速定位是布局问题还是渲染问题。

5. 避坑与排查:环境、跳转、布局里最容易翻车的几个点

5.1 环境变量配了但命令行不生效

现象:JAVA_HOME已经设置,但 cmd 里执行java -version提示找不到命令。 原因:Path变量里没有追加%JAVA_HOME%\bin,或者追加后没有重新打开 cmd 窗口。 解决:检查Path中是否有%JAVA_HOME%\bin,确认后关闭所有 cmd 窗口重新打开。如果系统里装过多个 JDK,把需要用的那个路径移到Path最前面。

5.2 ADT 安装后 Eclipse 找不到 SDK

现象:Eclipse 重启后,Windows → Preference里没有 Android 选项,或者 SDK Location 填了路径仍然报错。 原因:ADT 插件没有安装完整,或者 SDK 路径包含中文、空格。 解决:重新走一遍Help → Install New Software,确认Developer Tools全部勾选。SDK 目录换成纯英文路径,例如D:\android-sdk。

5.3 Activity 跳转直接闪退

现象:点击按钮后应用崩溃,Logcat 显示ActivityNotFoundException。 原因:目标 Activity 没有在AndroidManifest.xml里注册。 解决:在<application>标签内添加<activity android:name=".second" />,包名和类名要与实际代码一致。

5.4 Bundle 传值接收方拿到 null

现象:第二个 Activity 的 TextView 显示空白,Logcat 没有明显报错。 原因:发送方和接收方的 key 不一致,或者getExtras()返回 null 后直接调用了getString。 解决:把 key 定义成常量,两边引用同一个常量。接收方先判断getExtras() != null再取值。

5.5 布局 weight 不生效

现象:设置了layout_weight,但控件宽度或高度没有按比例分配。 原因:对应方向的尺寸用了wrap_content而不是0dp。 解决:横向 weight 把layout_width设为0dp,纵向 weight 把layout_height设为0dp,让 weight 完全接管尺寸分配。

6. 验收与答辩:怎么证明这份实验报告真的跑通了

验收这份实验报告,核心不是看代码写得多漂亮,而是看每个实验的“证据链”是否完整。环境搭建实验要能展示 JDK 安装目录、环境变量配置截图、test.java运行结果、Eclipse 界面、SDK 目录结构、ADT 安装后的 Eclipse 界面。Activity 实验要能展示两个 Activity 的 java 源码、xml 源码、运行界面截图,以及数据传递后第二个页面显示“中国”的截图。UI 实验要能展示嵌套布局的运行效果和多输入对话框点击确定后的 Toast 输出。

我一般会按下面这张表来逐项核对:

验收项检查内容合格标准
JDKJAVA_HOME和Path配置cmd 中java -version有输出
Eclipse解压目录和启动界面能正常打开工作区
Android SDKSDK Manager 能识别目录已安装至少一个 API 版本
ADTEclipse 中 Android 选项可见SDK Location 配置成功
Activity 跳转按钮点击后页面切换第二个 Activity 正常显示
Bundle 传值第二个页面显示“中国”TextView 内容与发送方一致
嵌套布局三行结构比例正确无重叠、无错位
多输入对话框点击确定后有输出Toast 显示两个输入框内容

答辩时,老师通常会问三个问题:为什么JAVA_HOME要单独设而不是直接改Path?显式 Intent 和隐式 Intent 有什么区别?layout_weight的计算规则是什么?前两个问题在实验报告里能找到答案,第三个问题需要理解:weight 是先把所有子 View 的尺寸按0dp处理,再把剩余空间按 weight 比例分配。如果子 View 的尺寸不是0dp,weight 分配的就是扣掉这些尺寸后的剩余部分。

还有一个容易被忽略的点:实验报告里的截图必须能看清关键信息。环境变量截图要能看到变量名和值,运行界面截图要能看到 Activity 标题或按钮文字。如果截图模糊到看不清路径,验收时会被要求重做。

从那以后我每次带人做 Android 实验,都强制要求先跑通环境再写代码,每完成一个实验就立刻截图存档,不等到最后补。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询