feat:添加音乐弹窗布局优化

This commit is contained in:
amos
2025-12-30 14:40:53 +08:00
parent 91abbff2b1
commit 18185e69b0
3 changed files with 181 additions and 87 deletions

View File

@@ -13,11 +13,11 @@ android {
applicationId = "com.memory.app"
minSdk = 26
targetSdk = 35
versionCode = 31
versionName = "1.4.7"
versionCode = 33
versionName = "1.4.9"
buildConfigField("String", "API_BASE_URL", "\"https://x.amos.us.kg/api/\"")
buildConfigField("int", "VERSION_CODE", "31")
buildConfigField("int", "VERSION_CODE", "33")
}
signingConfigs {

View File

@@ -578,38 +578,76 @@ private fun MusicLinkInputDialog(
androidx.compose.ui.window.Dialog(onDismissRequest = onDismiss) {
Surface(
shape = RoundedCornerShape(24.dp),
shape = RoundedCornerShape(28.dp),
color = MaterialTheme.colorScheme.surface,
shadowElevation = 16.dp,
modifier = Modifier.fillMaxWidth()
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
) {
Column(modifier = Modifier.padding(24.dp)) {
// 标题
Row(verticalAlignment = Alignment.CenterVertically) {
Box(
modifier = Modifier
.size(4.dp, 24.dp)
.clip(RoundedCornerShape(2.dp))
.background(Brand500)
)
Spacer(modifier = Modifier.width(12.dp))
// 标题
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(
text = "添加音乐",
fontWeight = FontWeight.Bold,
fontSize = 20.sp,
color = MaterialTheme.colorScheme.onSurface
)
IconButton(
onClick = onDismiss,
modifier = Modifier.size(32.dp)
) {
Icon(
imageVector = Icons.Default.Close,
contentDescription = "关闭",
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(20.dp)
)
}
}
Spacer(modifier = Modifier.height(8.dp))
Spacer(modifier = Modifier.height(20.dp))
// 音乐图标
Box(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp),
contentAlignment = Alignment.Center
) {
Box(
modifier = Modifier
.size(64.dp)
.clip(CircleShape)
.background(Brand500.copy(alpha = 0.1f)),
contentAlignment = Alignment.Center
) {
Icon(
imageVector = Icons.Outlined.MusicNote,
contentDescription = null,
tint = Brand500,
modifier = Modifier.size(32.dp)
)
}
}
Spacer(modifier = Modifier.height(16.dp))
// 提示文字
Text(
text = "粘贴 QQ 音乐分享链接",
fontSize = 14.sp,
color = MaterialTheme.colorScheme.onSurfaceVariant
color = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.fillMaxWidth(),
textAlign = androidx.compose.ui.text.style.TextAlign.Center
)
Spacer(modifier = Modifier.height(16.dp))
Spacer(modifier = Modifier.height(20.dp))
// 输入框
OutlinedTextField(
@@ -618,43 +656,52 @@ private fun MusicLinkInputDialog(
placeholder = {
Text(
"https://y.qq.com/...",
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f)
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f),
fontSize = 14.sp
)
},
modifier = Modifier.fillMaxWidth(),
shape = RoundedCornerShape(12.dp),
leadingIcon = {
Icon(
imageVector = Icons.Outlined.MusicNote,
contentDescription = null,
tint = if (inputUrl.isNotBlank()) Brand500 else MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(20.dp)
)
},
modifier = Modifier
.fillMaxWidth()
.height(56.dp),
shape = RoundedCornerShape(16.dp),
colors = OutlinedTextFieldDefaults.colors(
focusedBorderColor = Brand500,
unfocusedBorderColor = MaterialTheme.colorScheme.outline
unfocusedBorderColor = MaterialTheme.colorScheme.outline,
focusedContainerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.3f),
unfocusedContainerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.3f)
),
singleLine = true
singleLine = true,
textStyle = LocalTextStyle.current.copy(fontSize = 14.sp)
)
Spacer(modifier = Modifier.height(20.dp))
Spacer(modifier = Modifier.height(24.dp))
// 按钮
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.End
// 确定按钮(全宽)
Button(
onClick = { onConfirm(inputUrl) },
enabled = isValidUrl,
modifier = Modifier
.fillMaxWidth()
.height(48.dp),
colors = ButtonDefaults.buttonColors(
containerColor = Brand500,
disabledContainerColor = MaterialTheme.colorScheme.surfaceVariant
),
shape = RoundedCornerShape(12.dp)
) {
TextButton(onClick = onDismiss) {
Text(
"取消",
color = MaterialTheme.colorScheme.onSurfaceVariant
)
}
Spacer(modifier = Modifier.width(8.dp))
Button(
onClick = { onConfirm(inputUrl) },
enabled = isValidUrl,
colors = ButtonDefaults.buttonColors(
containerColor = Brand500,
disabledContainerColor = MaterialTheme.colorScheme.surfaceVariant
),
shape = RoundedCornerShape(12.dp)
) {
Text("确定", fontWeight = FontWeight.Bold)
}
Text(
"添加",
fontWeight = FontWeight.Bold,
fontSize = 15.sp
)
}
}
}

