From b7ee99a71e88a08a09fe9daada6675a175d09be1 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期三, 14 一月 2026 10:35:27 +0800
Subject: [PATCH] 部分优化

---
 app/src/main/java/com/shlb/comb/activity/SystemSettingsActivity.java |   11 ++
 app/src/main/res/layout/home_list_bluetooth_item.xml                 |  177 +++++++++++++++++++----------------
 app/src/main/java/com/shlb/comb/adapter/HomeDeviceListAdapter.java   |    2 
 app/src/main/java/com/shlb/comb/fragment/DeviceListFragment.java     |    5 +
 app/src/main/res/layout/fragment_device_list.xml                     |   48 +++++++++
 app/src/main/res/drawable/bg_circle.xml                              |    5 +
 app/src/main/java/com/shlb/comb/activity/HomeActivity.java           |   26 ++++
 7 files changed, 184 insertions(+), 90 deletions(-)

diff --git a/app/src/main/java/com/shlb/comb/activity/HomeActivity.java b/app/src/main/java/com/shlb/comb/activity/HomeActivity.java
index 02048a4..085e92b 100644
--- a/app/src/main/java/com/shlb/comb/activity/HomeActivity.java
+++ b/app/src/main/java/com/shlb/comb/activity/HomeActivity.java
@@ -36,6 +36,7 @@
     private DrawerLayout drawerLayout;
     protected TextView tv_scan;
     private long lastScanClickTime = 0; // 鐢ㄤ簬鑺傛祦
+    private boolean isSessionAdmin = false; // 褰撳墠浼氳瘽鏄惁宸查獙璇佺鐞嗗憳瀵嗙爜
 
     // Bluetooth Variables
     private BluetoothScanManager scanManager;
@@ -177,7 +178,6 @@
 
         // 楂樼骇璁剧疆
         View menuAdvancedSettings = findViewById(R.id.menu_advanced_settings);
