网络资源模板--Android Studio 零食工坊(商城)

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码


一、项目演示

网络资源模板--零食工坊

二、项目测试环境

三、项目详情

  1. **加载 Fragment 布局**:
  • 使用 `inflater.inflate` 加载 `fragment_snack` 的布局。
  1. **视图组件初始化**:
  • 初始化了多个 UI 组件,包括:

  • `TabLayout` (`tabTitle`): 用于显示标签。

  • `RecyclerView` (`rvsnackList`): 用于展示零食列表。

  • 空状态布局 (`llEmpty`): 当列表为空时显示的视图。

  • 查询输入框 (`etQuery`): 供用户输入搜索关键词。

  • 搜索图标 (`ivSearch`): 触发搜索操作的图标。

  • 添加零食的浮动按钮 (`btnAdd`): 用于添加新零食。

  1. **设置搜索功能**:
  • 为搜索图标设置点击事件,点击后调用 `loadData()` 方法以加载数据。
  1. **键盘操作监听**:
  • 设置查询输入框的编辑动作监听器:

  • 当用户按下特定的键(actionId 为 3)时,隐藏键盘并调用 `loadData()` 方法。

  1. **添加零食功能**:
  • 为添加按钮设置点击事件,点击后启动 `AddSnackActivity`,并等待结果(请求码为 100)。
java 复制代码
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_snack, container, false);
        this.tabTitle = (TabLayout) view.findViewById(R.id.tab_title);
        this.rvsnackList = (RecyclerView) view.findViewById(R.id.rv_snack_list);
        this.llEmpty = (LinearLayout) view.findViewById(R.id.ll_empty);
        this.etQuery = (EditText) view.findViewById(R.id.et_query);
        this.ivSearch = (ImageView) view.findViewById(R.id.iv_search);
        this.btnAdd = (FloatingActionButton) view.findViewById(R.id.btn_add);
        initView();
        this.ivSearch.setOnClickListener(new View.OnClickListener() {
            /* class com.example.snack.ui.fragment.SnackFragment.AnonymousClass1 */

            public void onClick(View v) {
                SnackFragment.this.loadData();
            }
        });
        this.etQuery.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            /* class com.example.snack.ui.fragment.SnackFragment.AnonymousClass2 */

            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId != 3) {
                    return false;
                }
                KeyBoardUtil.hideKeyboard(v);
                SnackFragment.this.loadData();
                return true;
            }
        });
        this.btnAdd.setOnClickListener(new View.OnClickListener() {
            /* class com.example.snack.ui.fragment.SnackFragment.AnonymousClass3 */

            public void onClick(View v) {
                SnackFragment.this.startActivityForResult(new Intent(SnackFragment.this.myActivity, AddSnackActivity.class), 100);
            }
        });
        return view;
    }

在 `onCreate` 方法中,主要实现了登录界面的初始化及逻辑处理,具体功能如下:

主要功能概述

  1. **界面设置**:
  • 设置 Activity 的布局为 `activity_login`。
  1. **视图组件初始化**:
  • 初始化了多个 UI 组件,包括:

  • 账号输入框 (`etAccount`)

  • 密码输入框 (`etPassword`)

  • 注册文本 (`tvRegister`)

  • 找回密码文本 (`tv_mm`)

  • 登录按钮 (`btnLogin`)

  • 用户类型选择的单选按钮组 (`rgType`)

  • 用户和管理员的单选按钮 (`rbUser` 和 `rbAdmin`)

  • 同意协议的复选框 (`cbAgree`)

  1. **自定义 ActionBar**:
  • 初始化 `ActionBar`,设置标题和点击事件,左侧点击事件为结束当前 Activity。
  1. **点击事件处理**:
  • 注册点击事件:

  • 注册按钮:启动 `RegisterActivity`。

  • 找回密码按钮:启动 `PasswordActivity`。

  • 用户类型选择的单选按钮:保存选择的用户类型(普通用户或管理员)到 SharedPreferences。

  1. **登录逻辑**:
  • 登录按钮的点击事件处理:

  • 隐藏软键盘。

  • 获取输入的账号和密码。

  • 校验输入是否为空,并提供相应提示。

  • 检查用户是否存在,并验证密码是否正确。

  • 根据用户类型(管理员或普通用户)进行进一步验证。

  • 确认用户同意用户协议。

  • 登录成功后,将账号存入 SharedPreferences,启动 `MainActivity` 并显示成功提示。

总结

此方法清晰地组织了登录界面的逻辑,包括视图组件的初始化、事件处理和登录验证。整体结构逻辑严谨,能够有效地引导用户完成登录操作。

