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