基于Android移动应用开发的中华诗词鉴赏APP
本文介绍了一款基于Android平台的中国诗词学习应用开发实践。应用采用MVVM架构,集成了诗词浏览、分类检索、社区互动、个人笔记和AI问答等功能模块。核心功能包括:主界面底部导航、分类朝代检索、社区帖子发布与管理、个人笔记系统,以及与DeepSeek API集成的流式AI问答功能。应用通过现代化交互方式传承古典诗词文化,技术实现上使用了OkGo、Glide等流行框架,并注重用户体验优化,如空状态
中国诗词学习应用开发实践
文章目录
一、前言
在移动互联网时代,传统文化的传承与创新成为了一个重要课题。中国诗词作为中华文化的瑰宝,如何通过现代技术手段让更多人接触和喜爱,是我们开发团队一直思考的问题。本文将介绍我们开发的中国诗词学习应用,详细阐述其功能模块的实现过程和技术要点,希望能为类似项目的开发提供参考。
二、项目概述
本项目是一个基于Android平台的中国诗词学习应用,旨在通过现代化的交互方式,让用户更加便捷地学习和欣赏中国古典诗词。应用采用了MVVM架构模式,使用了OkGo和OkHttp进行网络请求,Glide进行图片加载,以及RecyclerView实现列表数据展示。
项目定位
- 面向人群:诗词爱好者、学生、教师等对中国古典诗词感兴趣的用户
- 核心价值:提供便捷的诗词学习工具,传承和弘扬中国传统文化
- 技术目标:打造一个功能完善、用户体验良好的诗词学习应用
整体架构
应用采用了模块化的设计思想,将不同功能封装在不同的Activity和Fragment中,提高了代码的可维护性和可扩展性。整体架构如下:
- 主界面:使用BottomNavigationView实现底部导航,包含四个核心Fragment:首页、分类、社区、我的
- 功能模块:包括诗词浏览、搜索、收藏、笔记、AI问答、社区互动等
- 数据层:通过API接口与后端服务器进行数据交互
- UI层:使用RecyclerView、CoordinatorLayout等组件实现响应式布局
三、核心功能模块实现
1. 主界面模块
功能描述:应用的主入口,使用BottomNavigationView实现底部导航,包含四个核心Fragment:首页、分类、社区、我的。
技术实现:
- 使用FragmentTransaction管理Fragment的切换
- 实现了AcFragmentListener接口,用于Fragment与Activity之间的通信
- 底部导航栏的点击事件处理
关键代码:
private void selectedFragment(int position) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
hideFragment(fragmentTransaction);
if (position == 0) {
if (mHomeFragment == null) {
mHomeFragment = new HomeFragment();
fragmentTransaction.add(R.id.fragment_container, mHomeFragment);
} else {
fragmentTransaction.show(mHomeFragment);
}
} else if (position == 1) {
// 分类Fragment
} else if (position == 2) {
// 社区Fragment
} else {
// 个人中心Fragment
}
fragmentTransaction.commit();
}
2. 首页模块
功能描述:应用的核心页面,包含轮播图、功能模块入口和猜你喜欢推荐列表。
技术实现:
- 使用Banner库实现轮播图效果
- 功能模块入口的点击事件处理
- 猜你喜欢推荐列表的实现
- 登录状态的判断和跳转
关键功能点:
- 诗词鉴赏:跳转到分类页面
- 诗词搜索:跳转到搜索页面
- AI问答:跳转到AI问答页面
- 名句默写:预留功能
- 每日一读:跳转到每日一读页面
- 收藏夹:跳转到收藏列表页面(需登录)
- 笔记管理:跳转到笔记管理页面(需登录)
- 分享诗词:预留功能
3. 分类模块
功能描述:按朝代分类展示诗词,用户可以选择不同朝代查看对应诗词。
技术实现:
- 水平RecyclerView实现分类标签
- 垂直RecyclerView实现诗词列表
- 分类标签的点击事件处理
- 空布局处理
关键代码:
private void queryPoetryListByCategory() {
OkGo.<String>get(ApiConstants.QUERY_POETRY_LIST_BY_CATEGORY_URL)
.params("dynasty", dynasty)
.execute(new HttpStringCallback(getActivity()) {
@Override
protected void onSuccess(String msg, String response) {
PoetryListInfo poetryListInfo = GsonUtils.parseJson(response, PoetryListInfo.class);
if (poetryListInfo != null && poetryListInfo.getList() != null) {
mPoetryList.clear();
mPoetryList.addAll(poetryListInfo.getList());
mPoetryListAdapter.notifyDataSetChanged();
}
// 显示空状态或列表
if (mPoetryList.isEmpty()) {
llEmpty.setVisibility(View.VISIBLE);
} else {
llEmpty.setVisibility(View.GONE);
}
}
});
}
4. 社区模块
功能描述:用户可以发布帖子、查看帖子列表、点赞、评论和分享帖子。
技术实现:
- 发布帖子页面(PostActivity):实现文本输入、图片上传、表单验证和提交功能
- 帖子列表页面(PostFragment):使用RecyclerView实现帖子列表展示,显示用户头像、用户名
- 帖子详情页面(PostDetailsActivity):使用CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout实现滑动效果,使用RecyclerView实现评论列表
关键功能点:
- 发布帖子:支持文本输入和图片上传
- 帖子列表:显示用户头像、用户名、帖子内容、图片、时间和点赞数
- 点赞功能:点击点赞按钮增加点赞数
- 评论功能:跳转到帖子详情页面进行评论
- 分享功能:分享帖子内容
5. 个人中心模块
功能描述:用户可以查看个人信息、管理收藏和笔记、查看足迹等。
技术实现:
- 用户信息展示和更新
- 功能入口的点击事件处理
- 登录状态的判断和跳转
- 退出登录功能
关键功能点:
- 我的收藏:跳转到收藏列表页面(需登录)
- 我的笔记:跳转到笔记管理页面(需登录)
- 我的足迹:预留功能
- 设置:预留功能
- 关于我们:预留功能
- 退出登录:清除用户信息并跳转到登录页面
6. 笔记管理模块
功能描述:用户可以查看、管理自己的诗词笔记,优先展示诗词数据,再展示笔记内容。
技术实现:
- 使用RecyclerView实现笔记列表展示
- 实现了笔记的长按删除功能
- 空布局处理,当没有笔记时显示空布局提示
关键代码:
private void getNoteAllList() {
OkGo.<String>get(ApiConstants.QUERY_NOTE_LIST_URL)
.params("username", UserInfo.getUserInfo().getUsername())
.execute(new HttpStringCallback(this) {
@Override
protected void onSuccess(String msg, String response) {
NoteListInfo noteListInfo = GsonUtils.parseJson(response, NoteListInfo.class);
if (noteListInfo != null && noteListInfo.getList() != null) {
mNoteInfoList = noteListInfo.getList();
if (mNoteInfoList.isEmpty()) {
llEmpty.setVisibility(View.VISIBLE);
rvNoteAllList.setVisibility(View.GONE);
} else {
llEmpty.setVisibility(View.GONE);
rvNoteAllList.setVisibility(View.VISIBLE);
setupAdapter();
}
} else {
llEmpty.setVisibility(View.VISIBLE);
rvNoteAllList.setVisibility(View.GONE);
}
}
});
}
7. AI问答模块
功能描述:与DeepSeek API进行单聊,实现AI问答功能,采用流式读取方式实现数据的渐进式加载与展示。
技术实现:
- 使用原生OkHttp客户端实现流式加载
- 实时处理响应数据并更新UI
- 优化用户体验,减少等待时间
关键代码:
private void sendRequestToDeepSeek(String message) {
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, requestBody.toString());
Request request = new Request.Builder()
.url("https://api.deepseek.com/v1/chat/completions")
.header("Content-Type", "application/json")
.header("Authorization", "Bearer sk-79ebf8e897734079a939da32a0bc2336")
.post(body)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
// 读取响应流并实时更新UI
}
});
}
8. 每日一读模块
功能描述:随机获取一首诗词进行展示,并提供朗读功能。
技术实现:
- 使用TextToSpeech实现文本朗读功能
- 随机获取诗词数据
- 诗词内容的展示
9. 搜索模块
功能描述:用户可以通过关键词搜索诗词。
技术实现:
- 搜索输入框的实现
- 搜索结果的展示
- 跳转到诗词详情页面
10. 诗词详情模块
功能描述:展示诗词的详细内容,包括标题、作者、朝代、内容等,并提供朗读、收藏、笔记功能。
技术实现:
- 诗词内容的展示
- TextToSpeech实现文本朗读功能
- 收藏功能的实现
- 笔记功能的实现
四、技术实现细节
1. 网络请求封装
应用使用了OkGo库进行网络请求,并封装了HttpStringCallback类来处理响应。对于需要流式加载的场景(如AI问答),使用了原生OkHttp客户端。
2. 适配器设计
应用中的各个列表都使用了RecyclerView实现,并为每个列表创建了对应的适配器,如PostListAdapter、CommentAdapter等。适配器中实现了数据绑定、点击事件处理和空布局支持。
3. 登录状态管理
应用使用了UserInfo类来管理用户登录状态,在需要登录的功能中进行登录判断和跳转。
4. 空布局处理
应用中的各个列表页面都实现了空布局处理,当没有数据时显示友好的提示信息,提升了用户体验。
5. 图片加载
应用使用了Glide库进行图片加载,支持网络图片和本地图片的加载,以及圆形头像的显示。
6. 响应式布局
应用在帖子详情页面中使用了CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout实现了流畅的滑动效果,增强了界面的视觉体验。
五、技术亮点
-
流式数据加载:在AI问答模块中,使用OkHttp的ResponseBody和BufferedReader实时读取并解析API响应流,实现了数据的渐进式加载与展示,提升了用户体验。
-
响应式布局:在帖子详情页面中,使用CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout实现了流畅的滑动效果,增强了界面的视觉体验。
-
模块化设计:采用了模块化的设计思想,将不同功能封装在不同的Activity和Fragment中,提高了代码的可维护性和可扩展性。
-
空布局处理:在各个列表页面中,实现了空布局处理,当没有数据时显示友好的提示信息,提升了用户体验。
-
权限管理:在图片上传功能中,实现了Android运行时权限请求,确保应用的安全性。
-
用户状态管理:实现了用户登录状态的管理,在需要登录的功能中进行登录判断和跳转。
-
RecyclerView优化:在各个列表页面中,使用RecyclerView实现数据展示,并通过适配器的优化提高了性能。
六、项目结构
app/
├── src/
│ ├── main/
│ │ ├── java/com/app/chinese/poetry/
│ │ │ ├── activity/ # 各个页面的Activity
│ │ │ ├── adapter/ # 适配器
│ │ │ ├── api/ # API常量
│ │ │ ├── base/ # 基础类
│ │ │ ├── entity/ # 实体类
│ │ │ ├── fragment/ # 碎片
│ │ │ ├── http/ # 网络请求
│ │ │ ├── utils/ # 工具类
│ │ │ └── MainActivity.java # 主Activity
│ │ └── res/ # 资源文件
│ └── AndroidManifest.xml # 应用配置
七、 总结与展望
本项目成功实现了一个功能丰富的中国诗词学习应用,通过现代化的技术手段,为用户提供了便捷的诗词学习和社区互动功能。应用采用了模块化的设计思想,实现了首页、分类、社区、个人中心等核心功能模块,技术上使用了流式数据加载、响应式布局等先进技术,提升了用户体验。
未来,我们计划进一步完善应用功能,增加更多的诗词学习资源,优化AI问答的交互体验,以及添加更多的社区互动功能,让更多人通过这个应用感受到中国诗词的魅力。
通过这个项目,我们不仅实现了一个实用的诗词学习应用,也积累了丰富的Android开发经验,特别是在流式数据加载、响应式布局和模块化设计方面。希望本文能为类似项目的开发提供参考,共同推动传统文化的数字化传承与创新。
八、项目运行效果截图




更多推荐



所有评论(0)