-        menuAdvancedSettings.setVisibility(View.GONE);
         menuAdvancedSettings.setOnClickListener(v -> {
             drawerLayout.closeDrawer(GravityCompat.START);
             startActivity(new Intent(this, AdvancedSettingActivity.class));
@@ -185,11 +185,12 @@
 
         // 绯荤粺璁剧疆
         View menuSystemSettings = findViewById(R.id.menu_system_settings);
-        menuSystemSettings.setVisibility(View.GONE);
         menuSystemSettings.setOnClickListener(v -> {
             drawerLayout.closeDrawer(GravityCompat.START);
             startActivity(new Intent(this, SystemSettingsActivity.class));
         });
+
+        updateMenuVisibility();
 
         // 椤堕儴comb鐐瑰嚮浜嬩欢
         findViewById(R.id.tv_menu_title).setOnClickListener(new View.OnClickListener() {
@@ -384,8 +385,8 @@
                 .addAction("纭畾", (dialog, index) -> {
                     String text = builder.getEditText().getText().toString();
                     if ("0880".equals(text)) {
-                        findViewById(R.id.menu_advanced_settings).setVisibility(View.VISIBLE);
-                        findViewById(R.id.menu_system_settings).setVisibility(View.VISIBLE);
+                        isSessionAdmin = true;
+                        updateMenuVisibility();
                         Toast("宸叉樉绀洪殣钘忚缃�");
                         dialog.dismiss();
                     } else {
@@ -394,4 +395,21 @@
                 })
                 .create(com.qmuiteam.qmui.R.style.QMUI_Dialog).show();
     }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        updateMenuVisibility();
+    }
+
+    private void updateMenuVisibility() {
+        boolean keepAdmin = com.blankj.utilcode.util.SPUtils.getInstance().getBoolean("keep_admin_mode", false);
+        int visibility = (keepAdmin || isSessionAdmin) ? View.VISIBLE : View.GONE;
+        
+        View menuAdvanced = findViewById(R.id.menu_advanced_settings);
+        View menuSystem = findViewById(R.id.menu_system_settings);
+        
+        if (menuAdvanced != null) menuAdvanced.setVisibility(visibility);
+        if (menuSystem != null) menuSystem.setVisibility(visibility);
+    }
 }
diff --git a/app/src/main/java/com/shlb/comb/activity/SystemSettingsActivity.java b/app/src/main/java/com/shlb/comb/activity/SystemSettingsActivity.java
index 864763f..97a1d09 100644
--- a/app/src/main/java/com/shlb/comb/activity/SystemSettingsActivity.java
+++ b/app/src/main/java/com/shlb/comb/activity/SystemSettingsActivity.java
@@ -72,10 +72,19 @@
 //            Toast("娴嬭瘯椤甸潰: " + (isChecked ? "寮�鍚�" : "鍏抽棴"));
 //        });
 
+        QMUICommonListItemView itemKeepAdmin = mGroupListView.createItemView("淇濇寔绠$悊鍛樻ā寮�");
+        itemKeepAdmin.setAccessoryType(QMUICommonListItemView.ACCESSORY_TYPE_SWITCH);
+        boolean isKeepAdmin = com.blankj.utilcode.util.SPUtils.getInstance().getBoolean("keep_admin_mode", false);
+        itemKeepAdmin.getSwitch().setChecked(isKeepAdmin);
+        itemKeepAdmin.getSwitch().setOnCheckedChangeListener((buttonView, isChecked) -> {
+            com.blankj.utilcode.util.SPUtils.getInstance().put("keep_admin_mode", isChecked);
+            Toast("绠$悊鍛樻ā寮忔寔涔呭寲: " + (isChecked ? "寮�鍚�" : "鍏抽棴"));
+        });
+
         QMUIGroupListView.newSection(this)
                 .setTitle("璁剧疆")
                 .addItemView(itemCmdLog, null)
-//                .addItemView(itemTestPage, null)
+                .addItemView(itemKeepAdmin, null)
                 .addTo(mGroupListView);
     }
 
diff --git a/app/src/main/java/com/shlb/comb/adapter/HomeDeviceListAdapter.java b/app/src/main/java/com/shlb/comb/adapter/HomeDeviceListAdapter.java
index e6fa862..2546c2c 100644
--- a/app/src/main/java/com/shlb/comb/adapter/HomeDeviceListAdapter.java
+++ b/app/src/main/java/com/shlb/comb/adapter/HomeDeviceListAdapter.java
@@ -40,7 +40,7 @@
         final ViewHolder viewHolder;
         // General ListView optimization code.
         if (view == null) {
-            view = mInflater.inflate(R.layout.home_list_bluetooth_item, null);
+            view = mInflater.inflate(R.layout.home_list_bluetooth_item, parent, false);
             viewHolder = new ViewHolder();
             viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
             viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
diff --git a/app/src/main/java/com/shlb/comb/fragment/DeviceListFragment.java b/app/src/main/java/com/shlb/comb/fragment/DeviceListFragment.java
index d8df7be..3015ed5 100644
--- a/app/src/main/java/com/shlb/comb/fragment/DeviceListFragment.java
+++ b/app/src/main/java/com/shlb/comb/fragment/DeviceListFragment.java
@@ -57,6 +57,7 @@
 
     private QMUIEmptyView mEmptyView;
     private ListView homeList;
+    private android.widget.ProgressBar pbScanning;
     private BluetoothScanManager scanManager;
     private BluetoothLeDeviceStore mDeviceStore;
     private BluetoothUtils mBluetoothUtils;
@@ -87,6 +88,7 @@
         View view = inflater.inflate(R.layout.fragment_device_list, container, false);
         mEmptyView = view.findViewById(R.id.emptyView);
         homeList = view.findViewById(R.id.homeList);
+        pbScanning = view.findViewById(R.id.pb_scanning);
         return view;
     }
 
@@ -155,6 +157,7 @@
         scanManager.setScanOverListener(new ScanOverListener() {
             @Override
             public void onScanOver() {
+                if (pbScanning != null) pbScanning.setVisibility(View.GONE);
             }
         });
 
@@ -162,6 +165,7 @@
             @Override
             public void onScanFailed(final int errorCode) {
                 super.onScanFailed(errorCode);
+                if (pbScanning != null) pbScanning.setVisibility(View.GONE);
                 Toast.makeText(getContext(), "鎵弿澶辫触锛�" + errorCode, Toast.LENGTH_SHORT).show();
             }
 
@@ -207,6 +211,7 @@
                 mDeviceStore.clear();
                 EventBus.getDefault().post(new UpdateEvent(UpdateEvent.Type.SCAN_UPDATE));
                ((BaseActivity) getActivity()).Toast("寮�濮嬫壂鎻�...");
+                if (pbScanning != null) pbScanning.setVisibility(View.VISIBLE);
                 scanManager.startScanNow();
             }
         }
