目录
一、项目演示
二、开发情况
三、项目详情
四、项目完备源码
一、项目演示
本项目素材、数据和布局页面参考均来自《蜜雪冰城》,在此特别声明感谢!
基于Android Studio 蜜雪冰城(奶茶饮品)—原创
二、开发情况
三、项目详情
1.启动页

这段代码是一个简朴的Android应用程序启动活动(Activity),详细功能如下:
1. **耽误进入登录页面:**
- 在 `onCreate()` 方法中,使用 `Handler` 和 `Runnable` 实现了一个耽误实行的功能,耽误时间为3秒。
- `runnable` 对象的 `run()` 方法调用了 `tomainActive()` 方法,在耽误结束后启动 `LoginRegisterActivity` 并关闭当前的 `StartActivity`。
2. **计时器功能:**
- 界说了一个内部类 `TimeCount`,继续自 `CountDownTimer`,用于实行一个四秒的倒计时利用,每隔一秒触发一次。
- `onFinish()` 方法中,倒计时结束后移除了 `handler` 中的 `runnable` 对象,确保不会在倒计时结束后再次跳转到登录页面。
3. **Activity 生命周期方法:**
- `onCreate()` 方法中,设置了布局文件 `activity_start.xml` 作为界面显示内容,并启动了耽误实行和计时器。
- `onDestroy()` 方法中未显示重写,但在 `toMainActive()` 方法中的 `finish()` 方法确保了在跳转完成后关闭当前 Activity。
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#fff">
- <ImageView
- android:id="@+id/image_mxbc"
- android:layout_width="214.0dip"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="166.0dip"
- android:scaleType="centerInside"
- android:src="@drawable/img_mxbc" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="60.0dip"
- android:text="豫ICP备13006352号-7A"
- android:textColor="#777777"
- android:textSize="10sp" />
- <TextView
- android:id="@+id/count_down"
- android:layout_width="56.0dip"
- android:layout_height="28.0dip"
- android:layout_alignParentRight="true"
- android:layout_alignParentBottom="true"
- android:layout_marginRight="20.0dip"
- android:layout_marginBottom="50.0dip"
- android:background="@drawable/bg_splash_count_down"
- android:gravity="center"
- android:text="跳过"
- android:textColor="#fff"
- android:textSize="11sp" />
- </RelativeLayout>
复制代码 2.注册、登录
这段代码实现了一个基本的注册页面功能:
- **视图与控件**:包罗关闭页面按钮、手机号、密码、确认密码的输入框以及跳转登录页面按钮和注册按钮。
- **功能与逻辑**:
- 点击关闭按钮或跳转登录按钮可退出当前页面。
- 注册按钮点击后,进行输入验证:
- 查抄手机号、密码和确认密码是否为空。
- 查抄确认密码与密码是否同等。
- 使用 `UserHelper` 类进行数据库利用,将用户信息添加到数据库中。
- 根据利用效果显示注册乐成或失败的提示消息,并结束当前页面。
这段代码通过简朴的逻辑和界面设计,实现了用户注册的基本流程,确保了基本的输入验证和数据库利用功能。

这段代码实现了一个登录页面的功能,详细功能和特点如下:
1. **界面元素和事件绑定**:
- 声明了各个控件(如关闭按钮、手机号输入框、密码输入框、获取验证码按钮、注册链接、登录按钮等)和辅助类(`UserHelper`)。
- 在 `onCreate` 方法中进行了布局初始化和事件监听的设置。
2. **获取验证码功能**:
- 当手机号输入框内容发生变化时,监听器查抄手机号是否为空。如果不为空,则启用获取验证码按钮,而且设置点击事件显示固定的验证码(这里是 "1234")。
3. **登录功能实现**:
- 使用了 `TextWatcher` 监听器来检测手机号、密码和验证码输入框的变化。
- 当所有字段都非空时,启用登录按钮。点击登录按钮时,首先查抄验证码是否为 "1234",如果不是则提示验证码错误;否则,使用 `UserHelper` 类的方法查抄用户的手机号和密码是否匹配。
- 如果匹配乐成,则提示登录乐成,并将用户手机号生存到 `SharedPreferences` 中,并关闭登录界面;否则提示登录失败。
4. **注册链接处理**:
- 点击注册链接 (`tvRegister`) 启动 `RegisterActivity`,答应用户注册新账号。
5. **关闭页面按钮处理**:
- 点击关闭按钮 (`pageClose`) 关闭当前登录页面。
总体来说,该代码实现了基本的用户登录流程,包罗输入验证、验证码获取、登录验证和跳转注册等功能,适适用于一个简朴的用户认证和管理系统。
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_login);
- // 初始化界面元素和事件监听
- initView();
- setupCloseButton();
- setupRegisterLink();
- setupLoginFunctionality();
- setupSmsCodeListener();
- }
复制代码 3.首页
这段代码是一个Android的片断(Fragment),实现了以下功能:
- 显示一个轮播广告(使用了第三方库 `Banner`)。
- 根据用户登录状态显示不同的内容:已登录则显示用户信息和订单选项,未登录则显示登录提示和登录按钮。
- 点击订单选项(inshop 和 takeout)时跳转到相应的订单处理页面。
- 点击用户信息地区时根据登录状态跳转到个人信息页面或登录页面。
主要用到了 `Glide` 库加载图片,并进行了一些视图初始化和点击事件处理的设置。
4.点餐页面
这段代码实现了一个点单页面的 Android Fragment,主要功能包罗:
- 展示菜单分类和产物列表,并支持根据搜索关键字进行筛选显示。
- 根据用户登录状态动态展示地址选择、结算功能,并处理相应的点击事件。
- 使用 `Gson` 解析本地 JSON 数据来加载菜单信息。
- 及时更新总代价显示,并支持用户在不同订单类型(自提或外送)之间切换。
该代码还包罗了处理返回按钮、清空订单和地址信息等相关逻辑。
5.订单页、订单详情页

