当前位置: 首页 > news >正文

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

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码 


一、项目演示

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

二、项目测试环境

三、项目详情

1. **加载 Fragment 布局**:
   - 使用 `inflater.inflate` 加载 `fragment_snack` 的布局。

2. **视图组件初始化**:
   - 初始化了多个 UI 组件,包括:
     - `TabLayout` (`tabTitle`): 用于显示标签。
     - `RecyclerView` (`rvsnackList`): 用于展示零食列表。
     - 空状态布局 (`llEmpty`): 当列表为空时显示的视图。
     - 查询输入框 (`etQuery`): 供用户输入搜索关键词。
     - 搜索图标 (`ivSearch`): 触发搜索操作的图标。
     - 添加零食的浮动按钮 (`btnAdd`): 用于添加新零食。

3. **设置搜索功能**:
   - 为搜索图标设置点击事件,点击后调用 `loadData()` 方法以加载数据。

4. **键盘操作监听**:
   - 设置查询输入框的编辑动作监听器:
     - 当用户按下特定的键(actionId 为 3)时,隐藏键盘并调用 `loadData()` 方法。

5. **添加零食功能**:
   - 为添加按钮设置点击事件,点击后启动 `AddSnackActivity`,并等待结果(请求码为 100)。

 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`。

2. **视图组件初始化**:
   - 初始化了多个 UI 组件,包括:
     - 账号输入框 (`etAccount`)
     - 密码输入框 (`etPassword`)
     - 注册文本 (`tvRegister`)
     - 找回密码文本 (`tv_mm`)
     - 登录按钮 (`btnLogin`)
     - 用户类型选择的单选按钮组 (`rgType`)
     - 用户和管理员的单选按钮 (`rbUser` 和 `rbAdmin`)
     - 同意协议的复选框 (`cbAgree`)

3. **自定义 ActionBar**:
   - 初始化 `ActionBar`,设置标题和点击事件,左侧点击事件为结束当前 Activity。

4. **点击事件处理**:
   - 注册点击事件:
     - 注册按钮:启动 `RegisterActivity`。
     - 找回密码按钮:启动 `PasswordActivity`。
     - 用户类型选择的单选按钮:保存选择的用户类型(普通用户或管理员)到 SharedPreferences。

5. **登录逻辑**:
   - 登录按钮的点击事件处理:
     - 隐藏软键盘。
     - 获取输入的账号和密码。
     - 校验输入是否为空,并提供相应提示。
     - 检查用户是否存在,并验证密码是否正确。
     - 根据用户类型(管理员或普通用户)进行进一步验证。
     - 确认用户同意用户协议。
     - 登录成功后,将账号存入 SharedPreferences,启动 `MainActivity` 并显示成功提示。

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

  @Overrideprotected 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() {@Overridepublic void onLeftClick() {LoginActivity.this.finish();}@Overridepublic 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 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"><ImageViewandroid: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" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/main_user_press" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/manage" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/dingdan" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_browse" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_security" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/kefu" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout></LinearLayout><Buttonandroid: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 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"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@drawable/bg_border_bottom"><com.example.snack.widget.ActionBarandroid:id="@id/myActionBar"android:layout_width="fill_parent"android:layout_height="wrap_content" /></LinearLayout><ImageViewandroid: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" /><TextViewandroid: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" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"android:paddingLeft="20.0dip"android:paddingRight="20.0dip"><LinearLayoutandroid: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"><TextViewandroid: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" /><TextViewandroid:id="@+id/account"android:layout_width="248.0dip"android:layout_height="wrap_content"android:gravity="left"android:textSize="16.0dip" /></LinearLayout><LinearLayoutandroid: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"><TextViewandroid: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" /><EditTextandroid:id="@id/nickName"android:layout_width="250.0dip"android:layout_height="wrap_content"android:gravity="left"android:text=""android:textSize="16.0dip" /></LinearLayout><LinearLayoutandroid: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"><TextViewandroid: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" /><EditTextandroid: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><LinearLayoutandroid: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"><TextViewandroid: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" /><EditTextandroid:id="@+id/address"android:layout_width="250.0dip"android:layout_height="wrap_content"android:gravity="left"android:text=""android:textSize="16.0dip" /></LinearLayout></LinearLayout><Buttonandroid: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`。

2. **设置布局**:
   - 使用 `setContentView(R.layout.activity_snack_add)` 加载相应的布局文件。

3. **视图组件初始化**:
   - 找到并初始化不同的视图组件,包括文本输入框 (`etTitle`, `etIssuer`, `etImg`, `etContent`)、下拉菜单 (`spType`) 和图像视图 (`ivImg`)。

4. **自定义 ActionBar**:
   - 获取自定义 `ActionBar` 并设置标题为“编辑零食信息”。
   - 配置返回按钮(左侧点击事件)以结束当前活动。
   - 右侧点击事件目前没有实现(留空)。

5. **初始化其他视图组件**:
   - 调用 `initView()` 方法,可能用于设置视图的初始状态或加载数据。

 @Overrideprotected 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() {@Overridepublic void onLeftClick() {AddSnackActivity.this.finish();}@Overridepublic void onRightClick() {}});initView();}

