目录
一、项目演示
本项目素材、数据和布局页面参考均来自《蜜雪冰城》,在此特别声明感谢!
基于Android Studio 蜜雪冰城(奶茶饮品)---原创
二、开发环境
三、项目详情
1.启动页
这段代码是一个简单的Android应用程序启动活动(Activity),具体功能如下:
- **延迟进入登录页面:**
-
在 `onCreate()` 方法中,使用 `Handler` 和 `Runnable` 实现了一个延迟执行的功能,延迟时间为3秒。
-
`runnable` 对象的 `run()` 方法调用了 `tomainActive()` 方法,在延迟结束后启动 `LoginRegisterActivity` 并关闭当前的 `StartActivity`。
- **计时器功能:**
-
定义了一个内部类 `TimeCount`,继承自 `CountDownTimer`,用于执行一个四秒的倒计时操作,每隔一秒触发一次。
-
`onFinish()` 方法中,倒计时结束后移除了 `handler` 中的 `runnable` 对象,确保不会在倒计时结束后再次跳转到登录页面。
- **Activity 生命周期方法:**
-
`onCreate()` 方法中,设置了布局文件 `activity_start.xml` 作为界面显示内容,并启动了延迟执行和计时器。
-
`onDestroy()` 方法中未显示重写,但在 `toMainActive()` 方法中的 `finish()` 方法确保了在跳转完成后关闭当前 Activity。
XML
<?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` 类进行数据库操作,将用户信息添加到数据库中。
-
根据操作结果显示注册成功或失败的提示消息,并结束当前页面。
这段代码通过简单的逻辑和界面设计,实现了用户注册的基本流程,确保了基本的输入验证和数据库操作功能。
XML
<?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"
tools:context=".Activity.RegisterActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/page_close"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="left"
android:src="@drawable/icon_cart_close" />
<ImageView
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="40dp"
android:src="@drawable/img_mxbc" />
<EditText
android:id="@+id/register_phone_number"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="40dp"
android:layout_marginRight="15dp"
android:background="@drawable/bg_corner_solid_f5f5f5_6dp"
android:hint="手机号码"
android:inputType="number"
android:paddingLeft="20.0dip"
android:textColor="@color/black"
android:textColorHint="@color/grey_AAAAAA"
android:textCursorDrawable="@drawable/shape_cursor_color"
android:textSize="@dimen/text_size_13sp" />
<EditText
android:id="@+id/register_password"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="20dp"
android:layout_marginRight="15dp"
android:background="@drawable/bg_corner_solid_f5f5f5_6dp"
android:hint="用户密码"
android:inputType="textPassword"
android:paddingLeft="20.0dip"
android:textColor="@color/black"
android:textColorHint="@color/grey_AAAAAA"
android:textCursorDrawable="@drawable/shape_cursor_color"
android:textSize="@dimen/text_size_13sp" />
<EditText
android:id="@+id/register_rpassword"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="20dp"
android:layout_marginRight="15dp"
android:background="@drawable/bg_corner_solid_f5f5f5_6dp"
android:hint="用户密码"
android:inputType="textPassword"
android:paddingLeft="20.0dip"
android:textColor="@color/black"
android:textColorHint="@color/grey_AAAAAA"
android:textCursorDrawable="@drawable/shape_cursor_color"
android:textSize="@dimen/text_size_13sp" />
<TextView
android:id="@+id/tv_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginRight="15dp"
android:gravity="center|right"
android:text="已有帐号,立即登录!"
android:textColor="@color/black" />
<TextView
android:id="@+id/register_action"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="50dp"
android:layout_marginRight="@dimen/default_right_padding"
android:background="@drawable/bg_login_action"
android:enabled="true"
android:gravity="center"
android:text="立 即 注 册"
android:textColor="@color/white"
android:textSize="@dimen/text_size_16sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
这段代码实现了一个登录页面的功能,具体功能和特点如下:
- **界面元素和事件绑定**:
-
声明了各个控件(如关闭按钮、手机号输入框、密码输入框、获取验证码按钮、注册链接、登录按钮等)和辅助类(`UserHelper`)。
-
在 `onCreate` 方法中进行了布局初始化和事件监听的设置。
- **获取验证码功能**:
- 当手机号输入框内容发生变化时,监听器检查手机号是否为空。如果不为空,则启用获取验证码按钮,并且设置点击事件显示固定的验证码(这里是 "1234")。
- **登录功能实现**:
-
使用了 `TextWatcher` 监听器来检测手机号、密码和验证码输入框的变化。
-
当所有字段都非空时,启用登录按钮。点击登录按钮时,首先检查验证码是否为 "1234",如果不是则提示验证码错误;否则,使用 `UserHelper` 类的方法检查用户的手机号和密码是否匹配。
-
如果匹配成功,则提示登录成功,并将用户手机号保存到 `SharedPreferences` 中,并关闭登录界面;否则提示登录失败。
- **注册链接处理**:
- 点击注册链接 (`tvRegister`) 启动 `RegisterActivity`,允许用户注册新账号。
- **关闭页面按钮处理**:
- 点击关闭按钮 (`pageClose`) 关闭当前登录页面。
总体来说,该代码实现了基本的用户登录流程,包括输入验证、验证码获取、登录验证和跳转注册等功能,适合用于一个简单的用户认证和管理系统。
java
@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` 库加载图片,并进行了一些视图初始化和点击事件处理的设置。
XML
<?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"
android:background="@color/grey_f4f4f7"
android:orientation="vertical"
tools:context=".Fragment.HomeFragment">
<ScrollView
android:layout_width="match_parent"
android:scrollbars="none"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/home_user_layout"
android:layout_width="fill_parent"
android:layout_height="70dp"
android:layout_marginLeft="8.0dip"
android:layout_marginTop="-37.0dip"
android:layout_marginRight="8.0dip"
android:background="@drawable/home_01"
android:gravity="center"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/header_avatar"
android:layout_width="32.0dip"
android:layout_height="32.0dip"
android:layout_marginLeft="16.0dip"
android:src="@drawable/icon_not_login_user" />
<LinearLayout
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_marginLeft="14.0dip"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="尊敬的会员"
android:textColor="@color/black"
android:textSize="@dimen/text_size_16sp"
android:textStyle="bold" />
</LinearLayout>
<TextView
android:id="@+id/tv_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20.0dip"
android:text="注册/登录"
android:textColor="@color/themeRedColor"
android:textSize="@dimen/text_size_13sp"
android:textStyle="bold"
android:visibility="gone" />
<LinearLayout
android:id="@+id/ll_show"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="0"
android:textColor="@color/black" />
<TextView
android:id="@+id/textView7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center"
android:text="雪王币"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/textView6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="0"
android:textColor="@color/black" />
<TextView
android:id="@+id/textView8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center"
android:text="优惠卷"
android:textColor="@color/black" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginTop="10dp"
android:layout_marginRight="8dp"
android:background="@drawable/home_01"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/inshop"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_weight="1"
android:src="@drawable/inshop" />
<ImageView
android:id="@+id/takeout"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_weight="1"
android:src="@drawable/takeout" />
</LinearLayout>
<View
android:id="@+id/view4"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="16.0dip"
android:layout_marginTop="5dp"
android:layout_marginRight="16.0dip"
android:background="@color/grey_150A5E_5" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView4"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_weight="1"
android:src="@drawable/home_03" />
<ImageView
android:id="@+id/imageView5"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_weight="1"
android:src="@drawable/home_04" />
<ImageView
android:id="@+id/imageView6"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_weight="1"
android:src="@drawable/home_001" />
<ImageView
android:id="@+id/imageView7"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_weight="1"
android:src="@drawable/home_02" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tab_"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:layout_marginTop="15dp"
android:layout_marginRight="8dp"
android:text="甜蜜资讯"
android:textColor="@color/black"
android:textSize="@dimen/text_size_16sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/img_1"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="10dp"
android:layout_marginRight="8dp"
android:scaleType="fitXY"
android:src="@drawable/banner2" />
<ImageView
android:id="@+id/img_2"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="10dp"
android:layout_marginRight="8dp"
android:scaleType="fitXY"
android:src="@drawable/banner3" />
</LinearLayout>
</ScrollView>
</LinearLayout>
4.点餐页面
这段代码实现了一个点单页面的 Android Fragment,主要功能包括:
-
展示菜单分类和产品列表,并支持根据搜索关键字进行筛选显示。
-
根据用户登录状态动态展示地址选择、结算功能,并处理相应的点击事件。
-
使用 `Gson` 解析本地 JSON 数据来加载菜单信息。
-
实时更新总价格显示,并支持用户在不同订单类型(自提或外送)之间切换。
该代码还包括了处理返回按钮、清空订单和地址信息等相关逻辑。
XML
<?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:id="@+id/fragment_takeOrder"
tools:context=".Fragment.TakeOrderFragment">
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_inshop"
android:layout_width="50dp"
android:layout_height="match_parent"
android:gravity="center"
android:text="自提"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_takeout"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:gravity="center"
android:text="外送"
android:textColor="@color/black_40"
android:textSize="18sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_corner_solid_f5f5f5_6dp"
android:gravity="center|left"
android:orientation="horizontal"
android:padding="3dp">
<ImageView
android:id="@+id/img_search"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_search" />
<EditText
android:id="@+id/et_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:background="@color/grey_E6E6E6"
android:ems="10"
android:hint="冰鲜柠檬茶"
android:inputType="textPersonName"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="@+id/linearLayout3"
app:layout_constraintStart_toStartOf="@+id/linearLayout3"
app:layout_constraintTop_toBottomOf="@+id/linearLayout3">
<LinearLayout
android:id="@+id/ll_address"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp"
android:gravity="center|left"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/tv_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="配送至 · 陕西省"
android:textColor="@color/black"
android:textSize="16sp" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="10dp"
android:layout_height="10dp"
android:layout_marginLeft="2dp"
android:src="@drawable/icon_arrow_dark_next" />
</LinearLayout>
<TextView
android:id="@+id/textView11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="蜜雪冰城(总店)"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="2dp"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@+id/bottom_layout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout4">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_menu"
android:layout_width="80dp"
android:layout_height="match_parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_menuItem"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_weight="1"></androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
<LinearLayout
android:id="@+id/bottom_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/white"
android:clipChildren="false"
android:orientation="vertical"
android:padding="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<FrameLayout
android:id="@+id/cart_anim"
android:layout_width="38.0dip"
android:layout_height="40.0dip"
android:layout_gravity="center_vertical"
android:layout_marginLeft="9.0dip"
android:layout_marginRight="12.0dip">
<ImageView
android:id="@+id/order_cart"
android:layout_width="31.0dip"
android:layout_height="35.0dip"
android:layout_gravity="center_vertical"
android:layout_marginBottom="2.0dip"
android:src="@drawable/icon_cart" />
<TextView
android:id="@+id/order_goods_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|right|top"
android:background="@drawable/icon_bg_number_tip"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/text_size_10sp"
android:visibility="gone" />
</FrameLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|right"
android:layout_marginRight="123.0dip"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/price_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="horizontal">
<TextView
android:id="@+id/delivery_fee"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignBottom="@id/total_price"
android:layout_alignParentTop="true"
android:layout_marginTop="0dp"
android:layout_marginRight="6.0dip"
android:layout_marginBottom="2.0dip"
android:layout_toLeftOf="@id/total_tip"
android:gravity="bottom"
android:text="另需配送费¥2"
android:textColor="@color/grey_FFAAAAAA"
android:textSize="@dimen/text_size_12sp"
android:visibility="invisible" />
<TextView
android:id="@+id/total_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="¥0"
android:textColor="@color/black_333333"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/total_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/total_price"
android:layout_marginBottom="2.0dip"
android:layout_toLeftOf="@id/total_price"
android:text="合计:"
android:textColor="@color/black"
android:textSize="@dimen/text_size_12sp" />
</RelativeLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
5.订单页、订单详情页
这段代码实现了一个订单页面的 Android Fragment,主要功能包括:
-
根据用户登录状态,显示对应手机号的订单列表。
-
当用户未登录时,显示登录提示信息。
-
当用户已登录且有订单时,显示订单列表,并提供适配器来展示订单信息。
-
提供了 onResume 方法来在 Fragment 可见时刷新订单列表。
-
包括一个返回按钮的处理逻辑,但具体操作未实现。
该代码使用了 `ListView` 来展示订单,通过 `SharedPreferences` 获取用户手机号,并使用 `OrderHelper` 类来操作订单数据。
XML
<?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` 类来操作订单数据。
XML
<?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_F8F8F8"
tools:context=".Activity.OrderDetailsActivity">
<FrameLayout
android:id="@+id/page_title_layout"
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@drawable/img_order_detail_bg"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@id/page_back"
android:layout_width="45.0dip"
android:layout_height="60dp"
android:paddingLeft="12.0dip"
android:paddingTop="15dp"
android:paddingRight="12.0dip"
android:paddingBottom="12.0dip"
android:scaleType="centerInside"
android:src="@drawable/icon_page_back_white" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/page_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="28.0dip"
android:layout_marginTop="60dp"
android:ellipsize="none"
android:maxWidth="260.0dip"
android:singleLine="true"
android:text="订单已完成"
android:textColor="@color/white"
android:textSize="@dimen/text_size_18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/page_status_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="28.0dip"
android:layout_marginTop="12.0dip"
android:ellipsize="none"
android:maxWidth="200.0dip"
android:maxLines="2"
android:text="如未取餐,请及时到店领取,祝您用餐愉快"
android:textColor="@color/white"
android:textSize="@dimen/text_size_12sp" />
</LinearLayout>
<ImageView
android:id="@+id/page_img_action"
android:layout_width="130.0dip"
android:layout_height="90.0dip"
android:layout_gravity="bottom|center|right"
android:layout_marginRight="@dimen/default_right_padding"
android:layout_marginBottom="15dp"
android:src="@drawable/img_order_finish_king" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="10.0dip"
android:layout_gravity="bottom"
android:background="@drawable/bg_corner_solid_ffffff_top_12dp" />
</FrameLayout>
</FrameLayout>
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:scrollbars="none"
app:layout_constraintBottom_toTopOf="@+id/linearLayout9"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/page_title_layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:background="@drawable/bg_corner_solid_ffffff_12dp"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/textView9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="蜜雪冰城(总店)"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView24"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="河南省郑州市金水区文化路与北环交叉口瀚海·北金商务A座16楼"
android:textSize="12sp" />
</LinearLayout>
<ImageView
android:id="@+id/imageView11"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/icon_order_location" />
<ImageView
android:id="@+id/imageView12"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="10dp"
app:srcCompat="@drawable/icon_order_phone" />
</LinearLayout>
<View
android:id="@+id/view8"
android:layout_width="match_parent"
android:layout_height="1.0dip"
android:layout_marginLeft="4dp"
android:layout_marginTop="10dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="@color/grey_F5F5F5" />
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none" />
<View
android:id="@+id/view9"
android:layout_width="match_parent"
android:layout_height="1.0dip"
android:layout_marginLeft="4dp"
android:layout_marginTop="10dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="@color/grey_F5F5F5" />
<LinearLayout
android:id="@+id/ll_peisong"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/textView22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="配送费"
android:textColor="@color/black" />
<ImageView
android:id="@+id/imageView10"
android:layout_width="20dp"
android:layout_height="20dp"
app:srcCompat="@drawable/icon_question" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center|right"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_peisong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="¥2"
android:textColor="@color/black"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<View
android:id="@+id/view_peisong"
android:layout_width="match_parent"
android:layout_height="1.0dip"
android:layout_marginLeft="4dp"
android:layout_marginTop="10dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="@color/grey_F5F5F5" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="5dip"
android:layout_marginRight="@dimen/default_right_padding"
android:layout_marginBottom="9dip"
android:gravity="bottom|center|right"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="12.0dip"
android:layout_marginBottom="12.0dip"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16.0dip"
android:text="下单时间"
android:textColor="@color/black"
android:textSize="@dimen/text_size_13sp" />
<TextView
android:id="@+id/order_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16.0dip"
android:textColor="@color/black"
android:textSize="@dimen/text_size_13sp" />
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8.0dip">
<TextView
android:id="@+id/orderId_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="16.0dip"
android:text="订单号码"
android:textColor="@color/black"
android:textSize="@dimen/text_size_13sp" />
<TextView
android:id="@+id/orderId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="16.0dip"
android:layout_toRightOf="@id/orderId_tip"
android:ellipsize="end"
android:maxWidth="185.0dip"
android:maxLines="1"
android:textColor="@color/black"
android:textSize="@dimen/text_size_13sp" />
</RelativeLayout>
<LinearLayout
android:id="@id/remark_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8.0dip"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16.0dip"
android:text="备注"
android:textColor="@color/black"
android:textSize="@dimen/text_size_13sp" />
<TextView
android:id="@id/remark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="42.0dip"
android:text="无"
android:textColor="@color/black"
android:textSize="@dimen/text_size_13sp" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
</LinearLayout>
</ScrollView>
<LinearLayout
android:id="@+id/linearLayout9"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/white"
android:gravity="center|right"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/one_more"
android:layout_width="70dp"
android:layout_height="25dp"
android:layout_below="@id/price_layout"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:background="@drawable/bg_corner_solid_fc3f41_4dp"
android:enabled="true"
android:gravity="center"
android:text="再来一单"
android:textColor="@color/red_FC3F41"
android:textSize="@dimen/text_size_12sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
6.地址页面、修改增加页
7.结算页面
这段代码实现了一个支付页面的 Android 活动(Activity),功能包括:
-
根据订单类型(自提或外送)显示相应的配送地址和费用信息。
-
根据用户选择的支付方式(微信或支付宝)更新支付操作。
-
显示用户的订单列表,并提供支付操作的点击事件处理逻辑。
-
使用 `SharedPreferences` 获取用户的地址信息和手机号,使用 `TakeOrderHelper` 和 `OrderHelper` 处理订单数据的存储和获取。
该活动允许用户选择支付方式,并在确认支付后保存订单并返回到主界面。
XML
<?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"
tools:context=".Activity.PayActivity">
<LinearLayout
android:id="@+id/linearLayout6"
android:layout_width="0dp"
android:layout_height="40dp"
android:background="@color/red_FC3F41"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:scrollbars="none"
app:layout_constraintBottom_toTopOf="@+id/frameLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout6">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_corner_solid_ffffff_12dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="9.0dip"
android:layout_marginRight="@dimen/default_right_padding"
android:text="TextView"
android:textColor="@color/red_FF0F4B"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="10dp"
android:layout_marginRight="@dimen/default_right_padding"
android:text="TextView"
android:textColor="@color/black" />
<TextView
android:id="@+id/tv_name_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="5dp"
android:layout_marginRight="@dimen/default_right_padding"
android:ellipsize="end"
android:maxLines="1"
android:text="TextView" />
<LinearLayout
android:id="@+id/ll_dianpu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="10dp"
android:layout_marginRight="@dimen/default_right_padding"
android:layout_marginBottom="10dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView34"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="蜜雪冰城(总店)" />
<TextView
android:id="@+id/textView35"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center|right"
android:text="订单由第三方骑手配送"
android:textColor="@android:color/holo_red_light" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="15dp"
android:background="@drawable/bg_corner_solid_ffffff_12dp"
android:orientation="vertical">
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="9.0dip"
android:layout_marginRight="@dimen/default_right_padding"
android:scrollbars="none" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="9.0dip"
android:layout_marginRight="@dimen/default_right_padding"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/textView22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="配送费"
android:textColor="@color/black" />
<ImageView
android:id="@+id/imageView10"
android:layout_width="20dp"
android:layout_height="20dp"
app:srcCompat="@drawable/icon_question" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center|right"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_peisong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="¥2"
android:textColor="@color/black"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="9.0dip"
android:layout_marginRight="@dimen/default_right_padding"
android:orientation="horizontal">
<TextView
android:id="@+id/textView26"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="打包费"
android:textColor="@color/black" />
<TextView
android:id="@+id/textView27"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center|right"
android:text="¥0"
android:textColor="@color/black" />
</LinearLayout>
<View
android:id="@+id/view6"
android:layout_width="match_parent"
android:layout_height="1.0dip"
android:layout_marginLeft="12.0dip"
android:layout_marginTop="10dp"
android:layout_marginRight="12.0dip"
android:layout_marginBottom="10dp"
android:background="@color/grey_F5F5F5" />
<View
android:id="@+id/view7"
android:layout_width="match_parent"
android:layout_height="1.0dip"
android:layout_marginLeft="12.0dip"
android:layout_marginTop="10dp"
android:layout_marginRight="12.0dip"
android:layout_marginBottom="10dp"
android:background="@color/grey_F5F5F5" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="5dip"
android:layout_marginRight="@dimen/default_right_padding"
android:layout_marginBottom="9dip"
android:gravity="bottom|center|right"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="共计10件,合计 " />
<TextView
android:id="@+id/tv_total"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¥55"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="15dp"
android:background="@drawable/bg_corner_solid_ffffff_12dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView19"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="9.0dip"
android:layout_marginRight="@dimen/default_right_padding"
android:text="支付方式"
android:textColor="@color/black"
android:textSize="@dimen/text_size_16sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="9.0dip"
android:layout_marginRight="@dimen/default_right_padding"
android:layout_marginBottom="9dip"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView3"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/icon_pay_wechat" />
<TextView
android:id="@+id/textView20"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:gravity="center|left"
android:text="微信"
android:textColor="@color/black" />
<RadioButton
android:id="@+id/rb_weixin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/red_FF0F4B"
android:checked="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView9"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/icon_pay_alipay" />
<TextView
android:id="@+id/textView21"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:gravity="center|left"
android:text="支付宝"
android:textColor="@color/black" />
<RadioButton
android:id="@+id/rb_zhifubao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/red_FF0F4B" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:background="@drawable/bg_corner_solid_ffffff_12dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/tableware_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="9.0dip"
android:layout_marginRight="@dimen/default_right_padding"
android:layout_marginBottom="4.0dip"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingTop="12.0dip"
android:paddingBottom="12.0dip">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12.0dip"
android:text="餐具"
android:textColor="@color/black"
android:textSize="@dimen/text_size_14sp" />
<TextView
android:id="@+id/tableware"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_marginLeft="12.0dip"
android:layout_marginRight="4.0dip"
android:layout_weight="1.0"
android:gravity="center|right"
android:hint="按餐量提供"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="@dimen/text_size_14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/remark_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/default_left_padding"
android:layout_marginTop="5dip"
android:layout_marginRight="@dimen/default_right_padding"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingTop="12.0dip"
android:paddingBottom="12.0dip">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12.0dip"
android:text="备注"
android:textColor="@color/black"
android:textSize="@dimen/text_size_14sp" />
<TextView
android:id="@+id/remark"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="12.0dip"
android:layout_marginRight="4.0dip"
android:layout_weight="1.0"
android:ellipsize="end"
android:gravity="center|right"
android:hint="暂不支持通过备注定制口味"
android:singleLine="true"
android:textColor="@color/black"
android:textSize="@dimen/text_size_14sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/white"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<View
android:id="@+id/bottom_line"
android:layout_width="fill_parent"
android:layout_height="0.5dip"
android:background="@color/grey_eeeeee" />
<TextView
android:layout_width="wrap_content"
android:layout_height="64.0dip"
android:layout_marginLeft="@dimen/default_left_padding"
android:gravity="center"
android:text="实付:"
android:textColor="@color/black"
android:textSize="@dimen/text_size_12sp" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
8.我的页面、关于我们页面
这两个页面只用来显示登录和退出登录然后跳转编辑资料页面使用
9.编辑资料页面
这段代码实现了一个用户信息管理页面的 Android 活动(Activity),功能包括:
-
显示用户的手机号、用户名和密码,并允许用户修改并保存这些信息。
-
使用 `SharedPreferences` 获取用户的手机号,通过 `UserHelper` 类从数据库中获取和更新用户信息。
-
提供返回按钮和保存按钮的点击事件监听,以及保存成功或失败时的提示信息。
该活动允许用户查看和修改用户名和密码,并将修改后的信息更新到数据库中。
java
/**
* 初始化视图组件
*/
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());
}
四、项目完整源码
👇👇👇👇👇快捷获取方式👇👇👇👇👇