这段代码实现了一个订单页面的 Android Fragment,主要功能包罗:
- 根据用户登录状态,显示对应手机号的订单列表。
- 当用户未登录时,显示登录提示信息。
- 当用户已登录且有订单时,显示订单列表,并提供适配器来展示订单信息。
- 提供了 onResume 方法来在 Fragment 可见时革新订单列表。
- 包罗一个返回按钮的处理逻辑,但详细利用未实现。
该代码使用了 `ListView` 来展示订单,通过 `SharedPreferences` 获取用户手机号,并使用 `OrderHelper` 类来利用订单数据。
- <?xml version="1.0" encoding="utf-8"?>
- <androidx.constraintlayout.widget.ConstraintLayout 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"
- android:background="@color/grey_F5F5F5"
- tools:context=".Fragment.OrderFragment">
- <LinearLayout
- android:id="@+id/linearLayout6"
- android:layout_width="0dp"
- android:layout_height="40dp"
- android:background="@color/white"
- android:orientation="horizontal"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
- <TextView
- android:id="@+id/tv_title"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:gravity="center"
- android:text="订单管理"
- android:textColor="@color/black"
- android:textSize="18sp"
- android:textStyle="bold" />
- </LinearLayout>
- <ListView
- android:id="@+id/lv"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_marginStart="4dp"
- android:layout_marginTop="8dp"
- android:layout_marginEnd="4dp"
- android:divider="@android:color/transparent"
- android:dividerHeight="0dp"
- android:scrollbars="none"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/linearLayout6" />
- <ImageView
- android:id="@+id/img_null"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:src="@drawable/img_empty_order"
- android:visibility="visible"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/linearLayout6" />
- </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
这段代码实现了一个订单详情页面的 Android 活动(Activity),功能包罗:
- 根据传入的意图显示订单的详细信息,包罗订单类型(自提或外送)、时间、订单号、商品数量和总金额。
- 根据订单类型调整显示内容,包罗是否显示外送费用和外送布局的可见性。
- 根据用户手机号和订单号查询订单数据,并使用自界说的适配器 `OrderDetailsAdapter` 显示订单详情列表。
- 提供了返回按钮和再来一单按钮的点击事件处理逻辑。
该活动通过 `SharedPreferences` 获取用户手机号,并使用 `OrderHelper` 类来利用订单数据。
6.地址页面、修改增长页



7.结算页面

这段代码实现了一个支付页面的 Android 活动(Activity),功能包罗:
- 根据订单类型(自提或外送)显示相应的配送地址和费用信息。
- 根据用户选择的支付方式(微信或支付宝)更新支付利用。
- 显示用户的订单列表,并提供支付利用的点击事件处理逻辑。
- 使用 `SharedPreferences` 获取用户的地址信息和手机号,使用 `TakeOrderHelper` 和 `OrderHelper` 处理订单数据的存储和获取。
该活动答应用户选择支付方式,并在确认支付后生存订单并返回到主界面。
8.我的页面、关于我们页面


这两个页面只用来显示登录和退出登录然后跳转编辑资料页面使用
9.编辑资料页面

这段代码实现了一个用户信息管理页面的 Android 活动(Activity),功能包罗:
- 显示用户的手机号、用户名和密码,并答应用户修改并生存这些信息。
- 使用 `SharedPreferences` 获取用户的手机号,通过 `UserHelper` 类从数据库中获取和更新用户信息。
- 提供返回按钮和生存按钮的点击事件监听,以及生存乐成或失败时的提示信息。
该活动答应用户查看和修改用户名和密码,并将修改后的信息更新到数据库中。
- /**
- * 初始化视图组件
- */
- private void initView() {
- // 通过 ID 查找视图组件
- pageBack = findViewById(R.id.page_back);
- etName = findViewById(R.id.et_name);
- etPassword = findViewById(R.id.et_password);
- tvPhone = findViewById(R.id.tv_phone);
- btnSave = findViewById(R.id.btn_save);
- userHelper = new UserHelper(this); // 创建 UserHelper 实例
- }
- /**
- * 设置监听器
- */
- private void setUpListeners() {
- // 设置返回按钮的点击事件
- pageBack.setOnClickListener(v -> finish());
- // 设置保存按钮的点击事件
- btnSave.setOnClickListener(v -> saveUserInfo());
- }
复制代码
四、项目完备源码
|