### 主要功能概述

1. **加载 Fragment 布局**:
   - 使用 `inflater.inflate` 加载 `fragment_user` 的布局。

2. **视图组件初始化**:
   - 初始化多个 UI 组件,包括:
     - 用户信息 (`llPerson`)
     - 安全设置 (`llSecurity`)
     - 浏览界面 (`llBrowse`)
     - 订单管理 (`order`)
     - 管理界面 (`manage`)
     - 登出按钮 (`btnLogout`)
     - 收藏夹 (`llFavorite`)

3. **视图可见性设置**:
   - 根据用户角色(普通用户或管理员)动态设置视图的可见性:
     - 如果是管理员,隐藏收藏夹、订单和浏览界面,显示管理界面。
     - 否则,显示所有功能,除了管理界面。

4. **点击事件处理**:
   - 为各个视图组件设置点击事件:
     - **个人信息**:点击后显示提示并启动 `PersonActivity`。
     - **管理界面**:点击后显示提示并启动 `ManageActivity`。
     - **安全设置**:点击后显示提示并启动 `PasswordActivity`。
     - **浏览界面**:点击后显示提示并启动 `BrowseActivity`。
     - **订单界面**:点击后显示提示并启动 `OrderActivity`。
     - **收藏夹**:点击后显示提示(如 QQ 联系信息)。
     - **登出按钮**:点击后显示提示,清除登录信息并返回 `LoginActivity`。

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

<?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"><ImageViewandroid: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" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/main_user_press" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/manage" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/dingdan" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_browse" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_security" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout><LinearLayoutandroid: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"><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/kefu" /><TextViewandroid: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" /><ImageViewandroid:layout_width="25.0dip"android:layout_height="25.0dip"android:layout_gravity="center"android:src="@drawable/ic_right" /></LinearLayout></LinearLayout><Buttonandroid: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>

四、完整的项目源码 

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

相关文章:

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

目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--零食工坊 二、项目测试环境 三、项目详情 1. **加载 Fragment 布局**&#xff1a; - 使用 inflater.inflate 加载 fragment_snack 的布局。 2. **视图组件初始化**&am…...

百度高德坐标系相互转换

一、百度与高德坐标系互换 百度坐标系&#xff1a;bd09 高德坐标系&#xff1a; gcj02 import math# 坐标系转换&#xff1a;百度转高德&#xff0c;高德转百度 class CoordinateSystem:staticmethoddef bd09_to_gcj02(bd_lon, bd_lat):百度坐标系:bd09 转成高德坐标系 gcj0…...

免费下载6组简历模板,让HR一眼相中你!

简历是求职者向招聘单位展示自我的重要工具&#xff0c;选择一份高质量的简历模板免费下载&#xff0c;能够提升面试机会并留下深刻印象。优秀的简历模板需具备清晰的信息结构、出色的视觉效果及合理的排版布局。简历的配色可以凸显求职者的个性&#xff0c;而有逻辑性的排版则…...

设计模式之模版方法模式

定义 定义一个操作中的算法的骨架&#xff08;稳定&#xff09;&#xff0c;而将一些步骤延迟&#xff08;变化&#xff09;到子类中。模版方法使得子类可以不改变&#xff08;复用&#xff09;一个算法的结构即可重定义&#xff08;override 重写&#xff09;该算法的某些特定…...

解析!文档扫描 SDK 中的高级图像处理技术

随着世界数字化&#xff0c;文档扫描已成为现代商业运营的关键&#xff0c;它使文档的存储、访问和管理更加便捷。然而&#xff0c;扫描图像的质量对于这些数字档案的有效性至关重要。高质量的扫描可确保文本清晰、数据准确捕获并且信息易于检索。 另一方面&#xff0c;质量差…...

线性判别分析(LDA)中求协方差矩阵示例

让我们通过一个简单的例子计算协方差矩阵。假设我们有两类数据集 X 0 X_0 X0​ 和 X 1 X_1 X1​&#xff0c;每类有两个样本&#xff0c;每个样本有两个特征。 数据集&#xff1a; 类 0 的样本&#xff1a; X 0 [ 1 2 2 3 ] X_0 \begin{bmatrix} 1 & 2 \\ 2 & 3…...

Maven的详细解读和配置

目录 一、Maven 1.1 引言 1.2 介绍 1.3 下载安装 1.3.1 解压 1.3.2 配置环境变量 1.3.3 测试 1.4 仓库[了解] 1.5 Maven配置 1.5.1 修改仓库位置 1.5.2 设置镜像 二、IDEA - MAVEN 2.1 idea关联maven 2.2 为新项目设置 2.2 创建java项目[重点] 2.3 java项目结构…...

在vue2项目中使用dart-sass

问题描述 在vue2项目中使用dart-sass。或者将node-sass换成dart-sass&#xff0c;原因是node-sass安装比较困难&#xff0c;很多时候sass-loader无法安装成功。另外在win和Linux环境下运行行项目需要针对Linux搞一个node-sass的Linux版本。 问题分析 在 Vue 2 项目中使用 da…...

