From 9b71247893510baafbdbd9f89cd4f0120aa397da Mon Sep 17 00:00:00 2001
From: renhaoting <370797079@qq.com>
Date: Tue, 28 Oct 2025 18:06:35 +0800
Subject: [PATCH] =?UTF-8?q?font=EF=BC=8C=20maxnum=20=E8=87=AA=E5=AE=9A?=
 =?UTF-8?q?=E4=B9=89=E6=8E=A7=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 .../visualnovel/ui/chat/ui/FontSetView.kt     |  50 ++++++++++
 .../visualnovel/ui/chat/ui/MaxNumView.kt      |  88 ++++++++++++++++++
 .../ui/expandableSelector/ExpandSelectView.kt |   1 +
 .../main/res/layout/layout_chat_menu_view.xml |  12 ++-
 .../res/layout/layout_expand_select_view.xml  |   1 -
 .../main/res/layout/layout_font_set_view.xml  |  75 +++++++++++++++
 .../main/res/layout/layout_max_num_view.xml   |  82 +++++++---------
 .../res/mipmap-xxhdpi/num_setting_left.webp   | Bin 0 -> 1090 bytes
 .../res/mipmap-xxhdpi/num_setting_right.webp  | Bin 0 -> 1094 bytes
 .../res/mipmap-xxhdpi/setting_font_add.webp   | Bin 0 -> 1280 bytes
 .../res/mipmap-xxhdpi/setting_font_icon.webp  | Bin 0 -> 628 bytes
 .../res/mipmap-xxhdpi/setting_font_plus.webp  | Bin 0 -> 1266 bytes
 .../app/src/main/res/values/strings.xml       |   1 +
 13 files changed, 261 insertions(+), 49 deletions(-)
 create mode 100644 VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/FontSetView.kt
 create mode 100644 VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/MaxNumView.kt
 create mode 100644 VisualNovel/app/src/main/res/layout/layout_font_set_view.xml
 create mode 100644 VisualNovel/app/src/main/res/mipmap-xxhdpi/num_setting_left.webp
 create mode 100644 VisualNovel/app/src/main/res/mipmap-xxhdpi/num_setting_right.webp
 create mode 100644 VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_add.webp
 create mode 100644 VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_icon.webp
 create mode 100644 VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_plus.webp
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/FontSetView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/FontSetView.kt
new file mode 100644
index 0000000..88477da
--- /dev/null
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/FontSetView.kt
@@ -0,0 +1,50 @@
+package com.remax.visualnovel.ui.chat.ui
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.widget.LinearLayout
+import com.remax.visualnovel.databinding.LayoutFontSetViewBinding
+
+
+class FontSetView @JvmOverloads constructor(
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
+) : LinearLayout(context, attrs, defStyleAttr) {
+
+    companion object {
+        private var GAP = 1
+    }
+
+    private var mBinding: LayoutFontSetViewBinding
+
+    private var mFontValue = 20
+
+    init {
+        mBinding = LayoutFontSetViewBinding.inflate(LayoutInflater.from(context), this, true)
+        setupClickListeners()
+    }
+
+
+
+
+    private fun setupClickListeners() {
+        with (mBinding) {
+            ivFontPlus.setOnClickListener {
+                mFontValue -= GAP
+                tvFontValue.text = mFontValue.toString()
+            }
+
+            ivFontAdd.setOnClickListener {
+                mFontValue += GAP
+                tvFontValue.text = mFontValue.toString()
+            }
+
+        }
+    }
+
+
+
+
+}
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/MaxNumView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/MaxNumView.kt
new file mode 100644
index 0000000..0847306
--- /dev/null
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/MaxNumView.kt
@@ -0,0 +1,88 @@
+package com.remax.visualnovel.ui.chat.ui
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.widget.LinearLayout
+import com.remax.visualnovel.databinding.LayoutMaxNumViewBinding
+
+class MaxNumView @JvmOverloads constructor(
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
+) : LinearLayout(context, attrs, defStyleAttr) {
+
+    companion object {
+        private var GAP = 100
+    }
+
+    private var mBinding: LayoutMaxNumViewBinding
+
+    private var mCurNum = 2500
+
+    init {
+        mBinding = LayoutMaxNumViewBinding.inflate(LayoutInflater.from(context), this, true)
+        setupClickListeners()
+    }
+
+
+
+
+    private fun setupClickListeners() {
+        with (mBinding) {
+            ivLeftIcon.setOnClickListener {
+                mCurNum -= GAP
+                tvCenter.text = mCurNum.toString()
+            }
+
+            ivRightIcon.setOnClickListener {
+                mCurNum += GAP
+                tvCenter.text = mCurNum.toString()
+            }
+
+        }
+    }
+
+
+
+    /*override fun onTouchEvent(event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                val x = event.x
+                val y = event.y
+
+                if (mBinding..contains(x, y)) {
+                    isLeftPressed = true
+                    startLongPress(false) // 减小
+                    return true
+                } else if (rightArrowRect.contains(x, y)) {
+                    isRightPressed = true
+                    startLongPress(true) // 增大
+                    return true
+                }
+            }
+
+            MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
+                stopLongPress()
+            }
+
+            MotionEvent.ACTION_MOVE -> {
+                val x = event.x
+                val y = event.y
+
+                // 如果手指移出按钮区域,停止长按
+                if (!leftArrowRect.contains(x, y) && isLeftPressed) {
+                    stopLongPress()
+                }
+                if (!rightArrowRect.contains(x, y) && isRightPressed) {
+                    stopLongPress()
+                }
+            }
+        }
+
+        invalidate()
+        return super.onTouchEvent(event)
+    }*/
+
+
+}
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandSelectView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandSelectView.kt
index 9b30504..64998fc 100644
--- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandSelectView.kt
+++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandSelectView.kt
@@ -36,6 +36,7 @@ class ExpandSelectView @JvmOverloads constructor(
 
     private fun initView(context: Context, attrs: AttributeSet?) {
         mBinding = LayoutExpandSelectViewBinding.inflate(LayoutInflater.from(context), this, true)
+        mBinding.itemsContainer.setBackgroundResource(R.drawable.bg_expand_view_items)
         setupAttributes(attrs)
         setupClickListeners()
     }
diff --git a/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml b/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml
index 3b0c932..48623c3 100644
--- a/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml
+++ b/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml
@@ -193,8 +193,11 @@
             android:layout_height="wrap_content"
             android:orientation="vertical"
             android:layout_marginTop="10dp" >
-
-
+            
         
 
 
@@ -213,6 +216,11 @@
             android:layout_height="wrap_content"
             android:orientation="vertical"
             android:layout_marginTop="10dp" >
+            
 
         
 
diff --git a/VisualNovel/app/src/main/res/layout/layout_expand_select_view.xml b/VisualNovel/app/src/main/res/layout/layout_expand_select_view.xml
index 6b0de7f..c22d5b3 100644
--- a/VisualNovel/app/src/main/res/layout/layout_expand_select_view.xml
+++ b/VisualNovel/app/src/main/res/layout/layout_expand_select_view.xml
@@ -47,7 +47,6 @@
         android:layout_height="wrap_content"
         android:orientation="vertical"
         android:layout_marginTop="@dimen/dp_2"
-        android:background="@drawable/bg_expand_view_items"
         android:visibility="gone"/>
 
 
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/res/layout/layout_font_set_view.xml b/VisualNovel/app/src/main/res/layout/layout_font_set_view.xml
new file mode 100644
index 0000000..f1d1893
--- /dev/null
+++ b/VisualNovel/app/src/main/res/layout/layout_font_set_view.xml
@@ -0,0 +1,75 @@
+
+
+
+    
+        
+
+        
+    
+
+    
+        
+
+        
+
+        
+    
+
+
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/res/layout/layout_max_num_view.xml b/VisualNovel/app/src/main/res/layout/layout_max_num_view.xml
index 6b0de7f..e4a7284 100644
--- a/VisualNovel/app/src/main/res/layout/layout_max_num_view.xml
+++ b/VisualNovel/app/src/main/res/layout/layout_max_num_view.xml
@@ -1,53 +1,43 @@
 
-
+    app:backgroundColorToken="@string/color_chat_setting_item_bg"
+    app:radiusToken="@string/radius_m"
+    android:paddingVertical="@dimen/dp_12"
+    android:paddingHorizontal="@dimen/dp_17"
+    >
 
-    
+
+    
+        android:layout_toEndOf="@id/iv_left_icon"
+        android:layout_toStartOf="@+id/iv_right_icon"
+        android:layout_centerVertical="true"
+        android:textSize="@dimen/sp_14"
+        android:textColor="@color/gray6"
+        android:gravity="center"
+        android:textStyle="bold"
+        android:text="2500"
+        />
 
-        
+    
 
-        
-
-        
-
-    
-
-    
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/VisualNovel/app/src/main/res/mipmap-xxhdpi/num_setting_left.webp b/VisualNovel/app/src/main/res/mipmap-xxhdpi/num_setting_left.webp
new file mode 100644
index 0000000000000000000000000000000000000000..549f0c81723407c0b3da05287046cda1da95234b
GIT binary patch
literal 1090
zcmWIYbaS&}VPFV%bqWXzu!!JdU|=u+VjVE@baoCn!3g9sFrEOBEI_H;ypp0IcPE92
z$S4K&2Mmlr2nLDC#RU)+RuZV{+ck*V%eq)q;1}dfNi9wWD)|7!Dn&rcfo>83vPIG%
zYz+`Q3BtAkvCB&eN`PttK=2?(*InG6iuTNxN6ZXv`}7BDdI
zw=ghlJC6`Ugh@eSQ6ktlU~DijrKK@2d|J-Hz#GZHAbf#=fh!s;2PAN~O#vt+19VqD
z5T-NaFr+dlFnBWLF(fnS0a-@CNHt_I1IDnAHxmPcz77MoK=@;=Nh(KI&3jz^=0#++
z(tNHTNpH42#1tzN^_-Lxdj6wr*_So86a86h49l!@Zo5q?o;c<2dnSnnm0}AS3%UL|
ze(K+T|Bca`zV5pA?z?@Tf4<4u`siy_;_gD3^VeTLwK<=>d)24UKXWFvCC<41I`sB7
z70*e&mlLEt)lQmC+Twe?^z;A!*UfTor%B)T51kuYs&?=jy9%f0tuP^m28V`8Vg{U{
zt#6%$Jee4#YylE=4U<^-ZhJWid9wUFpmuYW7N@75Cj+|zgTe%rNgNCuEDQ>nlQc3X
zamXBCVq|1s0{U9TQD{Q$?OPkojkm3}G7XYmd3QnH8=LR-?EB}vw|UTg2l{`T0S~gFXHLsH`hs#&TWd06{
YwA}Xp?RWY2=eJCmvG?~s@z)9r04zyZH~;_u
literal 0
HcmV?d00001
diff --git a/VisualNovel/app/src/main/res/mipmap-xxhdpi/num_setting_right.webp b/VisualNovel/app/src/main/res/mipmap-xxhdpi/num_setting_right.webp
new file mode 100644
index 0000000000000000000000000000000000000000..e16f4c86aa514c090566d9e1fa84a81299c0419c
GIT binary patch
literal 1094
zcmWIYbaS&~VPFV%bqWXzu!!JdU|=u+VjVE@baoCn!3g9sFrEOBEI_H;ypp0IcPE92
z$S4K&2Mmlr2nLDC#RU)+RuZV{+ck*V%eq)q;1}dfNi9wWD)|7!Dn&rcfo>83vPIG%
zYz+`Q3BtAkvCB&eN`PttK=2?(*InG6iuTNxN6ZXv`}7BDdI
zw=ghlJC6`Ugh@eSQ6ktlU~DijrKK@2d|J-Hz#GZHAbf#=fh!s;2PAN~O#vt+19VqD
z5T-NaFr+dlFnBWLF(fnS0a-@CNHt_I1IDnAKNACkz77MoK=@;`ZMmU0pVuBWN_#7<5pnE>N~Ey{Bq~%
zr-vREocLLDuWtYIs=d47)>rP03kf}57?XYW`s=4j8&A9~d!4k=BlPS4|C5g-O8ls?
z^SeCd{(JMSp+^mPe*XXe`~QFGHpNg^q19d2Zmr^45PMzp$5rFb&{C%I>!mBTCaqXB
ziKRhhc@@(tCN)8eE8DKE@>AvX4A`&2G@XmV-~rnzv(Bu^KDLv21Q;YPsH|WD`jUxB
zty7DEA%Nil3n*CwV{gGEmJ{1@-`*cdH|A)jvPFS$px;A2*(NbgVCa99nUDcSq^3!tYNaSkJg0IdUXxk
zzM}Nf>zfO8md$fd;rh;}_FZC!*u|(D30}{ui%Nb~Pr4^}BJo+U@hqN~A$+&*xlEc?
zbmP0?NqhYzJ0AON`+2o*)#Y<}N8X*e{p9qw
zHOc<$85w@Wp8@6=0A=)Ni2wiq
literal 0
HcmV?d00001
diff --git a/VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_add.webp b/VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_add.webp
new file mode 100644
index 0000000000000000000000000000000000000000..ed2a311e43be5a28366261a18eacdfaabef9ba17
GIT binary patch
literal 1280
zcmWIYbaVT`!oU#j>J$(bU=hK^z`$St#MWTs>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93
zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj
z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ
zZ((5Ab{-*y2$O=uqC~K9z}R45N=sv4__UmXfj5$YLHGg#16MRy4oKi|n*vZu2I#JQ
zAWUb-VMt|AVDMzfV@PJu1G0>Ok!r|b28>}JE@lP>ed_~!0`)AGn{q?1-unJ%5~DMd
zqG^)~(_gdVopYwTo!NhQTQ0MuxYoAFWuVe%?p?2ZMng8`@-SNtg#&|jB#tS
zmWhby)qR{=!Wb}t!~YSBqlT-Y!lj-=jEBUPS9u=QV$d;jJF2jjr6aJx6%^JgYzl9;
zvX{RGvct&A)anHHbv_H
znJX_Mlan9+oO15}pJpi=FU_S>f`G)KuHrnKsxL1tE_S!xb+tjx+TMNd?Z?>#hR=dL
zFWp)vNPDVe_}`u^U7UvC~^f5<=Y+-a}7Umx7EtMUHP?BBb$c+)5E>93BTy}Qhg@Ac7(
zlH23bn_nKzY?JjrSm)@Lc6^cLW&iEI^38`f_Pps|bMQ;M?t
z#r->@^{(yZowYluaH?B_&+P|??>o<)FRAnEzD_5@%o#GT4?o=)n4F%;qTy9}@_g^!
zMaO!ss|qUce{Xu+Em{fz!TwWR8gy=N0(*Z-&?#BQU!}`dUEk`;IdwzTInjQGyW8v6
zb^Ft9|NS!uPFP!z*Wcu1{i#2r=1a
z$6uyDJ!FGqiH4jN_a@U*cV$C8(+~fym=U-pD7I%y$d{G-rE9;5b}@LzA3J8XaFPFc
z=84wA-A9gJTkrTbMbz!H^80Jz3m%3U{0<8JU#xhv!g7g2>z!*iOcidJEs|Q=+UuD4
O7?jaT0{?>3Y#0D<)T4a>
literal 0
HcmV?d00001
diff --git a/VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_icon.webp b/VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_icon.webp
new file mode 100644
index 0000000000000000000000000000000000000000..fa21373054653eae874abad093059759eb1dfc4e
GIT binary patch
literal 628
zcmWIYbaTsLVqge&bqWXzu!!JdU|=u+VmmPMbaoCn!3g9sFrEOBEI_H;ypp0IcPE92
z$S4K&2Mmlr2nLDC#RU)+RuZV{+ck*V%eq)q;1}dfNi9wWD)|7!Dn&rcfo>83vPIG%
zYz+`Q3BtAkvCB&eN`PttK=2?(*InG6iuTNxN6ZXv`}7BDdI
zw=ghlJC6`Ugh@eSQ6ktl79h!#md3#FX*mM}ZzKbQ@C612u4u3vkig+K1)!7+&|UdJ
zn9h*HkjkLI;K`83kj$V5WElY?)sVpq7{fkwK!y5t4g3P)3IZO9+PVlrL8I#2mxljZ
z23;ziUdO5;gkL23EMT%UFx#0wPw;Q}?QOh^4fonH0`+4D4$^{xfzx?r&YXGn>zZA?
fckkr7T6pR&pWih7_og%7izBSp?)vb1!Fm<|foXCw
literal 0
HcmV?d00001
diff --git a/VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_plus.webp b/VisualNovel/app/src/main/res/mipmap-xxhdpi/setting_font_plus.webp
new file mode 100644
index 0000000000000000000000000000000000000000..841f2e0ab34a1e02275765bf9a05595cb11cf14e
GIT binary patch
literal 1266
zcmWIYbaQ*f!oU#j>J$(bU=hK^z`$St#MWTs>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93
zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj
z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ
zZ((5Ab{-*y2$O=uqC~K9z}R45N=sv4__UmXfj5$YLHGg#16MRy4oKi|n*vZu2I#JQ
zAWUb-VMt|AVDMzfV@PJu1G0>Ok!r|b28>~!KTHe^`ql^d1j?W6n5g16^$oz6=vR<@npXA&Vam}jf`f8<>t-ZAUw&jK|MQF
zO+{zUpC{ZmIUNppRJff}5K#1F>)BAy@ZqF{_GHy;#)OSV(|9(SGNtGoPy!}31~)c^
z*W0!xN2hK3d-LYD*TH4-n{sdO`d_^G_0i(`bXnIg_Zw9_bB$X!rSQLO(1!&Nwde~s
z5n$&0DM4PEOQ!^Bt=aM7-RI}$=iArs%fBIDko3QQ#rFku9D2`U^iSS8-s>Eo%xyPq
z+Ub=ie_F;Z^O?UT<$hYd=Hd6XH!VZ98NK&CvFGfb(0!^oC(hjBfB4T$SX+%HEv0U@d`owH=X-U*yHz4dl}Adw7oM!+VtD=E{3P7^(B2>QnK=!+!~G_{P=d)EC{$(
zY^i);7S!vfWEqd~E?af^*`gM=2;1;3_lAen^&zf0Kc}|N{J7n1mD06}@P`~5eq?{B
zHoR~h0m_Y+-TvHFWN_o}E7{PvWiM-c7__^NT{A!U?(Qlsv&nu(4ktL4x$kt}to1VI
zw-CSVQK_q2J^Wqg-*UhB++!ifhF`I7*6@nfy2*9h=SJ$&{{TwQx+go!ls$tjf
qgKyG9AD_P}^7!c#Cf*|d83J!+2KHY1WD$PDP82gG{NUfg#Q*>UUz@i8
literal 0
HcmV?d00001
diff --git a/VisualNovel/app/src/main/res/values/strings.xml b/VisualNovel/app/src/main/res/values/strings.xml
index b34a6a7..2f0b91b 100644
--- a/VisualNovel/app/src/main/res/values/strings.xml
+++ b/VisualNovel/app/src/main/res/values/strings.xml
@@ -479,5 +479,6 @@
     Short Text Mode
     Play dialogue only
     Maximum number of response tokens
+    Font Size
 
 
\ No newline at end of file