。data.json 文件中包含有章节 Id,视频 Id,章节名称,视频名称和视频地址。由于博学谷项目使用的是本地数据,因此需要在 data.json 文件中指定视频所在位置。
3.视频播放
【知识点】
l VideoView 控件。
【技能点】
l 掌握视频播放界面的设计和逻辑构思;
l 通过 VideoView 控件实现本地视频的播放。
由于视频播放界面只是用来播放视频的,因此只需放置 1 个 VideoView 控件全屏显示在此界面即可。
VideoPlayActivity 类用于实现视频播放逻辑,首先获取从课程详情或播放记录界面传递过来的视频地址,之后加载视频地址进行视频播放。
4.播放记录
播放记录界面用于展示用户播放过的视频信息。由于在课程详情界面播放过的视频信息都在数据库中保存,因此在进入播放记录界面时要判断数据库中是否有视频信息, 如果没有,则显示暂无播放记录。当用户点击播放记录中任意一条信息时就跳转到视频播放界面,开始播放选中的视频。
【知识点】
l SQLite 数据库的使用。
【技能点】
l 掌握播放记录界面的设计和逻辑构思;
l 通过 SQLite 数据库查询播放过的视频信息。
播放记录界面主要用于显示课程详情界面播放过的视频信息,播放记录界面效果如图所示。
当进入播放记录界面时需要从数据库中获取播放过的视频信息,如果没有视频信息, 则提示暂无播放记录,如果有视频信息,则把数据显示在 ListView 控件上。
播放记录界面 Item
由于播放记录界面用到了 ListView 控件,因此需要为该控件创建一个 Item 界面, 界面效果如图所示。
播放记录界面 Adapter
由于播放记录界面的视频列表用到了 ListView 控件,因此需要创建一个数据适配器
PlayHistoryAdapter 对 ListView 进行数据适配。
八、项目打包
第 1 步 在菜单栏中点击“Build Generate Signed APK…”。
第 2 步 单击【Generate Signed APK…】选项,进入到 Generate Signed APK 界面。
第 3 步 【Key store path】项用于选择程序证书地址,点击【Create new…】按钮,进入 New Key Store 界面。
第 4 步 点击【Key store path】项之后的【...】按钮,进入 Choose keystore file 界面,选择证书存放路径。
第 5 步 选择证书所存放路径后,在下方【File name】中填写证书名称,点击【OK】按钮。此时,会返回到 New Key Store 界面,然后填写相关信息。
第 6 步 信息填写完毕之后,点击【OK】按钮,返回到 Generate Signed APK 界面。
第 7 步 创建好的证书信息已经自动填写完毕,点击【Next】按钮。
第 8 步 此处选择 release,然后点击【Finish】按钮,进入到 Signed APK‘s generated
successfully 界面。
第 9 步 点击【Show in Explorer】按钮,即可查看生成的 APK 文件。
第三部分 实训考核及评分标准
考核方式分平时考核、实训报告考核、答辩考核和作品考核四部分。
平时考核:考查学生的实训态度、组织纪律、出勤情况、工作进度、实践技能、分析问题及解决问题的能力。
报告考核:考查学生的报告设计内容、设计方案、文字描述、图表绘制、页面整洁等情况。
答辩考核:根据开发的项目提问相关的设计问题,考查综合运用知识的能力。 作品考核:主要考核学生开发的项目的完成情况。
平时考核占总成绩的 20%,报告考核占总成绩的 20%,答辩考核占总成绩的 20%,作品考核占总成绩的 40%。根据以上四项给出综合成绩,按优、良、中、及格、不及格五级分评定。
有下列情形之一者为不及格:
1.未能按期完成规定实训任务。
2.实训报告条理不清、论述有原则性错误、图纸图表严重不规范、质量很差。
3.答辩过程中,主要问题阐述不清,对设计内容缺乏了解,概念模糊,问题基本回答不出。
4.报告和作品雷同。
,
移动应用开发实训指导书
计算机科学与技术教研室
辽宁工业大学
2024 年 12 月
第一部分 实训目的及要求
一、实训目的和目标
通过移动应用开发实训,使学生进一步理解、领会 Java 语言和安卓开发技术,把所学的知识运用到具体的项目当中去,编写一个贴近实际应用的 APP 项目。
通过移动应用开发实训,掌握 APP 项目设计;深刻把握 Java 技术的重要概念及其面向对象的特性;掌握安卓开发模式;锻炼学生 APP 项目的分析、设计、编程和调试的整个过程。
移动应用开发实训的目标就是培养学生具有 APP 项目的初步规划、设计、开发能力。具体表现在项目内容、功能等方面合理策划和规划;培养具有主模块和二级页面的创意、 设计等方面的技术处理能力和具有动态效果的制作能力。培养学生具有数据库的编程技术,实现移动端 APP 项目的开发能力。
二、实训步骤
1. APP 项目的规划与原型化设计;
2. APP 项目的开发说明;
3. APP 项目的编程与调试;
4. APP 项目的总结。
三、实训要求
1. 掌握 APP 项目的规划与设计方法;
2. 掌握 APP 项目的页面和代码的开发方法;
3. 掌握 APP 项目的编程与调试方法。
第二部分 实训内容
设计案例举例(博学谷自学助手 APP)
一、项目综述
1.项目名称
博学谷自学助手
2.项目概述
博学谷项目是一个学生端自学助手,每个学生都可以注册账号,然后通过博学谷项目来学习《Android 移动开发基础案例教程》1-10 章的教学视频,并在学习完成后通过章节习题进行自我测验,达到课下预习或者复习的效果。
3.开发环境
操作系统:Windows 系统
开发工具:JDK8 Android Studio2.2.2 数 据 库:SQLite
4.功能模块说明
博学谷项目主要分为三大功能模块,分别为课程模块、习题模块、用户模块。
5.效果展示
1)欢迎界面和主界面
程序启动成功后,首先会在欢迎界面停留几秒然后进入主界面,在主界面中点击底部导航栏可以进入习题界面或我的界面。
2)课程详情界面
点击课程界面中的某个课程时,会进入课程详情界面,在该界面中可以查看课程简介,以及与课程配套的视频,当点击某个视频时,会自动播放已有的视频。
3)习题详情界面
在主界面中,单击导航栏中的“习题”时,会进入习题列表界面。单击该界面中的某个条目,会展示当前章节的所有习题,即可开始答题。
4)我的界面
在主界面中,单击导航栏中的“我”时,会进入登录界面。如果没有登录账号则可以点击“立即注册”进行注册,如果已经有登录账号则输入正确的用户名和密码即可登录,若忘记密码则可以点击“找回密码”,将密码找回。
在登录成功界面中,可以进入播放记录界面和设置界面,在设置界面中可以修改密码和设置密保。
二、欢迎模块欢迎界面
【知识点】
l 布局文件的创建与设计;
l RelativeLayout 布局、TextView 控件;
l Timer 与 TimerTask。
【技能点】
l 实现 Android 项目的创建;
l 通过 Timer 实现界面延迟跳转;
l 通过 PackageManager 获取程序版本号。
在实际开发中,开启应用程序时首先会呈现一个欢迎界面,用于展示产品 Logo 或展示广告等, 接下来将创建博学谷项目的欢迎界面。博学谷项目的欢迎界面是由RelativeLayout 布局和一个 TextView 控件组成,其中 RelativeLayout 的背景图片用于展示产品 Logo,TextView 控件用于展示程序版本号。
欢迎界面主要展示产品 Logo 和版本信息,通常会在该界面停留一段之后自动跳转到其他界面,因此需要在逻辑代码中设置欢迎界面暂停几秒(3 秒)后再跳转,并获取程序的版本号。
三、注册与登录模块
1.注册模块
注册界面主要用于用户输入注册信息,在注册界面中用户需要输入用户名、密码、再次输入密码(确保密码输入无误),当点击注册按钮时进行注册。由于博学谷项目使用的是本地数据,因此注册成功后,需要将用户名和密码保存在 SharedPreferences 中便于后续用户登录。为了保证账户的安全,在保存密码时会采用 MD5 加密算法,这种算法是不可逆的,且具有一定的安全性。
【知识点】
l 标题栏的创建;
l ImageView 控件、EditText 控件、Button 控件;
l SharedPreferences 的使用;
l setResult(RESULT_OK, data)方法的使用;
l MD5 加密算法。
【技能点】
l 掌握注册界面的设计和逻辑构思;
l 掌握标题栏的创建以及常用控件的使用;
l 通过 SharedPreferences 实现数据的存取功能;
l 通过 setResult(RESULT_OK, data)方法实现界面间数据的回传;
l 通过 MD5 加密算法实现密码加密功能;
l 实现博学谷的注册功能。
在博学谷项目中,大部分界面都有一个后退键和一个标题栏。为了便于代码重复利用,可以将后退键和标题栏抽取出来单独放在一个布局文件(main_title_bar.xml)中。
注册界面用于输入用户的注册信息,在注册界面中需要 3 个 EditText 用于输入用户名、密码、再次确认密码,当点击注册按钮后完成用户注册,界面效果如图所示。
MD5 的全称是 Message-Digest Algorithm 5(信息--摘要算法),MD5 算法简单来说就是把任意长度的字符串变换成固定长度(通常是 128 位)的 16 进制字符串。在存储密码过程中,直接存储明文密码是很危险的,因此在存储密码前需要使用 MD5 算法加密, 这样不仅提高了用户信息的安全性,同时也增加了密码破解的难度。
在注册界面点击注册按钮后,需要获取用户名,用户密码和再次确认密码,当两次密码相同时,将用户名和密码(经过 MD5 加密)保存到 SharedPreferences 中。同时当注册成功之后需要将用户名传递到登录界面中。
2.登录模块
登录界面主要是为用户提供一个输入登录信息的界面,当点击登录按钮时需要在
SharedPreferences 中查询输入的用户名是否有对应的密码,如果有则用此密码与当前输入的密码(需 MD5 加密)进行比对,如果信息一致,则登录成功,并把登录成功的状态和用户名保存到 SharedPreferences 中,便于后续判断登录状态和获取用户名。如果登录失败,则有两种情况,一种是输入的用户名和密码不一致;另一种是此用户名不存在。
【知识点】
l 标题栏的引用;
l EditText 控件、Button 控件;
l SharedPreferences 的使用;
l setResult(RESULT_OK, data)方法的使用;
l Intent 的使用。
【技能点】
l 掌握登录界面的设计和逻辑构思;
l 通过 SharedPreferences 实现数据的存取功能;
l 通过 setResult(RESULT_OK, data)方法实现界面间数据的回传;
l 通过 Intent 实现 Activity 之间的跳转;
l 实现博学谷的登录功能。
登录界面主要是为用户提供一个登录的入口,在登录界面中用户可以输入用户名和密码,点击登录按钮。若用户还未注册,可以点击“立即注册”进入注册界面;若用户忘记密码,则可以点击“找回密码”进入找回密码界面,界面效果如图所示。
当点击登录按钮时,需要先判断用户名和密码是否为空,若为空则提示请输入用户名和密码;若不为空则获取用户输入的用户名,由于博学谷项目用的是本地数据,因此根据用户名在 SharedPreferences 中查询是否有对应的密码,如果有对应的密码并且与用户输入的密码(需 MD5 加密)比对一致,则登录成功。
四、“我”模块
1.“我”界面
根据“我”的界面设计图可知,该界面包含了用户头像、用户名、播放记录条目, 设置条目和底部用于切换界面的导航栏。当点击用户头像和用户名时会进入个人中心, 点击播放记录条目时会进入查看播放记录的界面,点击设置条目时会进入设置界面。在底部导航栏中包含 3 个按钮,分别为课程、习题和我,这 3 个按钮是用于切换课程界面、
习题界面和“我”的界面。由于 3 个界面的底部都包含了这 3 个按钮,因此可以创建一个底部导航栏框架方便每个界面使用。
【知识点】
l ImageView 控件、TextView 控件;
l SharedPreferences 的使用。
【技能点】
l 掌握底部导航栏框架的设计和逻辑构思;
l 掌握如何获取和清除 SharedPreferences 中的数据;
l 学会搭建底部导航栏框架。底部导航栏
根据前面介绍的设计图可知,此项目包含一个底部导航栏(即底部 3 个按钮),为了方便后续布局的搭建,因此创建一个底部导航栏 UI 的框架,界面效果如图所示。
在底部导航栏中点击不同的按钮会进入不同的界面,因此需要为 3 个按钮添加监听事件。根据所在界面的不同,导航栏中的按钮和文字也有选中和未选中两种状态,因此需要创建方法来设置按钮的不同状态。在界面中间部分会根据按钮的选中状态切换不同的界面,因此需要创建相应的方法用于创建视图。
“我”界面需要显示头像,用户名,播放记录条目,设置条目和底部导航栏,界面效果如图所示。
在“我”界面中需要判断用户是否登录,若用户已经登录则显示用户名,若用户未登录则显示“点击登录”。若用户已经登录,当点击用户头像时会跳转到个人资料界面, 点击播放记录条目时跳转到播放记录界面,点击设置条目时跳转到设置界面。
2.设置模块
在设置界面主要包含了修改密码、设置密保、退出登录等功能。当用户点击修改密码时会跳转到修改密码界面,当用户点击设置密保时会跳转到设置密保界面,当点击退出登录时会退出当前登录账号。
【知识点】
l ImageView 控件、TextView 控件;
l SharedPreferences 的使用;
l setResult(RESULT_OK, data)方法的使用。
【技能点】
l 掌握设置界面的设计和逻辑构思;
l 掌握如何清除 SharedPreferences 中的数据;
l 通过 setResult(RESULT_OK, data)方法实现界面间的数据回传功能;
l 实现博学谷的退出登录功能。
根据任务综述可知设置界面有 3 个功能,分别为修改密码、设置密保和退出登录, 界面效果如图所示。
在设置界面中添加点击事件,当点击修改密码时跳转到修改密码界面,当点击设置密保时跳转到设置密保界面,当点击退出登录时清除登录状态和用户名,并且将退出的状态传递给 MainActivity。
1)修改密码
修改密码界面主要是让用户能够在必要时去修改密码,保证用户信息的安全性。修改密码需要输入一次原始密码和两次新密码来防止用户输入错误,密码修改成功后需要把 SharedPreferences 中用户的旧密码修改成新密码。
【知识点】
l EditText 控件、Button 控件;
l SharedPreferences 的使用。
【技能点】
l 掌握修改密码界面的设计和逻辑构思;
l 掌握如何修改 SharedPreferences 中的数据;
l 实现博学谷的修改密码功能。
修改密码界面主要是让用户在必要时修改自己的原始密码,从而保证用户信息的安全性,界面效果如图所示。
根据图可知,修改密码界面主要用于输入原始密码、新密码、再次输入新密码。输入的原始密码与从 SharedPreferences 中读取的原始密码必须一致,输入的新密码与原始密码不能相同,再次输入的新密码与输入的新密码必须相同。以上条件都符合之后, 点击保存按钮提示新密码设置成功,同时修改 SharedPreferences 中的原始密码。
2)设置密保和找回密码
根据功能展示可知,设置密保界面和找回密码界面基本相同,同时两个界面的代码逻辑也十分相似,因此这两个界面可以使用同一个布局文件,也可以使用同一个 Activity 来处理逻辑代码。设置密保主要是将当前用户输入的姓名作为密保,找回密码是根据用户输入的用户名和密保姓名将该用户的密码重置为初始密码 123456(由于之前保存的密码是经过 MD5 加密的,MD5 是不可逆的,所以之前的密码不能获取明文)。
【知识点】
l EditText 控件、TextView 控件、Button 控件;
l SharedPreferences 的使用。
【技能点】
l 掌握设置密保和找回密码界面的设计和逻辑构思;
l 掌握如何获取和修改 SharedPreferences 中的数据;
l 实现博学谷的设置密保功能;
l 实现博学谷的找回密码功能。
设置密保界面主要用于输入要设为密保的姓名,找回密码界面可以根据用户当前输入的用户名和设为密保的姓名找回密码,界面效果如图所示。
根据任务综述可知,设置密保界面和找回密码界面用的同一个 Activity,在这个
Activity 中主要是根据从设置界面和登录界面传递过来的 from 参数的值来判断要跳转到哪个界面,若值为 security 则处理的是设置密保的界面,否则处理的就是找回密码的界面。设置密保界面的逻辑主要是保存用户输入的姓名到 SharedPreferences 中,找回密码界面的逻辑主要是把 SharedPreferences 中用户名对应的原始密码修改为 123456。
五、个人资料模块
1.个人资料显示界面
个人资料界面主要用于显示用户信息,其中包含用户头像、用户名、昵称、性别和签名,除了头像和用户名不可修改之外,其余信息均可修改。当注册一个新用户并第一次进入个人资料界面时,除用户名以外的信息均使用默认值,当修改个人资料信息时需要使用 SQLite 数据库进行保存。
【知识点】
l SQLite 数据库的使用。
【技能点】
l 掌握个人资料界面的设计与逻辑构思;
l 掌握如何修改性别属性的值;
l 通过 SQLite 数据库实现昵称、性别、签名的保存功能。
个人资料界面主要用于展示用户的个人信息,包括用户头像、用户名、昵称、性别和签名,界面效果如图所示。
个人资料界面主要用于展示用户的相关信息,当进入个人资料界面时,首先查询数据库中的用户信息,并将信息展示到界面上。个人资料界面中的昵称,性别和签名是可以修改的,因此需要添加相应的监听事件,当点击昵称时跳转到昵称修改界面,当点击性别时弹出性别选择对话框,当点击签名时跳转到签名修改界面。
创建用户信息表
博学谷用户具有用户名、昵称、性别等信息,为了便于后续对这些属性进行操作, 因此创建一个 UserBean 类来存放这些属性。
在个人资料界面中,由于经常会对用户信息进行保存和更新,因此需要创建一个数据库来对用户信息进行操作,便于后续数据的显示和更新。用户包含用户名、昵称、性别和签名信息,因此需要在数据库中创建与之对应的表。
DBUtils 工具类
当读取用户资料或者对用户信息进行更改时需要对数据库进行操作,因此创建一个
DBUtils 工具类专门用于操作数据库。通过 DBUtils 类可以读取数据库中保存的用户信息,将用户的个人信息保存到数据库中,以及对数据库中保存的用户信息进行修改。
2.个人资料修改界面
个人资料修改界面主要用于修改用户昵称和签名,由于修改昵称界面和修改签名界面基本相同,因此可以使用同一个布局文件。根据个人资料界面传递过来的参数 flag 来判断修改的是哪个属性。
【知识点】
l EditText 监听器的使用。
【技能点】
l 掌握个人资料修改界面的设计和逻辑构思;
l 掌握如何修改昵称和签名属性的值;
l 通过监听器(addTextChangedListener)监听 EditText 控件输入的文字变化;
l 实现博学谷的个人资料修改功能。
个人资料修改界面主要是为了修改用户的昵称和签名,界面主要包含一个文本输入框,用于输入个人信息;一个快速清空文本内容的图标,用于清空文本输入框中的内容。 界面效果如图所示。
在设置界面中添加点击事件,当点击修改密码时跳转到修改密码界面,当点击设置密保时跳转到设置密保界面,当点击退出登录时清除登录状态和用户名,并且将退出的状态传递给 MainActivity。
六、习题模块
1.习题界面
习题界面主要是给用户展示《Android 移动开发基础案例教程》1-10 章的选择题, 当点击习题列表中的条目时,会跳转到对应章节的习题详情页面,由于博学谷项目用的是本地数据,因此需要把每章的习题标题和习题数目封装到一个 ExercisesBean 对象中, 并保存到 List 集合中。由于习题界面有用到 ListView 控件,因此还需要创建一个数据适配器 ExercisesAdapter 对 ListView 进行数据填充。
【知识点】
l ListView 控件;
l Adapter 的创建与使用。
【技能点】
l 掌握习题界面的设计和逻辑构思;
l 通过 ListView 控件实现数据的列表展示;
l 通过 Adapter 实现对 ListView 控件的数据填充。
习题界面主要是使用 ListView 控件展示 1-10 章的章节序号,章节名称及习题个数, 界面效果如图所示。
习题界面主要用于展示《Android 移动开发基础案例教程》1-10 章的习题。我们可以将数据信息封装到 ExercisesBean 对象中,在习题界面进行展示。
习题界面 Item
由于习题界面用到了 ListView 控件,因此需要为该控件创建一个 Item 界面,在 Item 界面中需要展示章节序号,章节名称以及该章节所包含的题目数量,界面效果如图所示。
创建 ExercisesBean
创建 ExercisesBean 类用来存放章节及习题所包含的相关属性,每个章节所包含的属性有章节 Id、章节标题、习题数量、章节序号背景、习题 Id、习题题干、习题的 A 选项、B 选项、C 选项、D 选项、正确答案以及被用户选中的选项等。
习题界面 Adapter
由于习题界面用到了 ListView 控件,因此需要创建一个数据适配器对 ListView 进行数据适配。
2.习题详情界面
习题详情界面主要用于展示每章的所有选择题,每道题由题干、A 选项、B 选项、C 选项、D 选项组成,当用户选择某个选项后程序会自行判断对错,显示正确答案(用户选择答案后不能重新进行选择)。由于博学谷用的是本地数据并且所有章节的习题数量较大,因此需要把每章节的数据以 XML 文件的形式存放在 assets 文件夹中,当需要获取习题数据时解析对应的 XML 文件即可。
【知识点】
l ListView 控件;
l Adapter 的创建与使用;
l XML 文件的解析。
【技能点】
l 掌握习题详情界面的设计和逻辑构思;
l 通过 ListView 控件实现数据的列表展示;
l 通过 Adapter 实现对 ListView 控件的数据填充;
l 通过解析 XML 文件获取每章节的习题;
l 实现博学谷习题的练习功能。
习题详情界面主要是显示习题的题干以及 A 选项、B 选项、C 选项、D 选项,用户点击选项后即可知道习题的答案,界面效果如图所示。
由于习题详情界面用到了 ListView 控件,因此需要为该控件创建一个 Item 界面。每一个 Item 包含题干部分和四个选项,每个选项包含选项图片和选项内容,界面效果如图所示。
在习题列表界面中,点击任意一个条目就会跳转到习题详情界面并显示对应章节的习题,在这个跳转的过程中,需要从习题界面获取传递过来的章节 Id 和 Title。由于每章节习题存放在 assets 文件夹中对应的 XML 文件中,因此需要根据 Id 从 XML 文件中解析对应章节的数据,并且在点击 A、B、C、D 选项时会替换正确和错误的图标。当用户选择习题答案之后,该题目的选项不能被再次选中。
博学谷项目中的所有习题都是存放在 XML 文件中,从本地加载进行显示,因此需要在 assets 文件夹中创建 10 个 XML 文件保存每章的习题内容。每个 XML 文件都包含习题的 id、题干、选项内容及正确答案等信息。
由于习题详情界面用到了 ListView 控件, 因此需要创建一个数据适配器来对
ListView 进行数据填充。由于做过的习题不允许用户重做,因此用 ArrayList 来记住做过的习题位置。由任务综述可知,当点击习题选项的同时会提示正确答案,因此需要判断用户所选的答案是否正确,若正确则此选项前面换成绿色图标,若不正确则换成红色图标。
七、课程模块
1.课程列表界面
在博学谷项目开发中,程序经过欢迎界面后会直接进入主界面也就是课程界面。课程界面分为上下两部分,上部分通过 ViewPager 与 Fragment 实现滑动广告展示,下部分是通过 ListView 控件来展示《Android 移动开发基础案例教程》1-10 章的课程列表。由于博学谷项目用的是本地数据并且课程界面数据量比较大,因此课程界面的所有数据需存放在 XML 文件中,通过解析 XML 文件来获取数据填充界面。
【知识点】
l Fragment 的使用;
l ViewPager 控件;
l XML 文件的解析;
l 自定义控件的使用。
【技能点】
l 掌握课程界面的设计和逻辑构思;
l 通过 Fragment 与 ViewPager 控件实现广告栏的滑动效果;
l 通过解析 XML 文件获取每章节的课程;
l 掌握如何自定义控件。
在课程界面需要编写广告栏逻辑和章节视频列表逻辑,由于广告栏每隔一段时间会自动切换到下一张图片,因此可以创建一个线程进行实现。章节视频列表数据是从 assets 文件夹中的 chaptertitle.xml 文件解析加载的。
水平滑动广告栏界面
水平滑动广告栏主要用于展示广告信息或者活动信息,由 ViewPager 控件和一个自定义的线性布局 ViewPagerIndicator 组成的,界面效果如图所示。
课程界面
课程界面主要是由水平滑动广告栏和基础视频列表组成,广告栏主要用于展示博学谷的教材体系及所得奖项信息,基础视频列表主要是展示课程列表,界面效果如图所示。
课程界面 Item
课程界面是使用 ListView 控件展示视频列表的,因此需要创建一个该列表的 Item 界面。每个 Item 中包含有两个章节信息,每一个章节信息中又包含一个章节图片,一个章节名称和一个章节概要,界面效果如图所示。
创建 CourseBean
由于每章课程都会包含章节 Id、课程图片上的标题、章节标题、章节视频简介等属性,同时在课程界面还需要一个广告栏图片属性,因此需要创建一个 CourseBean 类来存放这些属性。
创建 AdBannerFragment
由于课程界面的广告栏用到了 ViewPager 控件,因此创建一个 AdBannerFragment 类来设置 ViewPager 控件中的数据。
创建 AdBannerAdapter
由于广告栏用到了 ViewPager 控件,因此需要创建一个数据适配器 AdBannerAdapter 对 ViewPager 控件进行数据适配。
课程界面 Adapter
课程界面的课程列表是用 ListView 控件展示的,因此需要创建一个数据适配器CourseAdapter 对 ListView 控件进行数据适配。由于每个 Item 分为左右两部分,因此需要在 CourseAdapter 中判断数据是加载到哪个部分的。
课程界面数据的存放
在 assets 文件夹中创建一个 XML 文件,用于存放课程界面的数据。该 XML 文件中包含有章节 id,章节标题,章节图片上的概述,以及章节简介。
2.课程详情界面
课程详情界面用于展示每章节课程简介和视频列表,其中视频列表的数据是从
assets 文件夹中的 data.json 文件中获取的。当用户是登录状态时,此界面所播放过的视频信息会保存到本地数据库中,同时出现在用户的播放记录中,本案例以播放本地视频为例(注意此视频首先要保存到手机 SD 卡中)。
【知识点】
l VideoView 控件;
l JSON 数据解析;
l 数据库 SQLite 的使用。
【技能点】
l 掌握课程详情界面的设计和逻辑构思;
l 掌握如何解析 JSON 数据;
l 通过 SQLite 数据库实现视频信息的保存功能。
在博学谷项目中,点击课程界面列表中的条目,会跳转到课程详情界面。课程详情界面是显示每章节的课程简介和视频列表。课程简介部分展示该章节的简介,视频列表部分展示该章节所包含的课程视频。当用户点击视频列表中的某个条目时,会播放相应的视频,界面效果如图所示。
课程详情界面主要展示课程简介和视频列表,当点击课程简介按钮时,展示课程简介的布局;当点击视频列表按钮时,展示视频列表布局。在视频列表中,视频列表数据是根据课程界面传递过来的章节 Id 获取的,当用户是登录状态并点击了视频列表时,会把点击过的视频信息保存到数据库中,然后在播放记录界面显示出来。
课程详情界面 Item
由于课程详情界面用到了 ListView 控件,因此需要为该控件创建一个 Item 界面, 界面效果如图所示。
创建 VideoBean
由于每章节的视频详细信息都会有章节 Id、视频 Id、章节标题、视频标题、视频播放地址等属性,因此需要创建一个 VideoBean 类来存放这些属性。
课程详情界面 Adapter
由于课程详情界面的视频列表用的是 ListView 控件,因此需要创建一个数据适配器
VideoListAdapter 对 ListView 进行数据适配。在数据适配器中需要为 Item 添加点击事件的监听,当点击 Item 时需要跳转到视频播放界面播放相应的视频。
视频列表数据的存放
视频列表部分需要展示相关的视频信息,因此需要在 assets 文件夹中创建一个
data.json 文件保存视频相关信息
全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026
返回首页
如转载请注明来源于www.biyezuopin.vip