【机器学习】过拟合与欠拟合——如何优化模型性能

【机器学习】过拟合与欠拟合——如何优化模型性能 1. 引言 在机器学习中&#xff0c;模型的表现不仅依赖于算法的选择&#xff0c;还依赖于模型对数据的拟合情况。过拟合&#xff08;Overfitting&#xff09;和欠拟合&#xff08;Underfitting&#xff09;是模型训练过程中常…...

二进制日志gtid模式

# --skip-gtids&#xff0c;使用mysqlbinlog截取时添加该参数&#xff0c;会执行已经执行的事务 mysqlbinlog --skip-gtids --include-gtidsa56fdfdc-7699-11ef-8f40-000c297f81d5:40 /data/binlog/mysql-bin.000003 > gtid.sql # --skip-gtids&#xff0c;使用mysqlbinlog截…...

华硕主板开启TPM 2.0

安装Windows11系统&#xff0c;需要打开TPM 安装 Windows 11 的方法 电脑健康状况检查应用验证最低系统要求 在电脑上启用 TPM 2.0 查看主板型号 winr msinfo32 查看 tpm 进入Advanced Mode&#xff08;F7&#xff09; 选择Security&#xff0c;进入Secure Boot&#xff0c;我…...

Linux 一键部署Mysql 8.0.37

mysql 前言 MySQL 是一个基于 SQL(Structured Query Language)的数据库系统,SQL 是一种用于访问和管理数据库的标准语言。MySQL 以其高性能、稳定性和易用性而闻名,它被广泛应用于各种场景,包括: Web 应用程序:许多动态网站和内容管理系统(如 WordPress)使用 MySQL 存…...

Elasticsearch可视化工具ElasticHD

目录 介绍 ElasticHD应用程序页面 安装 基本用法 独立可执行文件 ES版本支持 SQL特性支持: 超越SQL功能支持: SQL的用法 Docker快速入门: 下载地址 介绍 ElasticHD是ElasticSearch可视化管理工具。它不需要任何软件。它在您的Web浏览器中工作,允许您随时随地管理…...

Chrome截取网页全屏

1.使用Chrome开发者工具 Chrome自带的开发者工具&#xff0c;可以进行网页整页截图&#xff0c; 首先打开你想截图的网页&#xff0c; 然后按下 F12,调出开发者工具&#xff0c; 接着按Ctrl Shift P。 紧接着输入指令 capture&#xff0c; 它会提示有三个选项&#xff0c;如…...

Why Is Prompt Tuning for Vision-Language Models Robust to Noisy Labels?

文章汇总 本文的作者针对了提示学习的结构设计进行了分析&#xff0c;发现了一些规律&#xff1a; 1)固定的类名令牌为模型的优化提供了强正则化&#xff0c;减少了由噪声样本引起的梯度。 2)从多样化和通用的web数据中学习到的强大的预训练图像文本嵌入为图像分类提供了强大…...

C++ 折叠表达式

C 折叠表达式&#xff08;Fold Expression&#xff09;是在 C17 引入的一种语法&#xff0c;用于简化与可变参数模板的操作。折叠表达式的作用是对参数包&#xff08;parameter pack&#xff09;进行递归处理。 折叠表达式有四种类型&#xff1a; 一元左折叠 (Unary Left Fol…...

双控开关接入NVBoard

导入NVBoard git仓库&#xff1a;https://github.com/NJU-ProjectN/nvboard 按照ysyx手册的要求&#xff0c;初始化NVBoard项目。 由于GitHub在国外&#xff0c;可能会超时无响应&#xff1a; 解决方案是修改代理。 当前的运行环境是VM VirtualBox虚拟机&#xff0c;网卡是…...

聊一聊软件系统性能测试的重要性

目录 性能测试的分类 为什么要进行性能测试呢&#xff1f; 性能测试曲线对比参数 虚拟用户数 vs 时间: 响应时间 vs 虚拟用户数: 吞吐量 vs 虚拟用户数: 错误率 vs 虚拟用户数: 资源使用情况 vs 时间: 组合视图 上图曲线图关键点介绍 性能测试的重要性主要体现在以下…...

双十一有哪些好物值得入手?五款超值数码好物分享!

在如今这个科技飞速发展的时代&#xff0c;数码产品已经成为我们生活中不可或缺的一部分。双十一作为一年一度的购物狂欢节&#xff0c;为我们提供了一个绝佳的机会&#xff0c;可以以更优惠的价格入手心仪的数码好物。下面就为大家分享五款超值数码好物&#xff0c;让你的生活…...

uniapp监听滚动实现顶部透明度变化

效果如图&#xff1a; 实现思路&#xff1a; 1、使用onPageScroll监听页面滚动&#xff0c;改变导航条的透明度&#xff1b; 2、关于顶部图片的高度&#xff1a; 如果是小程序&#xff1a;使用getMenuButtonBoundingClientRect获取胶囊顶部距离和胶囊高度&#xff1b; 如果…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...