java 复制代码
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.activity = this;
        setContentView(R.layout.activity_login);

        etAccount = findViewById(R.id.et_account);
        etPassword = findViewById(R.id.et_password);
        tvRegister = findViewById(R.id.tv_register);
        tv_mm = findViewById(R.id.tv_mm);
        btnLogin = findViewById(R.id.btn_login);
        rgType = findViewById(R.id.rg_type);
        rbUser = findViewById(R.id.rb_user);
        rbAdmin = findViewById(R.id.rb_admin);
        cbAgree = findViewById(R.id.cb_agree);

        ActionBar actionBar = findViewById(R.id.myActionBar);
        mTitleBar = actionBar;
        actionBar.setData(this.activity, "登录", 0, 0, 0, getResources().getColor(R.color.colorPrimary), new ActionBar.ActionBarClickListener() {
            @Override
            public void onLeftClick() {
                LoginActivity.this.finish();
            }

            @Override
            public void onRightClick() {
            }
        });

        tvRegister.setOnClickListener(v ->
                LoginActivity.this.startActivity(new Intent(LoginActivity.this.activity, RegisterActivity.class))
        );

        tv_mm.setOnClickListener(v ->
                LoginActivity.this.startActivity(new Intent(LoginActivity.this.activity, PasswordActivity.class))
        );

        rgType.setOnCheckedChangeListener((group, checkedId) ->
                SPUtils.put(LoginActivity.this.activity, SPUtils.IS_ADMIN, checkedId == R.id.rb_admin)
        );

        btnLogin.setOnClickListener(v -> {
            ((InputMethodManager) v.getContext().getSystemService("input_method")).hideSoftInputFromWindow(v.getWindowToken(), 0);
            String account = etAccount.getText().toString();
            String password = etPassword.getText().toString();
            Boolean isAdmin = (Boolean) SPUtils.get(LoginActivity.this.activity, SPUtils.IS_ADMIN, false);

            if (account.isEmpty()) {
                Toast.makeText(LoginActivity.this.activity, "账号不能为空!", Toast.LENGTH_SHORT).show();
            } else if (password.isEmpty()) {
                Toast.makeText(LoginActivity.this.activity, "密码为空!", Toast.LENGTH_SHORT).show();
            } else {
                User user = DataSupport.where("account = ?", account).findFirst(User.class);
                if (user == null) {
                    Toast.makeText(LoginActivity.this.activity, "账号不存在", Toast.LENGTH_SHORT).show();
                } else if (!password.equals(user.getPassword())) {
                    Toast.makeText(LoginActivity.this.activity, "密码错误!", Toast.LENGTH_SHORT).show();
                } else if (isAdmin && !"admin".equals(user.getAccount())) {
                    Toast.makeText(LoginActivity.this.activity, "该账号不是管理员账号!", Toast.LENGTH_SHORT).show();
                } else if (!isAdmin && "admin".equals(user.getAccount())) {
                    Toast.makeText(LoginActivity.this.activity, "该账号不是普通用户账号!", Toast.LENGTH_SHORT).show();
                } else if (!cbAgree.isChecked()) {
                    Toast.makeText(LoginActivity.this.activity, "请同意用户协议!", Toast.LENGTH_SHORT).show();
                } else {
                    SPUtils.put(LoginActivity.this, SPUtils.ACCOUNT, account);
                    LoginActivity.this.startActivity(new Intent(LoginActivity.this.activity, MainActivity.class));
                    Toast.makeText(LoginActivity.this.activity, "恭喜你,登录成功!", Toast.LENGTH_SHORT).show();
                    LoginActivity.this.finish();
                }
            }
        });
    }

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffffff"
    android:orientation="vertical">

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="100.0dip"
        android:layout_gravity="center"
        android:layout_marginTop="0.0dip"
        android:layout_marginBottom="50.0dip"
        android:src="@drawable/logo" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/person"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10.0dip"
            android:background="@drawable/bg_ripple"
            android:orientation="horizontal"
            android:paddingLeft="20.0dip"
            android:paddingTop="10.0dip"
            android:paddingRight="20.0dip"
            android:paddingBottom="10.0dip">

            <ImageView
                android:layout_width="25.0dip"
                android:layout_height="25.0dip"
                android:layout_gravity="center"
                android:src="@drawable/main_user_press" />

            <TextView
                android:layout_width="0.0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="10.0dip"
                android:layout_weight="1.0"
                android:text="个人信息"
                android:textColor="@color/colorBlack"
                android:textSize="14.0dip" />

            <ImageView
                android:layout_width="25.0dip"
                android:layout_height="25.0dip"
                android:layout_gravity="center"
                android:src="@drawable/ic_right" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/manage"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:background="@drawable/bg_ripple"
                android:orientation="horizontal"
                android:paddingLeft="20.0dip"
                android:paddingTop="10.0dip"
                android:paddingRight="20.0dip"
                android:paddingBottom="10.0dip">

                <ImageView
                    android:layout_width="25.0dip"
                    android:layout_height="25.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/manage" />

                <TextView
                    android:layout_width="0.0dip"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginLeft="10.0dip"
                    android:layout_weight="1.0"
                    android:text="用户管理"
                    android:textColor="@color/colorBlack"
                    android:textSize="14.0dip" />

                <ImageView
                    android:layout_width="25.0dip"
                    android:layout_height="25.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/ic_right" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <LinearLayout
                    android:id="@+id/order"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10.0dip"
                    android:background="@drawable/bg_ripple"
                    android:orientation="horizontal"
                    android:paddingLeft="20.0dip"
                    android:paddingTop="10.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingBottom="10.0dip">

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/dingdan" />

                    <TextView
                        android:layout_width="0.0dip"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10.0dip"
                        android:layout_weight="1.0"
                        android:text="我的订单"
                        android:textColor="@color/colorBlack"
                        android:textSize="14.0dip" />

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_right" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/browse"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10.0dip"
                    android:background="@drawable/bg_ripple"
                    android:orientation="horizontal"
                    android:paddingLeft="20.0dip"
                    android:paddingTop="10.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingBottom="10.0dip">

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_browse" />

                    <TextView
                        android:layout_width="0.0dip"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10.0dip"
                        android:layout_weight="1.0"
                        android:text="浏览记录"
                        android:textColor="@color/colorBlack"
                        android:textSize="14.0dip" />

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_right" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/security"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10.0dip"
                    android:background="@drawable/bg_ripple"
                    android:orientation="horizontal"
                    android:paddingLeft="20.0dip"
                    android:paddingTop="10.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingBottom="10.0dip">

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_security" />

                    <TextView
                        android:layout_width="0.0dip"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10.0dip"
                        android:layout_weight="1.0"
                        android:text="账号安全"
                        android:textColor="@color/colorBlack"
                        android:textSize="14.0dip" />

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_right" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/favorite"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10.0dip"
                    android:background="@drawable/bg_ripple"
                    android:orientation="horizontal"
                    android:paddingLeft="20.0dip"
                    android:paddingTop="10.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingBottom="10.0dip">

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/kefu" />

                    <TextView
                        android:layout_width="0.0dip"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10.0dip"
                        android:layout_weight="1.0"
                        android:text="联系客服"
                        android:textColor="@color/colorBlack"
                        android:textSize="14.0dip" />

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_right" />
                </LinearLayout>
            </LinearLayout>

            <Button
                android:id="@+id/logout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_marginTop="100.0dip"
                android:layout_marginRight="20.0dip"
                android:background="@drawable/btn_border_fill"
                android:text="退出登录"
                android:textColor="@color/colorWhite"
                android:textSize="18.0dip" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffffff"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_border_bottom">

        <com.example.snack.widget.ActionBar
            android:id="@id/myActionBar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="100.0dip"
        android:layout_gravity="center"
        android:layout_marginTop="0.0dip"
        android:layout_marginBottom="20.0dip"
        android:src="@drawable/logo" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="0.0dip"
        android:layout_marginBottom="40.0dip"
        android:text="修改用户信息"
        android:textColor="#ff000000"
        android:textSize="30.0dip" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingLeft="20.0dip"
        android:paddingRight="20.0dip">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_border_bottom"
            android:orientation="horizontal"
            android:paddingTop="15.0dip"
            android:paddingBottom="15.0dip">

            <TextView
                android:layout_width="70.0dip"
                android:layout_height="30.0dip"
                android:layout_weight="1.0"
                android:gravity="start"
                android:text="账 号:"
                android:textColor="#ff000000"
                android:textSize="20.0dip" />

            <TextView
                android:id="@+id/account"
                android:layout_width="248.0dip"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:textSize="16.0dip" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_border_bottom"
            android:orientation="horizontal"
            android:paddingTop="15.0dip"
            android:paddingBottom="15.0dip">

            <TextView
                android:layout_width="0.0dip"
                android:layout_height="30.0dip"
                android:layout_weight="1.0"
                android:gravity="start"
                android:text="昵 称:"
                android:textColor="#ff000000"
                android:textSize="20.0dip" />

            <EditText
                android:id="@id/nickName"
                android:layout_width="250.0dip"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:text=""
                android:textSize="16.0dip" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_border_bottom"
            android:orientation="horizontal"
            android:paddingTop="15.0dip"
            android:paddingBottom="15.0dip">

            <TextView
                android:layout_width="70.0dip"
                android:layout_height="30.0dip"
                android:layout_weight="1.0"
                android:gravity="start"
                android:text="电 话:"
                android:textColor="#ff000000"
                android:textSize="20.0dip" />

            <EditText
                android:id="@+id/phone"
                android:layout_width="250.0dip"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:inputType="number"
                android:text=""
                android:textSize="16.0dip" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_border_bottom"
            android:orientation="horizontal"
            android:paddingTop="15.0dip"
            android:paddingBottom="15.0dip">

            <TextView
                android:layout_width="70.0dip"
                android:layout_height="30.0dip"
                android:layout_weight="1.0"
                android:gravity="start"
                android:text="收货地址:"
                android:textColor="#ff000000"
                android:textSize="20.0dip" />

            <EditText
                android:id="@+id/address"
                android:layout_width="250.0dip"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:text=""
                android:textSize="16.0dip" />
        </LinearLayout>
    </LinearLayout>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20.0dip"
        android:background="@drawable/btn_border_fill"
        android:onClick="save"
        android:text="保存"
        android:textColor="@color/colorWhite" />
