# 安卓购物商城APP
### 版本 v1.3.7
### 项目背景
本项目是一个安卓开发课程期末大作业client端项目
作为一个作业性质项目,其本身有许多不完善之处,也有很多功能未实现,考虑到大部分学校对此类作业没有项目完整性要求,因此本着开源精神,将源码放出,给有类似开发需求的同学做一个参考
基于以上背景,本文档内容主要面向初学者,如有错误恳请路过大佬不吝指教
### 项目介绍
购物商城APP项目是一个基于Android平台的餐饮的O2O购物平台,app有5个基本页面(底部有常驻按钮)和三个功能页面
基本页面有:
- 主页
- 分类页
- 社区页
- 购物车
- 用户页
功能页面有:
- 商品详情页
- 登录页
- 注册页
注意:本项目所有测试基于Android Studio内置模拟器中Pixel 4a手机在API 32下的情况,无法保证在使用其他模拟器或其他机型下的正常运行,为减少出现不可预期的bug,请在该机型下运行项目.如果使用其他机型,请尽可能在5.8寸的1080*2340px屏幕环境下运行
### 功能说明
各个页面主要实现了以下功能:
- 主页
- 以**每行2列的网格布局形式**显示部分菜品的名称,描述,价格,图片,
- 点击每个商品会进入商品详情页面
- 分类页
- 以**列表**形式显示所有菜品的名称,描述,价格,图片,
- 点击每个商品会进入商品详情页面
- 商品详情页
- 展示了商品的所有信息
- 点击**加入购物车按钮**可以将商品添加到购物车列表
- 社区页
- 使用ViewPager展示可滑动的广告页面
- 购物车页面
- 显示添加到购物车的商品
- **勾选商品和点击加减号后购物车总价会发生相应的改变**
- **点击删除可以将商品从购物车删除**
- 进入购物车页面自动刷新数据,切换到其他页面自动保存数据
- 点击结算显示总价,完成结算
- 用户页面
- 在未登录状态下点击"请登录"字样,跳转到登录页面
- 登录状态下点击退出登录按钮完成退出登录
- 登录状态下显示当前登录用户名称和简介
- 登录界面
- 根据用户名和密码登录用户账号
- 点击"注册"按钮前往注册页面
- 注册页面完成注册后,自动登录
- 注册页面
- 根据信息注册用户账号
注意:
- 本项目除社区页的广告页面为静态数据外,**其他数据都从后台获取**
- 在无法获取后台数据的情况下会出现"**获取数据失败,服务器错误**"字样
若出现该情况,请检查:
1. 是否正确搭建后台项目
2. 是否正确配置后台IP地址和端口号
### 技术栈
项目使用到以下安卓知识点
- intent跳转,传参
- Fragment(碎片)
- RecyclerView,Adapter,ViewHolder
- ViewPager
- AlertDialog
项目使用到以下框架
- okhttp3
- gson 2.7
### 上手指南
#### 部署后台程序
在使用本项目前需要部署app对应的后台程序,用于提供数据
见另一个压缩包
#### 获取项目
项目使用方式非常简单,步骤如下:
- 方式一
1. 打开Android Studio,在欢迎页面(Welcome to Android Studio)中点击Get from VCS按钮
2. 在Version control复选框中选择路径
3. 在URL框中填入本项目地址
4. 在Directory框中选择导入本地后的目录
5. 点击按钮Clone
(注意:随着Android Studio版本更新,导入方式可能会发生改变.文档中的方式仅针对2021.2.1版本(2022年5月),如果发现该方法不适用,请善用搜索引擎搜索问题"如何在Android Studio中导入项目")
- 方式二
1. 在页面中选中master分支
2. 点击code按钮,选择下拉菜单中的Download ZIP,下载对应的压缩包文件
3. 解压文件,在Android Studio中打开对应的项目
4. 等待gradle加载完成
注意:本项目使用了okhttp3和gson框架,以及相应的androidx扩展包,如果您电脑中之前没有使用这些框架,则需要**等待gradle下载完成**,由于网络原因,过程可能比较慢,请善用梯子/加速器等工具
#### 开发前配置
在完成后台部署,并加载项目后,我们需要在config.properties文件中配置后台IP地址和端口号,具体路径为:app/src/main/assets/config.properties
在本项目中我们以本地后台服务器为例,因此**后台地址为本机ip地址**,端口号参考后台程序application.yml文件中server:port: xxxx,**默认为8088**.(如果不会查看本机ip地址,请善用搜索引擎搜索问题"如何查看本机ip地址")
注意:在更改网络环境之后(包括但不限于切换wifi),**本机ip地址会有可能发生改变**,记得修改config.properties文件中参数
### 程序说明
- 打开app后进入的首页,对应的是MainActivity,在MainActivity内含有五个Fragment,对应五个基本页面,而下方标签式导航则直接由MainActivity加载
- 五个Fragment都继承于BaseFragment,这是一个基类Fragemnt,用于编写所有Fragment中共有功能,各个Fragment在继承它时应重写这些方法,例如:
- `public abstract View initView()` 用于初始化组件
- `public void initData()` 用于初始化数据
- `public abstract void refreshData()` 用于切换回该页面时获取最新数据
- `public abstract void saveData()` 用于将要切换到其他页面时将本地数据保存到后台数据库
- 在MainActivity中定义方法
`private void switchFragment(BaseFragment fromFragment, BaseFragment nextFragment)`
用于切换Fragment,其中fromFragment为上次显示的Fragment,nextFragment为当前正要显示的Fragment
使用`FragmentTransaction`对象来控制Fragment的显示与隐藏,并在显示Fragment前调用`fromFragment.saveData();`,在隐藏Fragment前调用`nextFragment.refreshData();`达到切换页面前保存数据,切换页面后刷新数据
- 所有后台请求使用okhttp3框架发送,为简化开发,我将其发送get请求和post请求的代码封装到了utils目录下的OkhttpUtils工具类中,需要时直接使用静态类OkhttpUtils.doGet(参数)/.doPost(参数)发送对应请求即可
- 由于app中存在大量需要发送请求的地方,因此我写了一个位于utils目录下的PropertiesUtils工具类,用于读取config.properties中的地址和端口号,并将其转换为后台地址,需要时直接使用静态类PropertiesUtils.getUrl(mContext)获取后台url字符串,在之后拼接web层映射地址即可.
列如:
```
//发送登录请求
String url = PropertiesUtils.getUrl(mContext);
responseJson = OkhttpUtils.doPost(url + "/users/login", userJson);
```
其中,url为通过静态类获取的后台url,mContext为上下文,/users/login为后台web层映射,userJson为参数列表
- 前后端数据交互使用json格式的字符串,在之前的版本中使用协议类,但是由于gson工具在解析协议类时存在数据类型转换异常的bug,故在v1.1版本之后弃用
- 在Android4.0以后,系统不再允许直接在主线程中发送HTTP请求,因此需要开辟一个子线程,然后等到数据返回成功后再刷新UI,以防止长时间后台未响应导致报错
同时系统也不再运行直接在子线程中操控UI,因此我们使用Handler对象(线程处理器)来将子线程消息转发到主线程中操控UI,本项目使用比较多的在购物车模块的增删改查
例如:
```
public class ShoppingCartFragment extends BaseFragment {
...
//线程处理器
private Handler handler = new Handler();
...
@Override
public void refreshData() {
Log.i(TAG, "联网刷新数据");
new Thread() {
@Override
public void run() {
Log.i(TAG, "进入获取购物车商品线程");
...
try {
//发送登录请求
...
//数据获取成功,加创建商品布局
if (goodsList != null) {
h
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
安卓购物商城APP项目源码+数据库-Android期末大作业项目含文档说明(高分大作业),个人大三学期的期末大作业、经导师指导并认可通过的高分大作业设计项目,评审分98分。主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。 安卓购物商城APP项目源码+数据库-Android期末大作业项目含文档说明(高分大作业)安卓购物商城APP项目源码+数据库-Android期末大作业项目含文档说明(高分大作业),安卓购物商城APP项目源码+数据库-Android期末大作业项目含文档说明(高分大作业),个人大三学期的期末大作业、经导师指导并认可通过的高分大作业设计项目,评审分98分。主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。安卓购物商城APP项目源码+数据库-Android期末大作业项目含文档说明(高分大作业),个人大个人大三学期的期末大作业、经导师指导并认可通过的高分大作业设计项目,评审分98分。主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。
资源推荐
资源详情
资源评论

























收起资源包目录





































































































共 145 条
- 1
- 2
资源评论

- m0_750303202025-01-05感谢大佬分享的资源给了我灵感,果断支持!感谢分享~
- m0_655940422024-12-31资源质量不错,和资源描述一致,内容详细,对我很有用。

猰貐的新时代
- 粉丝: 1w+
- 资源: 3084

下载权益

C知道特权

VIP文章

课程特权

开通VIP
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- COMSOL 6.2 有限元仿真模型:压电复合材料厚度共振模态、阻抗相位曲线及表面位移仿真的研究.pdf
- COMSOL 6.2仿真:压电复合材料厚度共振模态与阻抗相位曲线的表面位移仿真.pdf
- COMSOL 6.2激光粉末床熔融工件表面激光清洗仿真模型:粗糙表面演化的多物理场模拟案例.pdf
- COMSOL 6.2激光熔覆与SLM增材制造仿真模型:优势及可拓展多道熔覆仿真.pdf
- COMSOL 6.2有限元仿真模型:1-3压电复合材料厚度共振模态、阻抗相位曲线及表面位移仿真的几何参数可变版.pdf
- COMSOL 6.3版:边坡强度折减及网格变形可视化在土石坝流-固耦合数值模拟中的应用案例.pdf
- COMSOL 6.3交流故障电弧放电仿真.pdf
- Comsol B-B本构方程在三维粗糙裂隙岩体建模中的应用及其对热流固三场的研究.pdf
- COMSOL BIC本征态计算与直接出图功能:2019PRL通用算法.pdf
- COMSOL BIC多级子分解.pdf
- COMSOL BIC极大手性.pdf
- COMSOL BIC全介质超表面2023年Nature Photonic文献复现:模型QBIC模态传输.pdf
- Comsol BIC拓扑远场偏振计算及本征模式偏振态计算的复杂分解算法与通用算法.pdf
- COMSOL FDTD微纳光学电磁仿真:BIC拓扑单向传输与含色散材料光子晶体能带求解,涵盖一维及二维光子晶体.pdf
- Comsol EBG能带结构计算与伪模式去除.pdf
- COMSOL FDTD微纳光学电磁仿真:一维与二维光子晶体含色散材料BIC拓扑单向传输研究.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
