云计算百科
云计算领域专业知识百科平台

网络资源模板--基于Android Studio 实现的外卖订餐App

目录

一、测试环境说明

二、项目简介

三、项目演示

四、部设计详情(部分)

商家首页

用户首页

五、项目源码 


一、测试环境说明

电脑环境

Windows 11

编写语言

JAVA

开发软件

Android Studio  (2020)

开发软件只要大于等于测试版本即可(近几年官网直接下载也可以),若是版本低于测试版本请自行测试。项目需要根据你的软件自行适配

二、项目简介

该项目简介来自网络,具体内容需要自行测试

本系统基于 Android 平台开发,采用 Java语言编写。采用 MVC模式进行设计,将业务逻辑、数据访问和界面显示分离,提高代码的可维护性和可重用性。

数据库采用 SQLite,支持轻里级数据存储和快速查询。同时,使用 HTTP 协议进行网络通信,实现数据的远程访问和同步。

在开发过程中,我们采用了Android studio 作为开发工具,使用了 Grade构建工具进行项目构建和依赖管理。本系统是一个综合性的Android 管理系统,主要包括以下几个功能模块:

账号管理:系统支持分权管理,不同账号拥有不同的权限。管理员拥有最高权限,可以进行权限分配等操作。账号密码采用加密算法进行安全存储,确保用户数据的安全性。同时,系统支持多语言切换,满足不同国家和地区用户的需求。

商家管理:商家可以进行店铺商品的增删改查操作,同时可以发布新的商品信息。商品信息包括名称、描述、价格、图片等,商家可以根据需求添加或修改商品信息。此外,商家还可以修改密码和个人信息,提高账号的安全性,用户管理:用户可以通过系统主册商家或用户账号,并设置密码。用户可以查看未处理订单、已完成订单等,并根据订单状态和时间筛选和查看订单信息。用户还可以查看商家评论,修改个人信息和密码,以及增改查收货地址等。

订单管理:本系统支持买家和卖家进行订单操作,包括查看未处理订单、已完成订单、取消订单和完成订单等。用户可以根据订单状态和时间筛选和查看订单信息,同时可以查看订单详情和操作订单状态。此外,系统还支持订单导出和打印功能,方便用户管理和跟踪订单。

评论管理:用户可以对购买的商品进行评价,为其他用户提供参考。评论内容包括评分、文字评价和图片评价等,用户可以根据需要进行修改或删除评论。同时,系统还支持匿名评价功能,保护用户的隐私和权益。

收货地址管理:用户可以添加、删除或修改收货地址,方便用户在购买商品时选择不同的收货地址。系统支持存储多个收货地址,提高用户的购物体验。

三、项目演示

网络资源模板–基于Android studio 外卖订餐App

四、部设计详情(部分)

商家首页

1. 页面结构分析

该页面采用经典的顶部搜索栏+中部内容区+底部导航栏的三段式布局结构。

顶部是蓝色背景的搜索框,中部为商品列表展示区(使用ListView实现),底部是包含"首页"、"添加商品"和"我的"三个选项的RadioButton导航栏。

整体采用RelativeLayout作为根布局,通过相对定位控制各组件的位置关系,如搜索栏与内容区的上下衔接,以及导航栏固定在屏幕底部。

这种结构清晰地区分了功能模块,符合常见的移动应用设计规范。

2. 核心技术应用

页面运用了多项Android核心技术:通过SP实现本地数据存储,用于获取当前登录账号;使用自定义BaseAdapter(FoodAdapter)实现ListView的数据绑定;采用TextWatcher监听器实现实时搜索功能;

通过上下文菜单(ContextMenu)实现商品条目的长按操作;利用Intent实现页面跳转和数据传递。

特别是通过RadioButton模拟底部导航栏效果,实现图文混排,并通过自定义ButtonColorListener控制按钮状态切换,展现了良好的交互设计。

3. 功能详细说明

该页面是商家端主界面,主要实现三大功能:顶部搜索框可实时筛选商品;中部列表展示商家所有商品,支持长按弹出菜单进行删除或修改操作;底部导航可切换至商品添加页面或个人中心。

搜索功能通过监听输入内容动态查询数据库并刷新列表,商品管理功能通过数据库操作实现持久化存储。整体采用事件驱动架构,各项操作都配有相应的用户反馈(如删除成功的Toast提示),体现了完整的业务逻辑闭环和用户体验设计。

package com.example.orderfood.activity;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.example.orderfood.R;
import com.example.orderfood.adapter.FoodAdapter;
import com.example.orderfood.bean.FoodBean;
import com.example.orderfood.dao.FoodDao;
import com.example.orderfood.dao.UserDao;
import com.example.orderfood.listener.ButtonColorListener;

import java.util.ArrayList;

public class BusinessActivity extends AppCompatActivity {

ArrayList<FoodBean> originalItems;
ListView foodList;

FoodAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_business);

//实现加载食物列表
foodList = this.findViewById(R.id.business_list_view);//创建一个视图

//获取当前账号,进行查询
SharedPreferences sharedPreferences = getSharedPreferences("data", Context.MODE_PRIVATE);
String account = sharedPreferences.getString("account", "");

originalItems = UserDao.getAllFood(account);//查找到所有数据

if (originalItems == null || originalItems.size() == 0) {
foodList.setAdapter(null);
} else {
adapter = new FoodAdapter(this, originalItems);
foodList.setAdapter(adapter);
}

//实现点击按钮的时候设置一下选中的颜色
Button home = findViewById(R.id.business_home);
Button add = findViewById(R.id.business_add);
Button my = findViewById(R.id.business_my);

