update BottomNavigationBar styling, animations, and icons
This commit is contained in:
@@ -81,6 +81,7 @@ import androidx.compose.material.icons.filled.MenuBook
|
|||||||
import androidx.compose.material.icons.filled.Merge
|
import androidx.compose.material.icons.filled.Merge
|
||||||
import androidx.compose.material.icons.filled.ModelTraining
|
import androidx.compose.material.icons.filled.ModelTraining
|
||||||
import androidx.compose.material.icons.filled.MonitorHeart
|
import androidx.compose.material.icons.filled.MonitorHeart
|
||||||
|
import androidx.compose.material.icons.filled.MoreHoriz
|
||||||
import androidx.compose.material.icons.filled.MoreVert
|
import androidx.compose.material.icons.filled.MoreVert
|
||||||
import androidx.compose.material.icons.filled.NoteAdd
|
import androidx.compose.material.icons.filled.NoteAdd
|
||||||
import androidx.compose.material.icons.filled.PlayArrow
|
import androidx.compose.material.icons.filled.PlayArrow
|
||||||
@@ -202,6 +203,7 @@ object AppIcons {
|
|||||||
val Merge = Icons.Filled.Merge
|
val Merge = Icons.Filled.Merge
|
||||||
val ModelTraining = Icons.Filled.ModelTraining
|
val ModelTraining = Icons.Filled.ModelTraining
|
||||||
val More = Default.MoreVert
|
val More = Default.MoreVert
|
||||||
|
val MoreHorizontal = Icons.Filled.MoreHoriz
|
||||||
val MoreVert = Default.MoreVert
|
val MoreVert = Default.MoreVert
|
||||||
val MoveTo = Icons.AutoMirrored.Filled.DriveFileMove
|
val MoveTo = Icons.AutoMirrored.Filled.DriveFileMove
|
||||||
val Paste = Default.ContentPaste
|
val Paste = Default.ContentPaste
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ sealed class Screen(
|
|||||||
object Library : Screen("library", R.string.label_library, AppIcons.VocabularyFilled, AppIcons.VocabularyOutlined)
|
object Library : Screen("library", R.string.label_library, AppIcons.VocabularyFilled, AppIcons.VocabularyOutlined)
|
||||||
object Vocabulary : Screen("vocabulary", R.string.label_legacy_vocabulary, AppIcons.VocabularyFilled, AppIcons.VocabularyOutlined)
|
object Vocabulary : Screen("vocabulary", R.string.label_legacy_vocabulary, AppIcons.VocabularyFilled, AppIcons.VocabularyOutlined)
|
||||||
object Settings : Screen("settings", R.string.title_settings, AppIcons.SettingsFilled, AppIcons.SettingsOutlined)
|
object Settings : Screen("settings", R.string.title_settings, AppIcons.SettingsFilled, AppIcons.SettingsOutlined)
|
||||||
object More : Screen("more", R.string.label_more, AppIcons.MoreVert, AppIcons.MoreVert)
|
object More : Screen("more", R.string.label_more, AppIcons.MoreVert, AppIcons.MoreHorizontal)
|
||||||
object Dictionary : Screen("dictionary", R.string.label_dictionary, AppIcons.DictionaryFilled, AppIcons.DictionaryOutlined)
|
object Dictionary : Screen("dictionary", R.string.label_dictionary, AppIcons.DictionaryFilled, AppIcons.DictionaryOutlined)
|
||||||
object Exercises : Screen("exercises", R.string.label_exercises, AppIcons.DictionaryFilled, AppIcons.DictionaryOutlined)
|
object Exercises : Screen("exercises", R.string.label_exercises, AppIcons.DictionaryFilled, AppIcons.DictionaryOutlined)
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ sealed class Screen(
|
|||||||
fun getMoreMenuItems(showExperimental: Boolean = false): List<Screen> {
|
fun getMoreMenuItems(showExperimental: Boolean = false): List<Screen> {
|
||||||
val items = mutableListOf<Screen>()
|
val items = mutableListOf<Screen>()
|
||||||
items.add(Translation)
|
items.add(Translation)
|
||||||
items.add(Vocabulary) // Legacy vocabulary moved to More
|
items.add(Vocabulary)
|
||||||
items.add(Dictionary)
|
items.add(Dictionary)
|
||||||
items.add(Settings)
|
items.add(Settings)
|
||||||
if (showExperimental) {
|
if (showExperimental) {
|
||||||
@@ -128,20 +128,20 @@ fun BottomNavigationBar(
|
|||||||
|
|
||||||
// Configuration for the play button
|
// Configuration for the play button
|
||||||
val playButtonSize = 56.dp
|
val playButtonSize = 56.dp
|
||||||
val glowPadding = 32.dp // Total extra space for the glow (16dp on each side)
|
val glowPadding = 12.dp // Total extra space for the glow (16dp on each side)
|
||||||
|
|
||||||
// This dictates how far up the button shifts.
|
// This dictates how far up the button shifts.
|
||||||
// Setting it to around half the button size centers it on the top border.
|
// Setting it to around half the button size centers it on the top border.
|
||||||
val upwardOffset = 28.dp
|
val upwardOffset = 16.dp
|
||||||
|
|
||||||
AnimatedVisibility(
|
AnimatedVisibility(
|
||||||
visible = isVisible,
|
visible = isVisible,
|
||||||
enter = slideInVertically(
|
enter = slideInVertically(
|
||||||
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
|
animationSpec = spring(stiffness = Spring.StiffnessHigh),
|
||||||
initialOffsetY = { it }
|
initialOffsetY = { it }
|
||||||
),
|
),
|
||||||
exit = slideOutVertically(
|
exit = slideOutVertically(
|
||||||
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
|
animationSpec = spring(stiffness = Spring.StiffnessHigh),
|
||||||
targetOffsetY = { it }
|
targetOffsetY = { it }
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
@@ -260,7 +260,7 @@ fun BottomNavigationBar(
|
|||||||
.background(
|
.background(
|
||||||
brush = Brush.radialGradient(
|
brush = Brush.radialGradient(
|
||||||
colors = listOf(
|
colors = listOf(
|
||||||
Color(0xFF3B82F6).copy(alpha = 0.5f),
|
MaterialTheme.colorScheme.primary.copy(alpha = 0.5f),
|
||||||
Color.Transparent
|
Color.Transparent
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@@ -273,7 +273,7 @@ fun BottomNavigationBar(
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(playButtonSize)
|
.size(playButtonSize)
|
||||||
.clip(CircleShape)
|
.clip(CircleShape)
|
||||||
.background(Color(0xFF3B82F6))
|
.background(MaterialTheme.colorScheme.primaryContainer)
|
||||||
.clickable {
|
.clickable {
|
||||||
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
|
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
|
||||||
onPlayClicked()
|
onPlayClicked()
|
||||||
|
|||||||
Reference in New Issue
Block a user