</LinearLayout>
  1. **初始化活动**:
  • 调用 `super.onCreate(savedInstanceState)`,确保基类的初始化正确执行。

  • 设置当前活动的引用为 `myActivity`。

  1. **设置布局**:
  • 使用 `setContentView(R.layout.activity_snack_add)` 加载相应的布局文件。
  1. **视图组件初始化**:
  • 找到并初始化不同的视图组件,包括文本输入框 (`etTitle`, `etIssuer`, `etImg`, `etContent`)、下拉菜单 (`spType`) 和图像视图 (`ivImg`)。
  1. **自定义 ActionBar**:
  • 获取自定义 `ActionBar` 并设置标题为"编辑零食信息"。

  • 配置返回按钮(左侧点击事件)以结束当前活动。

  • 右侧点击事件目前没有实现(留空)。

  1. **初始化其他视图组件**:
  • 调用 `initView()` 方法,可能用于设置视图的初始状态或加载数据。
java 复制代码
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.myActivity = this;
        setContentView(R.layout.activity_snack_add);
        this.etTitle = findViewById(R.id.title);
        this.etIssuer = findViewById(R.id.issuer);
        this.spType = findViewById(R.id.type);
        this.etImg = findViewById(R.id.img);
        this.etContent = findViewById(R.id.content);
        this.ivImg = findViewById(R.id.iv_img);
        ActionBar actionBar = findViewById(R.id.myActionBar);
        this.mActionBar = actionBar;
        actionBar.setData(this.myActivity, "编辑零食信息", R.drawable.ic_back, 0, 0, getResources().getColor(R.color.colorPrimary), new ActionBar.ActionBarClickListener() {
            @Override
            public void onLeftClick() {
                AddSnackActivity.this.finish();
            }

            @Override
            public void onRightClick() {
            }
        });
        initView();
    }