home.setOnClickListener(new ButtonColorListener(home, add, my, 1));
add.setOnClickListener(new ButtonColorListener(home, add, my, 1));
my.setOnClickListener(new ButtonColorListener(home, add, my, 1));
home.callOnClick();//模拟点击home

//点击加号进行跳转界面
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(BusinessActivity.this, AddGoodActivity.class);
startActivity(intent);

}
});

my.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

Intent intent = new Intent(BusinessActivity.this, BusinessMyActivity.class);
overridePendingTransition(0, 0);
startActivity(intent);

}
});

EditText search = findViewById(R.id.business_search);//这个是搜索的内容
search.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void afterTextChanged(Editable editable) {
//执行搜索
String name = search.getText().toString();

originalItems = UserDao.getAllFoodByName(account, name);//查找到所有数据

if (originalItems == null || originalItems.size() == 0) {
foodList.setAdapter(null);
} else {
adapter = new FoodAdapter(BusinessActivity.this, originalItems);
foodList.setAdapter(adapter);
}
}
});

//实现注册上下文
registerForContextMenu(foodList);
//实现上下文菜单,实现删除的功能
foodList.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
openContextMenu(view);
return true;
}
});

}

// onCreateContextMenu

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

super.onCreateContextMenu(menu, v, menuInfo);
//设置要弹出的菜单内容

// 设置弹出菜单的标题和选项
getMenuInflater().inflate(R.menu.business_home_menu, menu);
}

//设置点击的事件内容

@SuppressLint("NonConstantResourceId")
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {

//获取到菜单的上下文内容
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
//获取点击到内容是什么
int position = info.position;

if (item.getItemId() == R.id.business_home_list_menu_delete) {
deleteItem(position);
return true;
} else if (item.getItemId() == R.id.business_home_list_menu_update) {
updateItem(position);
return true;
} else {
return super.onContextItemSelected(item);
}

}

/**
* 删除功能
*
* @param position
*/
private void deleteItem(int position) {

//执行删除的第一部,要从界面上面删掉内容,同时还要丛数据库内容的方面删掉内容
// 从数据源中删除项
//实现在数据库层面上进行删除功能
FoodBean temp = adapter.getItem(position);
int a = FoodDao.delFood(temp.getS_food_id());
if (a == 1) {
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
adapter.remove(adapter.getItem(position));
// 通知适配器数据已更改
adapter.notifyDataSetChanged();
} else {
Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show();
}

}

/**
* 这个是更改项目
*
* @param position
*/

private void updateItem(int position) {

//执行删除的第一部,要从界面上面删掉内容,同时还要丛数据库内容的方面删掉内容
// 从数据源中删除项
//实现在数据库层面上进行删除功能
FoodBean temp = adapter.getItem(position);
//需要将ID传过去
Intent intent = new Intent(BusinessActivity.this, UpdateGoodActivity.class);
intent.putExtra("id", temp.getS_food_id());
startActivity(intent);

//打开更改界面,并且绘制更改界面

// int a= FoodDao.delFood(temp.getS_food_id());
// if(a==1){
// Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
// adapter.remove(adapter.getItem(position));
// // 通知适配器数据已更改
// adapter.notifyDataSetChanged();
// }else{
// Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show();
// }

}

}

用户首页

1. 页面结构分析

该页面采用单Activity多Fragment架构,整体为垂直方向的LinearLayout,包含一个占据主要空间的Fragment容器(FrameLayout)和底部的Material Design风格导航栏(BottomNavigationView)。

页面通过动态加载不同Fragment实现功能切换,结构简洁高效。顶部无工具栏设计使内容区域最大化,蓝色调的底部导航栏提供清晰的视觉引导,符合现代移动应用设计趋势。

Fragment容器使用权重布局(layout_weight)确保在不同屏幕尺寸下都能合理分配空间,体现响应式设计思想。

2. 核心技术应用

页面核心采用AndroidX的FragmentManager进行动态Fragment管理,通过Transaction实现界面切换。

底部导航使用Material Components库的BottomNavigationView,配合自定义颜色选择器实现图标和文字的状态变化。

利用Intent参数传递实现差异化初始化(如直接跳转"我的"页面)。Fragment事务使用commitNow()确保立即执行,避免异步带来的状态不一致问题。

整体架构体现了单一Activity原则和模块化设计思想,便于功能扩展和维护。

3. 功能详细说明

这是用户端主控页面,提供三大功能模块切换:首页展示未完成订单和个人中心。

特殊场景支持通过Intent参数直接定位到指定模块(如从登录跳转时直达个人中心)。

底部导航栏采用Material Design规范,选中状态有视觉反馈,操作流畅。页面还预留了exit()方法用于安全退出应用,通过finishAffinity()确保完全关闭所有相关Activity。

这种设计既保证了用户体验的一致性,又提供了灵活的场景适配能力。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".user.activity.UserManageActivity"
android:orientation="vertical"
android:background="#F5F5F5"
>

<!–多层级可以事项 A–>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>

</FrameLayout>

<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#03A9F4"
app:menu="@menu/bottom_navigation_menu"
app:itemIconTint="@color/selectcolor"
app:itemTextColor="@color/selectcolor"
/>

</LinearLayout>

五、项目源码 

👇👇👇👇👇快捷方式👇👇👇👇👇

赞(0)
未经允许不得转载:网硕互联帮助中心 » 网络资源模板--基于Android Studio 实现的外卖订餐App
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!