diff --git a/app/src/main/res/drawable/bg_circle.xml b/app/src/main/res/drawable/bg_circle.xml
new file mode 100644
index 0000000..9f3c01d
--- /dev/null
+++ b/app/src/main/res/drawable/bg_circle.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="#FFFFFF" />
+</shape>
diff --git a/app/src/main/res/layout/fragment_device_list.xml b/app/src/main/res/layout/fragment_device_list.xml
index 26e531a..3c2b077 100644
--- a/app/src/main/res/layout/fragment_device_list.xml
+++ b/app/src/main/res/layout/fragment_device_list.xml
@@ -1,8 +1,48 @@
-<?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"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:background="#F5F6FA"
     android:orientation="vertical">
+
+    <!-- Title Header -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white"
+        android:orientation="horizontal"
+        android:gravity="center_vertical"
+        android:padding="16dp">
+
+        <View
+            android:layout_width="4dp"
+            android:layout_height="16dp"
+            android:background="@color/base_color"
+            android:layout_marginEnd="8dp"/>
+
+        <TextView
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="闄勮繎璁惧"
+            android:textSize="14sp"
+            android:textStyle="bold"
+            android:textColor="#999999" />
+
+        <ProgressBar
+            android:id="@+id/pb_scanning"
+            android:layout_width="16dp"
+            android:layout_height="16dp"
+            android:layout_marginEnd="8dp"
+            android:visibility="gone"
+            android:indeterminateTint="@color/base_color"
+            style="?android:attr/progressBarStyleSmall" />
+    </LinearLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="#F0F2F5"/>
 
     <com.qmuiteam.qmui.widget.QMUIEmptyView
         android:id="@+id/emptyView"
@@ -13,8 +53,10 @@
         android:id="@+id/homeList"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:divider="@color/gray_line"
-        android:dividerHeight="1dp"
+        android:divider="@null"
+        android:dividerHeight="0dp"
+        android:clipToPadding="false"
+        android:scrollbars="none"
         android:visibility="gone" />
 
 </LinearLayout>
diff --git a/app/src/main/res/layout/home_list_bluetooth_item.xml b/app/src/main/res/layout/home_list_bluetooth_item.xml
index 202c676..b6ca538 100644
--- a/app/src/main/res/layout/home_list_bluetooth_item.xml
+++ b/app/src/main/res/layout/home_list_bluetooth_item.xml
@@ -1,118 +1,125 @@
-<?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"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@color/white"
     android:orientation="vertical">
 
+    <!-- Main Content Area -->
     <LinearLayout
         android:id="@+id/ll_main_content"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/dimension_70"
-        android:orientation="horizontal">
+        android:layout_height="wrap_content"
+        android:background="?attr/selectableItemBackground"
+        android:gravity="center_vertical"
+        android:minHeight="80dp"
+        android:orientation="horizontal"
+        android:paddingLeft="16dp"
+        android:paddingRight="16dp"
+        android:paddingTop="12dp"
+        android:paddingBottom="12dp">
 
+        <!-- Device Status Icon (RSSSI or Icon) -->
         <RelativeLayout
-            android:layout_width="@dimen/dimension_80"
-            android:layout_height="@dimen/dimension_70">
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:background="@drawable/bg_circle"
+            android:backgroundTint="#F0F2F5"
+            android:layout_marginEnd="16dp">
 
-            <LinearLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+            <ImageView
+                android:id="@+id/device_icon"
+                android:layout_width="24dp"
+                android:layout_height="24dp"
                 android:layout_centerInParent="true"
-                android:orientation="vertical">
-
-                <ImageView
-                    android:id="@+id/device_icon"
-                    android:layout_width="30dp"
-                    android:layout_height="30dp"
-                    android:src="@mipmap/ic_sanjiao" />
-
-                <TextView
-                    android:id="@+id/rssi"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:layout_marginTop="@dimen/dimension_5"
-                    android:text="-dBm"
-                    android:textColor="@color/qmui_config_color_gray_6"
-                    android:textSize="@dimen/dimension_10" />
-
-            </LinearLayout>
+                android:src="@mipmap/ic_sanjiao"
+                app:tint="@color/base_color" />
 
         </RelativeLayout>
 
-        <RelativeLayout
+        <!-- Device Info -->
+        <LinearLayout
             android:layout_width="0dp"
-            android:layout_height="@dimen/dimension_70"
-            android:layout_weight="1">
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical">
 
-            <LinearLayout
+            <TextView
+                android:id="@+id/device_name"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_centerVertical="true"
-                android:orientation="vertical">
+                android:text="Unknown Device"
+                android:textColor="#333333"
+                android:textSize="15sp"
+                android:textStyle="bold"
+                android:maxLines="1"
+                android:ellipsize="end" />
 
-                <TextView
-                    android:id="@+id/device_name"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:maxLines="1" />
+            <TextView
+                android:id="@+id/device_address"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="4dp"
+                android:text="00:00:00:00:00:00"
+                android:textColor="#999999"
+                android:textSize="12sp"
+                android:fontFamily="monospace" />
 
