From 80ac0090bda1070dc5a8262840b5f88c588bd6d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=B8=86?= <3031465419@qq.com> Date: Fri, 28 Nov 2025 18:48:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=AA=E4=BA=BA=E8=B5=84?= =?UTF-8?q?=E6=96=99=E7=BC=96=E8=BE=91=E7=AE=80=E4=BB=8B=E6=A1=86=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9F=AD=E8=A7=86=E9=A2=91=E6=9A=82=E5=81=9C?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E3=80=81=E4=BF=AE=E5=A4=8D=E7=9F=AD=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E7=95=8C=E9=9D=A2=E7=82=B9=E6=9A=82=E5=81=9C=E9=94=81?= =?UTF-8?q?=E5=B1=8F=E5=90=8E=E5=86=8D=E8=A7=A3=E9=94=81=E4=BC=9A=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=92=AD=E6=94=BE=E8=A7=86=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/aiosman/ravenow/ui/account/edit2.kt | 53 +++++++++++++++--- .../tabs/recommend/VideoRecommendationItem.kt | 16 +++--- .../ui/index/tabs/shorts/ShortViewCompose.kt | 23 +++++--- .../main/res/mipmap-hdpi/dt_ts_sp_bf_btn.png | Bin 0 -> 798 bytes .../main/res/mipmap-mdpi/dt_ts_sp_bf_btn.png | Bin 0 -> 618 bytes .../main/res/mipmap-xhdpi/dt_ts_sp_bf_btn.png | Bin 0 -> 1070 bytes .../res/mipmap-xxhdpi/dt_ts_sp_bf_btn.png | Bin 0 -> 1421 bytes .../res/mipmap-xxxhdpi/dt_ts_sp_bf_btn.png | Bin 0 -> 1855 bytes app/src/main/res/values-ja/strings.xml | 1 - app/src/main/res/values-zh/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 - 11 files changed, 68 insertions(+), 27 deletions(-) create mode 100644 app/src/main/res/mipmap-hdpi/dt_ts_sp_bf_btn.png create mode 100644 app/src/main/res/mipmap-mdpi/dt_ts_sp_bf_btn.png create mode 100644 app/src/main/res/mipmap-xhdpi/dt_ts_sp_bf_btn.png create mode 100644 app/src/main/res/mipmap-xxhdpi/dt_ts_sp_bf_btn.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/dt_ts_sp_bf_btn.png diff --git a/app/src/main/java/com/aiosman/ravenow/ui/account/edit2.kt b/app/src/main/java/com/aiosman/ravenow/ui/account/edit2.kt index 6d99c70..856abb9 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/account/edit2.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/account/edit2.kt @@ -70,6 +70,8 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.text.TextLayoutResult import com.aiosman.ravenow.ConstVars import com.aiosman.ravenow.ui.composables.pickupAndCompressLauncher import android.widget.Toast @@ -407,7 +409,7 @@ fun AccountEditScreen2(onUpdateBanner: ((Uri, File, Context) -> Unit)? = null,) ProfileInfoCard( label = stringResource(R.string.personal_intro), value = model.bio, - placeholder = stringResource(R.string.bio_placeholder), + placeholder = "", onValueChange = { onBioChange(it) }, isMultiline = true ) @@ -564,20 +566,30 @@ fun ProfileInfoCard( isMultiline: Boolean = false ) { val appColors = LocalAppTheme.current + var isFocused by remember { mutableStateOf(false) } + var lineCount by remember { mutableStateOf(1) } + + // 根据行数决定对齐方式:单行时居中,多行时顶部对齐 + val verticalAlignment = if (isMultiline) { + if (lineCount <= 1) Alignment.CenterVertically else Alignment.Top + } else { + Alignment.CenterVertically + } + Box( modifier = Modifier .fillMaxWidth() .height(if (isMultiline) 66.dp else 56.dp) // 昵称框高度56dp,个人简介66dp .clip(RoundedCornerShape(16.dp)) .background(appColors.secondaryBackground), - contentAlignment = if (isMultiline) Alignment.TopStart else Alignment.CenterStart + contentAlignment = if (isMultiline && lineCount > 1) Alignment.TopStart else Alignment.CenterStart ) { Row( modifier = Modifier .fillMaxWidth() .padding(horizontal = 16.dp) - .padding(vertical = if (isMultiline) 11.dp else 0.dp), - verticalAlignment = if (isMultiline) Alignment.Top else Alignment.CenterVertically + .padding(vertical = if (isMultiline && lineCount > 1) 11.dp else 0.dp), + verticalAlignment = verticalAlignment ) { // 标签 Box( @@ -600,10 +612,26 @@ fun ProfileInfoCard( Box( modifier = Modifier.weight(1f) ) { - if (value.isEmpty()) { + // 对于个人简介(isMultiline = true),当值为空且没有焦点时显示图标 + if (value.isEmpty() && isMultiline && !isFocused) { + Box( + modifier = Modifier + .fillMaxWidth() + .height(44.dp), + contentAlignment = Alignment.CenterStart + ) { + Icon( + painter = painterResource(id = R.mipmap.icons_infor_edit), + contentDescription = null, + modifier = Modifier.size(16.dp), + tint = appColors.secondaryText + ) + } + } else if (value.isEmpty() && !isMultiline && placeholder.isNotEmpty()) { + // 对于非多行输入框,仍然显示 placeholder 文字 Text( text = placeholder, - fontSize = if (isMultiline) 15.sp else 17.sp, + fontSize = 17.sp, fontWeight = FontWeight.Normal, color = appColors.secondaryText, modifier = Modifier.fillMaxWidth() @@ -613,7 +641,11 @@ fun ProfileInfoCard( BasicTextField( value = value, onValueChange = onValueChange, - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .onFocusChanged { focusState -> + isFocused = focusState.isFocused + }, textStyle = androidx.compose.ui.text.TextStyle( fontSize = if (isMultiline) 15.sp else 17.sp, fontWeight = FontWeight.Normal, @@ -621,7 +653,12 @@ fun ProfileInfoCard( ), cursorBrush = SolidColor(appColors.text), maxLines = if (isMultiline) Int.MAX_VALUE else 1, - singleLine = !isMultiline + singleLine = !isMultiline, + onTextLayout = { textLayoutResult: TextLayoutResult -> + if (isMultiline) { + lineCount = textLayoutResult.lineCount + } + } ) } } diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/moment/tabs/recommend/VideoRecommendationItem.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/moment/tabs/recommend/VideoRecommendationItem.kt index 310fd82..cc663bd 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/moment/tabs/recommend/VideoRecommendationItem.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/moment/tabs/recommend/VideoRecommendationItem.kt @@ -16,10 +16,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState @@ -35,6 +32,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.ContentScale @@ -99,6 +97,7 @@ fun VideoRecommendationItem( skipPartiallyExpanded = true ) var pauseIconVisibleState by remember { mutableStateOf(false) } + var shouldResumeAfterLifecyclePause by remember { mutableStateOf(false) } // 防抖:记录上次双击时间,防止快速重复双击 val lastDoubleTapTime = remember { mutableStateOf(0L) } val doubleTapDebounceTime = 500L // 500ms 防抖时间 @@ -202,13 +201,13 @@ fun VideoRecommendationItem( ) if (pauseIconVisibleState) { - Icon( - imageVector = Icons.Default.PlayArrow, + Image( + painter = painterResource(R.mipmap.dt_ts_sp_bf_btn), contentDescription = null, modifier = Modifier .align(Alignment.Center) .size(80.dp), - tint = Color.White + colorFilter = ColorFilter.tint(Color.White) ) } } @@ -341,10 +340,12 @@ fun VideoRecommendationItem( val observer = LifecycleEventObserver { _, event -> when (event) { Lifecycle.Event.ON_PAUSE -> { + shouldResumeAfterLifecyclePause = exoPlayer.isPlaying && !pauseIconVisibleState exoPlayer.pause() } Lifecycle.Event.ON_RESUME -> { - if (isVisible) { + if (isVisible && shouldResumeAfterLifecyclePause) { + pauseIconVisibleState = false exoPlayer.play() } } @@ -420,3 +421,4 @@ private fun VideoBtn( ) } } + diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/shorts/ShortViewCompose.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/shorts/ShortViewCompose.kt index 6b4c093..21375d6 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/shorts/ShortViewCompose.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/shorts/ShortViewCompose.kt @@ -26,10 +26,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.ui.graphics.RectangleShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState @@ -321,9 +318,9 @@ private fun SingleVideoItemContent( isPageVisible: Boolean = true ) { // 将暂停状态移到每个视频项内部,使用 remember 保存,避免在点赞/关注时被重置 - val pauseIconVisibleState = remember(pager) { - mutableStateOf(false) - } + val pauseIconVisibleState = remember(pager) { mutableStateOf(false) } + // 记录进入后台前是否在播放,用于决定是否需要自动恢复播放 + val shouldResumeAfterLifecyclePause = remember(pager) { mutableStateOf(false) } // 当页面切换时,重置暂停状态 LaunchedEffect(pager, pagerState.currentPage) { @@ -343,6 +340,7 @@ private fun SingleVideoItemContent( pagerState = pagerState, pager = pager, pauseIconVisibleState = pauseIconVisibleState, + shouldResumeAfterLifecyclePause = shouldResumeAfterLifecyclePause, onLikeClick = onLikeClick, onCommentClick = onCommentClick, onCommentAdded = onCommentAdded, @@ -375,6 +373,7 @@ fun VideoPlayer( pagerState: PagerState, pager: Int, pauseIconVisibleState: MutableState, + shouldResumeAfterLifecyclePause: MutableState, onLikeClick: ((MomentEntity) -> Unit)? = null, onCommentClick: ((MomentEntity) -> Unit)? = null, onCommentAdded: ((MomentEntity) -> Unit)? = null, @@ -507,8 +506,8 @@ fun VideoPlayer( } if (pauseIconVisibleState.value) { - Icon( - imageVector = Icons.Default.PlayArrow, + Image( + painter = painterResource(R.mipmap.dt_ts_sp_bf_btn), contentDescription = null, modifier = Modifier .align(Alignment.Center) @@ -535,15 +534,21 @@ fun VideoPlayer( when (event) { Lifecycle.Event.ON_PAUSE -> { // 应用进入后台时暂停 + shouldResumeAfterLifecyclePause.value = exoPlayer.isPlaying && !pauseIconVisibleState.value exoPlayer.playWhenReady = false exoPlayer.pause() } Lifecycle.Event.ON_RESUME -> { // 返回前台且为当前页面时恢复播放 - if (pager == pagerState.currentPage) { + if ( + pager == pagerState.currentPage && + isPageVisible && + shouldResumeAfterLifecyclePause.value + ) { exoPlayer.playWhenReady = true exoPlayer.play() + pauseIconVisibleState.value = false } } diff --git a/app/src/main/res/mipmap-hdpi/dt_ts_sp_bf_btn.png b/app/src/main/res/mipmap-hdpi/dt_ts_sp_bf_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..d80d3bd470f533ed54e7a9435c8eebb564bdd16d GIT binary patch literal 798 zcmV+(1L6FMP)Px#Fi=cXMMrQU2deSMsqoV2vG?(Xj0-QEBH|B{xclmGw#4|GyaQvjKW5OX71LZsKSz|8RFDbs*c z0007UNklNk83u?d;A(5mLPSc{L?^z5Zo8VkdW&8{zo%6Fyi*nC^cS}6#dCnV5jMi+b z%BAR)jeTWfc13dol54z=jqoX|scf{Yj3rdx%Blz}tlSb|)T`%IhOIm{0~tjx<>9xS z6S~%Ot|7%%-;D$Bx9Q)(`%QV9%J1$(_fqJ-mv!$FYb{9te8iXv;m zS;d}KbW?}O%0xF&Eet%rX{W`wAuHnnCt>B>&7AT}O9kalLAk-u?n{*08Qh*3tFF-I z$+eJMQkWR3=;Xk?!)r1ZCG4d8H^yY?svn;K*Bevq*Pye>q co31VPUn=duPJ)~aZU6uP07*qoM6N<$g335_QUCw| literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/dt_ts_sp_bf_btn.png b/app/src/main/res/mipmap-mdpi/dt_ts_sp_bf_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..d02bf7ecbfd584261703d4a015b4e7035356593c GIT binary patch literal 618 zcmV-w0+s!VP)Px#IZ#YgMKm-tTU%Q-H8n9YF)=YQGBPqVGc!kUOfxex zEiEm$xVZK8^_!cU%F4=hb#>d@+c7aQNJvQk|Nr#x;}rk^01|XkPE(nsTqR0jcL0kL z&-TFCuj4PDD9=Yx00058Nkl9T_`2!*LxOsre;{ttWII;~eBB+&C$=bJ+o z2tbP~&er)503ZbK>>P=I0sCN@6>yesOc^KID`Zz_BAa78P`V{uIgzFyqzea)=p>ur zFw7k56e$kR%nq_R$3lrL#&J+4ch4!soIoJJe1o8FZ7ypBBFqPLaAK(BywB0Wsl_Zg z;G1KiUiQO@0?ZK^)Nc8|$UtgmkvTX{$niTzY6l>094F@3jT6M2uyPFX!`Ka7|KO}N z5MjNhv}wqanuUXB49^ggwt1CnmbOX#3B4>txw5*4TKx5^Mjt}N7;Gi z->;FpUt0H_nSc6R{vp!*#5A*3Fld`>ex627ex~Y0zt)QvuU=@?FVW-Y9hPQ&Z@t{k z#xZg``+Llb?HupJAho0WUX?@^e)68z>Mzv#9ku>TtshkDPu2Qmwf?=}9Ql}=Z&aAM zpSQSTGsyfWL-K|{k8Px#Gf+%aMKm-tGcz+YGc)n=@ia6vEG#TCGBQVSOf)n! zFfcH}!opx+U`R+ve}8}7-QA+1qW}N@c?Kb90000GbW%=JnQcwz3*u423roF!Z8*|EC@GI98p~(r}Awo&A5tZ-pdKNP-hz z);nz!5#cT(rHppoCj3h2+Kbmw9x?^ ztHBXDUjWA&uoZ72l!rM26oq3GVd8;M%xC^cXTfoVOd^+zV-+%Lcg1#a9P(<ZW}l3T^0RyZ%wg*NFpl$_Bl0j_#88vF4_@__{7EPDkc7-umLL>T939*8i` z(>#!2oZsL=+l2g?d(bu^zi7b`uvU+q3nCo(xv}4HEJVmYaM+GK4%0M^Ialk3!@L~5 zoaei`e#*95HyqX<4-c3J(U51gz>KS*o8OfI$lY;F4w@W5`i{fNf&ILqu1~(v04vO= zd0pL*=saMBc|V8Lr#TNeNA_V3E5$(Oio?h{mw8K;4>Po&bB1}U|7e)(o}3V02C5JaEB`1CP8Wm2S}p>W!kNcPIB_%_ z^RPa!B5}^BqA?PutAjH{;>_cJoDEg_TrBCzDuSq*Z=?k07*qoM6N<$f>@jAtN;K2 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/dt_ts_sp_bf_btn.png b/app/src/main/res/mipmap-xxhdpi/dt_ts_sp_bf_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..21ae51d47505ac9b54a30517d7d4a71c5411d4ed GIT binary patch literal 1421 zcmV;81#Px#El^BUMMrQ|H8K!qyLxF5Qr@ zHO9n0K;j>8T?OxNu%rchFZbTgoHO%w;a zmQl0qr%NVe-tv4|1C*bRfZDj~eR)#FBw1C~x9ug9W-D^E{D$db#dRsCDyF-wh-h-U zWGFUJ28`diB3E5evxaQm0~o4lF0j0B3<$>b$^~YDGTw|GYsy%dof_{NE3=8ST*+9% z*r;s9*xC&)%QyBm1DUM0K3G$BspP^kw>9%c)E1N@%Wf1MN02p&zHv9A7IOk9VnpXF z5-jr=A`H4bvLzW7B~=NzMR82bErMfWZgqD|(51~f zN~pL&?9*ZuaYGn0h-yO^vx?>PSVc@Aw=9|yONy)s*brXGiBp=a$hO1RWQA3qRYip- zET_u~P1vL^%hX`g6`C;R=?YC)PMb9VSWjXiY)zZhvBN2;vld~}=-3Fn)MuTGV@scP z9?fe2)~eEJGDRE!X&7@w?TD9n=<6r{Vf4dpW9MVtVKYTuP(JSlr`C9HFGQ*gM_Z_- zy|or1Rfb2wx$V>~g-HDIP|#t=Y}f=x@<*Ml;1?HGU@VlwyCD{P&ITBg9|_GyK-UmFfC8c&QfA z8g*8H5m%J`SQbb4gXB>D7S9U4b6EY>GHm54PU4`kMw3`{d3e;l{I$T@F^`&}MiN={ z87mW0R0``4okiOLTu)|^V{DbkI!I;(hh&!TkTzO&LQcN!Eb1W65Yzlo3X2+IixR9i zvaJ0y7BQU1h|5lnxi>O_{?lEO(-mql26K-S@Zma`6#^Yw$sLdKT>s{za#C%`=a z8^}7OvXJXCjddWh-*DeYy%OHDT@~3MPP(!f`(EcgHhDi^gPv1h=dU953@dQ1ERxUW z35yEj?q&dc4}iSiK;GLB6aA3m2)6E{d~4D3@7a*|hg-JdV15#)f$w`Q@3BvKsMb9; z^?p7)h_CBRR)O<8Z^#MN-1Tz4r|i3++TT;wh`;{#o#-nc)&5SjMg4jE``7U&V_{|Z zcRl3y$~=Nqz<*zcem8#(VAW7hU^?D8WMMLdh-0iL?`_n@;q~Tyl*$Y9xU2zw&!+ym zr`)6WhsqOH=+%2s-3W^mSRmi`s!rHg)Md@deAyVWPK&HZWLJ$3$61-)-TIC)}`PaS#K`sSl0#t z$o>Fwju9F?;E8mjdkrgY0hu?c0OwN8~t)MP_R(AD}^jRP~78 z@5>f-)22TlX0lrLL^-lTX47|W!48$l`Y@CQ%pS#sc`m3XY!-&%sImA=pbsZ8geCf! z)`0y*o0GPI7{4>Sm+G1)<Z1Dhwnp+{v@daWvz$@07n^g-OQ*}|_^s;v bIurC4eE1&=w%*Z~00000NkvXXu0mjf+dHQC literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/dt_ts_sp_bf_btn.png b/app/src/main/res/mipmap-xxxhdpi/dt_ts_sp_bf_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4521fefe6558ef2c7cacfddaaa911d81cef24c GIT binary patch literal 1855 zcmV-F2f+A=P)Px#Do{*RMMrQNkl8k-n!#Y0qjA=OiTwtK#yMMai+=r1WI6*+JY6q_EH(|n^C)j&upK09;Sn90ru zidjbXSy$|;8H6h0#|h}+dZGmM04P)j;o{CJ!*CraAw47&KqV$hxax8^MaOg1U44sC zatz$OrbJbB(T^q!PZuM}Ny&asi7QX%vn!7?4K+Ap1G_IPPXA`+rtUdX(p9L)m%1#gi=^gR@KEZ@|8*{IFVhPu!&>jbTjYT z#+k;b$O9!sYr;BBVr8z|$0<7RyRw#^H5WKlq*x`)qfTNqK3Z#Ta7swA8XGM~u^Jbx z30F8(q*#rqguW}9(Qg!!&Tv!Nc-W6soSlb-&cM(c}nzSN>E?9A%8E;)Fb^ck!CR^R6N ziEGv(%~*3m9k0Y6IdbBCME`&ph776FAmWozU4(Eb|Luhx-GT~4vVJL?~ zF%JnR8;$;*f)k11yr;B-`Ekk_aW1fMdK4TbhI2{CbU_>qhI9NG=QGYHVP#4KhE@hY z`bk1`3I%I0&aI3f8)Vz1T>-g_2(TSN|ETRn(*y68klwKYPK&r^CXj#I_~GiejqenbDwsdDfc^3V_Cplf z?_!S;a7w7Z8iM_Z=|@OThWm+kAIZsZKY$mIoD6q(fO{`b;~aMr?=B#ZSQ6M#QfLQlfgM8zc1WAco@dlSxl=f4?l{$(_=iKfOZ5uEDdCA}Zux-u z^jJBIRu$t+_mo&UidOMsIqtat6)Uu(!d*nG0(H!M@&zEf2)zaD6$QTK(i31^Z;^Ia z3)tl!cFmlAV; zXxEp5UG9o@^)1-Nz-ZSdOSXkO1RSs{x5eBX67P=}3RmOPxXfN8T*SNMrNY(l4Do002ovPDHLkV1k{+aytM3 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 9d906a8..e756bb2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -334,7 +334,6 @@ 自己紹介の長さは100文字を超えることはできません ユーザープロフィールの読み込みに失敗しました。もう一度お試しください ニックネームを入力 - 私の世界へようこそ。魔法について何かお見せします 保存 MBTIを選択 MBTIは心理学理論に基づく人格評価ツールです。人々がエネルギーを獲得する方法(内向-外向)、情報を収集する方法(感覚-直感)、意思決定を行う方法(思考-感情)、生活様式(判断-知覚)の好みを理解することで、人格タイプを16種類に分類します。 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index d66c4eb..f8b5e68 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -326,7 +326,6 @@ 加载用户资料失败,请重试 网络错误,请检查网络 请输入昵称 - 欢迎来到我的世界,我会向你展示一些关于魔法的内容 保存 选择 MBTI MBTI是基于心理学理论的人格测评工具。了解人们获取能量方式(内向-外向)、收集信息方式(感觉-直觉)、做决策方式(思维-情感)、生活方式(判断-知觉)的偏好,将人格类型分为16种。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d62e13d..b8db9da 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -334,7 +334,6 @@ Failed to load user profile, please try again Network error, please check your network Value - Welcome to my fantiac word i will show you something about magic Save Choose MBTI MBTI is a personality assessment tool based on psychological theory. By understanding people\'s preferences in how they acquire energy (introversion-extraversion), collect information (sensing-intuition), make decisions (thinking-feeling), and live their lives (judging-perceiving), personality types are divided into 16 kinds.