From dde9027478b772dd60371937413ac2838c4f3bbd Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 11 二月 2025 09:56:33 +0800
Subject: [PATCH] 1.修改library名称 2.取水口接口相关代码

---
 expand_button/src/main/java/com/example/expand_button/ExpandButton.kt |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/expand_button/src/main/java/com/example/expand_button/ExpandButton.kt b/expand_button/src/main/java/com/example/expand_button/ExpandButton.kt
index 1ac7b29..3671c76 100644
--- a/expand_button/src/main/java/com/example/expand_button/ExpandButton.kt
+++ b/expand_button/src/main/java/com/example/expand_button/ExpandButton.kt
@@ -86,6 +86,14 @@
     // 娣诲姞涓�涓睘鎬у畾涔変笁瑙掑舰鍥炬爣鐨勭偣鍑诲尯鍩熸墿灞曡寖鍥�
     private val triangleClickPadding: Float = 15f * context.resources.displayMetrics.density // 20dp
 
+    // 娣诲姞涓�涓爣璇嗙锛岀敤浜庡尯鍒嗕笉鍚岀殑 ExpandButton 瀹炰緥
+    private var buttonId: String = "default"
+
+    companion object {
+        private const val PREFS_NAME = "expand_button_prefs"
+        private const val KEY_LEGEND_STATES = "legend_states"
+    }
+
     init {
         // 淇濆瓨 XML 涓缃殑榛樿瀛椾綋澶у皬
         defaultTextSize = textSize
@@ -485,6 +493,43 @@
     }
 
     /**
+     * 璁剧疆鎸夐挳鐨勫敮涓�鏍囪瘑绗�
+     * @param id 鏍囪瘑绗�
+     */
+    fun setButtonId(id: String) {
+        this.buttonId = id
+        // 鍔犺浇淇濆瓨鐨勭姸鎬�
+        loadStates()
+    }
+
+    /**
+     * 淇濆瓨鎵�鏈夊浘渚嬮」鐨勭姸鎬�
+     */
+    private fun saveStates() {
+        val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
+        val states = legendItems.map { it.isSelected }
+        prefs.edit().putString("${KEY_LEGEND_STATES}_$buttonId", states.joinToString(",")).apply()
+    }
+
+    /**
+     * 鍔犺浇淇濆瓨鐨勭姸鎬�
+     */
+    private fun loadStates() {
+        val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
+        val savedStates = prefs.getString("${KEY_LEGEND_STATES}_$buttonId", null)
+        
+        if (savedStates != null && legendItems.isNotEmpty()) {
+            val states = savedStates.split(",").map { it.toBoolean() }
+            states.forEachIndexed { index, state ->
+                if (index < legendItems.size) {
+                    legendItems[index].isSelected = state
+                }
+            }
+            invalidate()
+        }
+    }
+
+    /**
      * 璁剧疆鍥句緥鍐呭
      */
     @JvmName("setLegendsList")
@@ -494,6 +539,9 @@
             unselectedIcon.setBounds(0, 0, iconSize, iconSize)
             LegendItem(selectedIcon, unselectedIcon, description)
         }
+        
+        // 鍔犺浇淇濆瓨鐨勭姸鎬�
+        loadStates()
         
         if (!isExpanded) {
             text = collapsedText
@@ -587,6 +635,10 @@
             index, 
             legendItems[index].isSelected
         )
+        
+        // 淇濆瓨鐘舵��
+        saveStates()
+        
         invalidate()
     }
 

--
Gitblit v1.8.0