View File

@@ -573,38 +573,76 @@ private fun EditMusicLinkInputDialog(
androidx.compose.ui.window.Dialog(onDismissRequest = onDismiss) {
Surface(
shape = RoundedCornerShape(24.dp),
shape = RoundedCornerShape(28.dp),
color = MaterialTheme.colorScheme.surface,
shadowElevation = 16.dp,
modifier = Modifier.fillMaxWidth()
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
) {
Column(modifier = Modifier.padding(24.dp)) {
// 标题
Row(verticalAlignment = Alignment.CenterVertically) {
Box(
modifier = Modifier
.size(4.dp, 24.dp)
.clip(RoundedCornerShape(2.dp))
.background(Brand500)
)
Spacer(modifier = Modifier.width(12.dp))
// 标题
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(
text = "添加音乐",
fontWeight = FontWeight.Bold,
fontSize = 20.sp,
color = MaterialTheme.colorScheme.onSurface
)
IconButton(
onClick = onDismiss,
modifier = Modifier.size(32.dp)
) {
Icon(
imageVector = Icons.Default.Close,
contentDescription = "关闭",
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(20.dp)
)
}
}
Spacer(modifier = Modifier.height(8.dp))
Spacer(modifier = Modifier.height(20.dp))
// 音乐图标
Box(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp),
contentAlignment = Alignment.Center
) {
Box(
modifier = Modifier
.size(64.dp)
.clip(CircleShape)
.background(Brand500.copy(alpha = 0.1f)),
contentAlignment = Alignment.Center
) {
Icon(
imageVector = Icons.Outlined.MusicNote,
contentDescription = null,
tint = Brand500,
modifier = Modifier.size(32.dp)
)
}
}
Spacer(modifier = Modifier.height(16.dp))
// 提示文字
Text(
text = "粘贴 QQ 音乐分享链接",
fontSize = 14.sp,
color = MaterialTheme.colorScheme.onSurfaceVariant
color = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.fillMaxWidth(),
textAlign = androidx.compose.ui.text.style.TextAlign.Center
)
Spacer(modifier = Modifier.height(16.dp))
Spacer(modifier = Modifier.height(20.dp))
// 输入框
OutlinedTextField(
@@ -613,43 +651,52 @@ private fun EditMusicLinkInputDialog(
placeholder = {
Text(
"https://y.qq.com/...",
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f)
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f),
fontSize = 14.sp
)
},
modifier = Modifier.fillMaxWidth(),
shape = RoundedCornerShape(12.dp),
leadingIcon = {
Icon(
imageVector = Icons.Outlined.MusicNote,
contentDescription = null,
tint = if (inputUrl.isNotBlank()) Brand500 else MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.size(20.dp)
)
},
modifier = Modifier
.fillMaxWidth()
.height(56.dp),
shape = RoundedCornerShape(16.dp),
colors = OutlinedTextFieldDefaults.colors(
focusedBorderColor = Brand500,
unfocusedBorderColor = MaterialTheme.colorScheme.outline
unfocusedBorderColor = MaterialTheme.colorScheme.outline,
focusedContainerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.3f),
unfocusedContainerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.3f)
),
singleLine = true
singleLine = true,
textStyle = LocalTextStyle.current.copy(fontSize = 14.sp)
)
Spacer(modifier = Modifier.height(20.dp))
Spacer(modifier = Modifier.height(24.dp))
// 按钮
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.End
// 确定按钮(全宽)
Button(
onClick = { onConfirm(inputUrl) },
enabled = isValidUrl,
modifier = Modifier
.fillMaxWidth()
.height(48.dp),
colors = ButtonDefaults.buttonColors(
containerColor = Brand500,
disabledContainerColor = MaterialTheme.colorScheme.surfaceVariant
),
shape = RoundedCornerShape(12.dp)
) {
TextButton(onClick = onDismiss) {
Text(
"取消",
color = MaterialTheme.colorScheme.onSurfaceVariant
)
}
Spacer(modifier = Modifier.width(8.dp))
Button(
onClick = { onConfirm(inputUrl) },
enabled = isValidUrl,
colors = ButtonDefaults.buttonColors(
containerColor = Brand500,
disabledContainerColor = MaterialTheme.colorScheme.surfaceVariant
),
shape = RoundedCornerShape(12.dp)
) {
Text("确定", fontWeight = FontWeight.Bold)
}
Text(
"添加",
fontWeight = FontWeight.Bold,
fontSize = 15.sp
)
}
}
}