主要功能概述

  1. **加载 Fragment 布局**:
  • 使用 `inflater.inflate` 加载 `fragment_user` 的布局。
  1. **视图组件初始化**:
  • 初始化多个 UI 组件,包括:

  • 用户信息 (`llPerson`)

  • 安全设置 (`llSecurity`)

  • 浏览界面 (`llBrowse`)

  • 订单管理 (`order`)

  • 管理界面 (`manage`)

  • 登出按钮 (`btnLogout`)

  • 收藏夹 (`llFavorite`)

  1. **视图可见性设置**:
  • 根据用户角色(普通用户或管理员)动态设置视图的可见性:

  • 如果是管理员,隐藏收藏夹、订单和浏览界面,显示管理界面。

  • 否则,显示所有功能,除了管理界面。

  1. **点击事件处理**:
  • 为各个视图组件设置点击事件:

  • **个人信息**:点击后显示提示并启动 `PersonActivity`。

  • **管理界面**:点击后显示提示并启动 `ManageActivity`。

  • **安全设置**:点击后显示提示并启动 `PasswordActivity`。

  • **浏览界面**:点击后显示提示并启动 `BrowseActivity`。

  • **订单界面**:点击后显示提示并启动 `OrderActivity`。

  • **收藏夹**:点击后显示提示(如 QQ 联系信息)。

  • **登出按钮**:点击后显示提示,清除登录信息并返回 `LoginActivity`。

总结