-                <TextView
-                    android:id="@+id/device_address"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/dimension_5"
-                    android:maxLines="1"
-                    android:textColor="@color/qmui_config_color_gray_6"
-                    android:textSize="@dimen/dimension_10" />
+            <TextView
+                android:id="@+id/rssi"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="4dp"
+                android:text="-65dBm"
+                android:textColor="@color/base_color"
+                android:textSize="11sp"
+                android:textStyle="italic" />
 
+        </LinearLayout>
 
-            </LinearLayout>
+        <!-- Actions -->
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
 
-        </RelativeLayout>
-
-        <RelativeLayout
-            android:layout_width="130dp"
-            android:layout_height="@dimen/dimension_70">
-
-            <Button
+            <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
                 android:id="@+id/conn_btn"
-                android:layout_width="@dimen/dimension_80"
-                android:layout_height="40dp"
-                android:layout_centerVertical="true"
-                android:layout_marginRight="@dimen/dimension_5"
-                android:layout_toLeftOf="@id/iv_down"
-                android:focusable="false"
-                android:text="CONNECT"
-                android:textSize="@dimen/dimension_10" />
+                android:layout_width="80dp"
+                android:layout_height="32dp"
+                android:text="杩炴帴"
+                android:textColor="@color/white"
+                android:textSize="12sp"
+                app:qmui_backgroundColor="@color/base_color"
+                app:qmui_radius="16dp" />
 
             <ImageView
                 android:id="@+id/iv_down"
                 android:layout_width="20dp"
                 android:layout_height="20dp"
-                android:layout_alignParentRight="true"
-                android:layout_centerVertical="true"
-                android:layout_marginRight="20dp"
-                android:src="@mipmap/ic_down" />
-        </RelativeLayout>
+                android:layout_marginLeft="12dp"
+                android:src="@mipmap/ic_down"
+                app:tint="#CCCCCC" />
+        </LinearLayout>
     </LinearLayout>
 
+    <!-- More Info Area (Expandable) -->
     <LinearLayout
         android:id="@+id/ll_more_info"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical"
-        android:paddingLeft="20dp"
-        android:paddingRight="20dp"
-        android:paddingBottom="10dp"
+        android:paddingLeft="16dp"
+        android:paddingRight="16dp"
+        android:paddingBottom="16dp"
         android:visibility="gone">
 
         <TextView
             android:id="@+id/tv_device_type"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/qmui_config_color_gray_6"
+            android:textColor="#666666"
             android:textSize="12sp"
             android:layout_marginTop="2dp"/>
 
@@ -120,7 +127,7 @@
             android:id="@+id/tv_adv_type"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/qmui_config_color_gray_6"
+            android:textColor="#666666"
             android:textSize="12sp"
             android:layout_marginTop="2dp"/>
 
@@ -128,7 +135,7 @@
             android:id="@+id/tv_flags"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/qmui_config_color_gray_6"
+            android:textColor="#666666"
             android:textSize="12sp"
             android:layout_marginTop="2dp"/>
 
@@ -136,7 +143,7 @@
             android:id="@+id/tv_local_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/qmui_config_color_gray_6"
+            android:textColor="#666666"
             android:textSize="12sp"
             android:layout_marginTop="2dp"/>
 
@@ -144,33 +151,41 @@
             android:id="@+id/tv_tx_power"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@color/qmui_config_color_gray_6"
+            android:textColor="#666666"
             android:textSize="12sp"
             android:layout_marginTop="2dp"/>
 
         <TextView
             android:id="@+id/tv_service_uuids"
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textColor="@color/qmui_config_color_gray_6"
+            android:textColor="#666666"
             android:textSize="12sp"
             android:layout_marginTop="2dp"/>
 
         <TextView
             android:id="@+id/tv_service_data"
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textColor="@color/qmui_config_color_gray_6"
+            android:textColor="#666666"
             android:textSize="12sp"
             android:layout_marginTop="2dp"/>
 
         <TextView
             android:id="@+id/tv_manufacturer_data"
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textColor="@color/qmui_config_color_gray_6"
+            android:textColor="#666666"
             android:textSize="12sp"
             android:layout_marginTop="2dp"/>
     </LinearLayout>
 
+    <!-- Bottom Divider -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginLeft="16dp"
+        android:layout_marginRight="16dp"
+        android:background="#F0F2F5" />
+
 </LinearLayout>
\ No newline at end of file

--
Gitblit v1.9.3