这个 `Fragment` 负责用户界面的展示和操作,清晰地组织了各个功能模块。根据用户角色动态调整视图的可见性,并提供了友好的交互体验。整体结构简单易读,便于维护和扩展。

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffffff"
    android:orientation="vertical">

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="100.0dip"
        android:layout_gravity="center"
        android:layout_marginTop="0.0dip"
        android:layout_marginBottom="50.0dip"
        android:src="@drawable/logo" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/person"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10.0dip"
            android:background="@drawable/bg_ripple"
            android:orientation="horizontal"
            android:paddingLeft="20.0dip"
            android:paddingTop="10.0dip"
            android:paddingRight="20.0dip"
            android:paddingBottom="10.0dip">

            <ImageView
                android:layout_width="25.0dip"
                android:layout_height="25.0dip"
                android:layout_gravity="center"
                android:src="@drawable/main_user_press" />

            <TextView
                android:layout_width="0.0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="10.0dip"
                android:layout_weight="1.0"
                android:text="个人信息"
                android:textColor="@color/colorBlack"
                android:textSize="14.0dip" />

            <ImageView
                android:layout_width="25.0dip"
                android:layout_height="25.0dip"
                android:layout_gravity="center"
                android:src="@drawable/ic_right" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/manage"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:background="@drawable/bg_ripple"
                android:orientation="horizontal"
                android:paddingLeft="20.0dip"
                android:paddingTop="10.0dip"
                android:paddingRight="20.0dip"
                android:paddingBottom="10.0dip">

                <ImageView
                    android:layout_width="25.0dip"
                    android:layout_height="25.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/manage" />

                <TextView
                    android:layout_width="0.0dip"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginLeft="10.0dip"
                    android:layout_weight="1.0"
                    android:text="用户管理"
                    android:textColor="@color/colorBlack"
                    android:textSize="14.0dip" />

                <ImageView
                    android:layout_width="25.0dip"
                    android:layout_height="25.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/ic_right" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <LinearLayout
                    android:id="@+id/order"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10.0dip"
                    android:background="@drawable/bg_ripple"
                    android:orientation="horizontal"
                    android:paddingLeft="20.0dip"
                    android:paddingTop="10.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingBottom="10.0dip">

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/dingdan" />

                    <TextView
                        android:layout_width="0.0dip"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10.0dip"
                        android:layout_weight="1.0"
                        android:text="我的订单"
                        android:textColor="@color/colorBlack"
                        android:textSize="14.0dip" />

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_right" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/browse"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10.0dip"
                    android:background="@drawable/bg_ripple"
                    android:orientation="horizontal"
                    android:paddingLeft="20.0dip"
                    android:paddingTop="10.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingBottom="10.0dip">

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_browse" />

                    <TextView
                        android:layout_width="0.0dip"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10.0dip"
                        android:layout_weight="1.0"
                        android:text="浏览记录"
                        android:textColor="@color/colorBlack"
                        android:textSize="14.0dip" />

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_right" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/security"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10.0dip"
                    android:background="@drawable/bg_ripple"
                    android:orientation="horizontal"
                    android:paddingLeft="20.0dip"
                    android:paddingTop="10.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingBottom="10.0dip">

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_security" />

                    <TextView
                        android:layout_width="0.0dip"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10.0dip"
                        android:layout_weight="1.0"
                        android:text="账号安全"
                        android:textColor="@color/colorBlack"
                        android:textSize="14.0dip" />

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_right" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/favorite"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10.0dip"
                    android:background="@drawable/bg_ripple"
                    android:orientation="horizontal"
                    android:paddingLeft="20.0dip"
                    android:paddingTop="10.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingBottom="10.0dip">

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/kefu" />

                    <TextView
                        android:layout_width="0.0dip"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginLeft="10.0dip"
                        android:layout_weight="1.0"
                        android:text="联系客服"
                        android:textColor="@color/colorBlack"
                        android:textSize="14.0dip" />

                    <ImageView
                        android:layout_width="25.0dip"
                        android:layout_height="25.0dip"
                        android:layout_gravity="center"
                        android:src="@drawable/ic_right" />
                </LinearLayout>
            </LinearLayout>

            <Button
                android:id="@+id/logout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_marginTop="100.0dip"
                android:layout_marginRight="20.0dip"
                android:background="@drawable/btn_border_fill"
                android:text="退出登录"
                android:textColor="@color/colorWhite"
                android:textSize="18.0dip" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

四、完整的项目源码

👇👇👇👇👇快捷获取方式👇👇👇👇👇

相关推荐
千里马学框架2 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台2 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone2 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc2 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo2 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077002 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone2 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen2 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone2 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui