From fb5550b0c67392a5f732abc3005d036efd7d789b Mon Sep 17 00:00:00 2001 From: maxnes3 <112558334+maxnes3@users.noreply.github.com> Date: Sat, 11 Nov 2023 01:55:45 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=81=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/mobileapp/MainActivity.kt | 8 +- .../mobileapp/components/InputContent.kt | 20 ++ .../mobileapp/components/ListContent.kt | 190 ++++++++++++++---- .../mobileapp/components/NavigationBar.kt | 44 ++-- .../com/example/mobileapp/entities/Mail.kt | 8 + .../com/example/mobileapp/entities/Story.kt | 8 + .../com/example/mobileapp/entities/User.kt | 7 + .../mobileapp/screens/Authorization.kt | 34 +++- .../example/mobileapp/screens/EditScreen.kt | 2 +- .../mobileapp/screens/ListDataScreen.kt | 30 ++- .../mobileapp/screens/ListMailScreen.kt | 40 ++++ .../example/mobileapp/screens/MailScreen.kt | 17 -- .../example/mobileapp/screens/MainScreen.kt | 47 ++++- .../example/mobileapp/screens/Registration.kt | 38 +++- .../mobileapp/screens/SettingsScreen.kt | 61 ++++++ .../com/example/mobileapp/ui/theme/Color.kt | 7 +- 16 files changed, 466 insertions(+), 95 deletions(-) create mode 100644 app/src/main/java/com/example/mobileapp/entities/Mail.kt create mode 100644 app/src/main/java/com/example/mobileapp/entities/Story.kt create mode 100644 app/src/main/java/com/example/mobileapp/entities/User.kt create mode 100644 app/src/main/java/com/example/mobileapp/screens/ListMailScreen.kt delete mode 100644 app/src/main/java/com/example/mobileapp/screens/MailScreen.kt create mode 100644 app/src/main/java/com/example/mobileapp/screens/SettingsScreen.kt diff --git a/app/src/main/java/com/example/mobileapp/MainActivity.kt b/app/src/main/java/com/example/mobileapp/MainActivity.kt index 05f6ddf..335d4dc 100644 --- a/app/src/main/java/com/example/mobileapp/MainActivity.kt +++ b/app/src/main/java/com/example/mobileapp/MainActivity.kt @@ -15,9 +15,10 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.example.mobileapp.screens.Authorization import com.example.mobileapp.screens.ListDataScreen -import com.example.mobileapp.screens.MailScreen +import com.example.mobileapp.screens.ListMailScreen import com.example.mobileapp.screens.MainScreen import com.example.mobileapp.screens.Registration +import com.example.mobileapp.screens.SettingsScreen import com.example.mobileapp.ui.theme.MobileAppTheme class MainActivity : ComponentActivity() { @@ -56,7 +57,10 @@ fun AppNavigation(navController: NavHostController){ ListDataScreen(navController = navController) } composable("mail"){ - MailScreen(navController = navController) + ListMailScreen(navController = navController) + } + composable("settings"){ + SettingsScreen(navController = navController) } } } diff --git a/app/src/main/java/com/example/mobileapp/components/InputContent.kt b/app/src/main/java/com/example/mobileapp/components/InputContent.kt index 681febd..3e2f40c 100644 --- a/app/src/main/java/com/example/mobileapp/components/InputContent.kt +++ b/app/src/main/java/com/example/mobileapp/components/InputContent.kt @@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.example.mobileapp.ui.theme.MobileAppTheme @@ -34,6 +35,25 @@ fun PlaceholderInputField(label: String){ .padding(top = 8.dp, start = 16.dp, bottom = 8.dp, end = 16.dp)) } +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun PasswordInputField(label: String){ + var text = remember { mutableStateOf("") } + + OutlinedTextField( + value = text.value, + onValueChange = { + text.value = it + }, + placeholder = { + Text(label) + }, + visualTransformation = PasswordVisualTransformation(), + modifier = Modifier + .fillMaxWidth() + .padding(top = 8.dp, start = 16.dp, bottom = 8.dp, end = 16.dp)) +} + @Preview(showBackground = true) @Composable fun PlaceholderTextFieldPreview() { diff --git a/app/src/main/java/com/example/mobileapp/components/ListContent.kt b/app/src/main/java/com/example/mobileapp/components/ListContent.kt index a09b4ef..956fed1 100644 --- a/app/src/main/java/com/example/mobileapp/components/ListContent.kt +++ b/app/src/main/java/com/example/mobileapp/components/ListContent.kt @@ -2,19 +2,22 @@ package com.example.mobileapp.components import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.Image -import androidx.compose.foundation.background import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeight import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Text @@ -23,15 +26,17 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.mobileapp.R +import com.example.mobileapp.entities.Mail +import com.example.mobileapp.entities.Story +import com.example.mobileapp.ui.theme.ButtonColor1 +import com.example.mobileapp.ui.theme.ButtonColor2 @Composable fun DataListScroll(){ @@ -39,19 +44,22 @@ fun DataListScroll(){ horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier .fillMaxWidth() - .fillMaxHeight(0.8f) ){ - itemsIndexed( - listOf("") - ){ index, item -> - DataListItem() + items( + listOf( + Story(0, "Чужак", "Знаменитая книга стивена кинга", R.drawable.king), + Story(1, "Переулок", "История ужасов от Дзюнзи Ито", R.drawable.dzun), + Story(2, "Чужак", "Знаменитая книга стивена кинга", R.drawable.king), + Story(3, "Переулок", "История ужасов от Дзюнзи Ито", R.drawable.dzun), + ) + ){ item -> + DataListItem(item = item) } } } -@Preview(showBackground = true) @Composable -fun DataListItem(){ +fun DataListItem(item: Story){ val isExpanded = remember { mutableStateOf(false) } @@ -59,13 +67,16 @@ fun DataListItem(){ Card( modifier = Modifier .fillMaxWidth() - .padding(18.dp) + .padding(start = 18.dp, top = 10.dp, end = 18.dp, bottom = 10.dp) .clickable { isExpanded.value = !isExpanded.value }, shape = RoundedCornerShape(15.dp), elevation = CardDefaults.cardElevation( - defaultElevation = 5.dp + defaultElevation = 8.dp + ), + colors = CardDefaults.cardColors( + containerColor = ButtonColor1 ) ) { Column( @@ -74,36 +85,145 @@ fun DataListItem(){ Row( verticalAlignment = Alignment.Top ){ - Image(painter = painterResource(id = R.drawable.home), - contentDescription = "description", + Image(painter = painterResource(id = item.cover), + contentDescription = item.description, contentScale = ContentScale.Crop, modifier = Modifier - .padding(8.dp) - .size(128.dp)) + .width(128.dp) + .height(256.dp)) Column ( modifier = Modifier.padding(8.dp) ){ Text( - text = "Title", + text = item.title, fontSize = 20.sp, - fontWeight = FontWeight.Bold) - Text(text = "description") + fontWeight = FontWeight.Bold + ) + Text(text = item.description) } } - AnimatedVisibility(visible = isExpanded.value) { - Row{ - Button( - onClick = { /* Действие при нажатии кнопки */ }, - modifier = Modifier.padding(top = 8.dp) - ) { - Text("Изменить") - } - Button( - onClick = { /* Действие при нажатии кнопки */ }, - modifier = Modifier.padding(top = 8.dp) - ) { - Text("Удалить") - } + AnimatedVisibility( + visible = isExpanded.value, + modifier = Modifier.fillMaxWidth() + ) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.End + ){ + DataListItemButton(label = "Изменить", ButtonColor2, Color.White) + DataListItemButton(label = "Удалить", Color.Red, Color.White) + } + } + } + } +} + +@Composable +fun DataListItemButton(label: String, backgroundColor: Color, textColor: Color){ + Button( + onClick = { /* Действие при нажатии кнопки */ }, + modifier = Modifier.requiredHeight(64.dp), + shape = RoundedCornerShape(10.dp), + colors = ButtonDefaults.buttonColors( + containerColor = backgroundColor + ) + ) { + Text( + text = label, + color = textColor, + fontSize = 18.sp, + ) + } +} + +@Composable +fun MailListScroll(){ + LazyColumn( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .fillMaxWidth() + ){ + items( + listOf( + Mail(0, 0, "Дзюнзи Ито", "Выложил новый"), + Mail(1, 1, "Стивен Кинг", "Меня отменили в Твиттере"), + Mail(0, 0, "Дзюнзи Ито", "Выложил новый"), + Mail(1, 1, "Стивен Кинг", "Меня отменили в Твиттере"), + Mail(0, 0, "Дзюнзи Ито", "Выложил новый"), + Mail(1, 1, "Стивен Кинг", "Меня отменили в Твиттере"), + Mail(0, 0, "Дзюнзи Ито", "Выложил новый"), + Mail(1, 1, "Стивен Кинг", "Меня отменили в Твиттере"), + Mail(0, 0, "Дзюнзи Ито", "Выложил новый"), + Mail(1, 1, "Стивен Кинг", "Меня отменили в Твиттере") + ) + ){ item -> + MailListItem(item = item) + } + } +} + +@Composable +fun MailListItem(item: Mail){ + val isExpanded = remember { + mutableStateOf(false) + } + + Card( + modifier = Modifier + .fillMaxWidth() + .padding(start = 18.dp, top = 8.dp, end = 18.dp, bottom = 8.dp) + .clickable { + isExpanded.value = !isExpanded.value + }, + shape = RoundedCornerShape(15.dp), + colors = CardDefaults.cardColors( + containerColor = ButtonColor1 + ), + elevation = CardDefaults.cardElevation( + defaultElevation = 8.dp + ) + ) { + Column( + modifier = Modifier.fillMaxSize() + ) { + Row( + verticalAlignment = Alignment.Top + ){ + Image(painter = painterResource(id = R.drawable.post), + contentDescription = "message", + contentScale = ContentScale.Crop, + modifier = Modifier + .size(96.dp) + .padding(8.dp)) + Column( + modifier = Modifier.padding(8.dp) + ){ + Text( + text = item.username, + fontSize = 20.sp, + fontWeight = FontWeight.Bold) + Text(text = item.message) + } + } + AnimatedVisibility( + visible = isExpanded.value, + modifier = Modifier.fillMaxWidth() + ) { + Button( + onClick = { /* Действие при нажатии кнопки */ }, + modifier = Modifier + .requiredHeight(64.dp) + .fillMaxWidth(), + shape = RoundedCornerShape(10.dp), + colors = ButtonDefaults.buttonColors( + containerColor = ButtonColor2 + ) + ) { + Text( + text = "Подробнее", + color = Color.White, + fontSize = 18.sp, + ) } } } diff --git a/app/src/main/java/com/example/mobileapp/components/NavigationBar.kt b/app/src/main/java/com/example/mobileapp/components/NavigationBar.kt index 4d0b8fe..3d75c1f 100644 --- a/app/src/main/java/com/example/mobileapp/components/NavigationBar.kt +++ b/app/src/main/java/com/example/mobileapp/components/NavigationBar.kt @@ -4,44 +4,55 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.requiredHeight import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavHostController +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.navArgument import com.example.mobileapp.R @Composable -fun NavBar(navController: NavHostController) { +fun NavBar(navController: NavHostController, itemColorFilter: Color) { Row( modifier = Modifier - .fillMaxWidth() - .fillMaxHeight(0.2f) - .padding(bottom = 16.dp), + .fillMaxWidth(), horizontalArrangement = Arrangement.SpaceEvenly, verticalAlignment = Alignment.CenterVertically ) { - NavItem(navController = navController, imageId = R.drawable.home, description = "homeButton", destination = "main") - NavItem(navController = navController, imageId = R.drawable.edit, description = "editButton", destination = "listdata") - NavItem(navController = navController, imageId = R.drawable.mail, description = "mailButton", destination = "mail") - NavItem(navController = navController, imageId = R.drawable.settings, description = "settingsButton", destination = "") + NavItem(navController = navController, imageId = R.drawable.home, + description = "homeButton", destination = "main", itemColorFilter = itemColorFilter) + NavItem(navController = navController, imageId = R.drawable.edit, + description = "editButton", destination = "listdata", itemColorFilter = itemColorFilter) + NavItem(navController = navController, imageId = R.drawable.mail, + description = "mailButton", destination = "mail", itemColorFilter = itemColorFilter) + NavItem(navController = navController, imageId = R.drawable.settings, + description = "settingsButton", destination = "settings", itemColorFilter = itemColorFilter) } } @Composable -fun NavItem(navController: NavHostController, imageId: Int, description: String, destination: String){ +fun NavItem(navController: NavHostController, imageId: Int, + description: String, destination: String, itemColorFilter: Color){ Image(painter = painterResource(id = imageId), contentDescription = description, contentScale = ContentScale.Crop, @@ -49,11 +60,14 @@ fun NavItem(navController: NavHostController, imageId: Int, description: String, .size(64.dp) .clickable { navController.navigate(destination) - }) + }, + colorFilter = ColorFilter.tint(itemColorFilter)) } @Composable -fun NavigationButton(navController: NavHostController, destination: String, label: String){ +fun NavigationButton(navController: NavHostController, + destination: String, label: String, + backgroundColor: Color, textColor: Color){ Button( onClick = { navController.navigate(destination) @@ -62,12 +76,16 @@ fun NavigationButton(navController: NavHostController, destination: String, labe .fillMaxWidth() .requiredHeight(64.dp) .padding(top = 8.dp, start = 16.dp, bottom = 8.dp, end = 16.dp), + colors = ButtonDefaults.buttonColors( + containerColor = backgroundColor + ), shape = RoundedCornerShape(10.dp) ) { Text( text = label, fontSize = 20.sp, - fontWeight = FontWeight.Bold + fontWeight = FontWeight.Bold, + color = textColor ) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/entities/Mail.kt b/app/src/main/java/com/example/mobileapp/entities/Mail.kt new file mode 100644 index 0000000..4572350 --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/entities/Mail.kt @@ -0,0 +1,8 @@ +package com.example.mobileapp.entities + +data class Mail( + val id: Int, + val userId: Int, + val username: String, + val message: String +) diff --git a/app/src/main/java/com/example/mobileapp/entities/Story.kt b/app/src/main/java/com/example/mobileapp/entities/Story.kt new file mode 100644 index 0000000..7546b1b --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/entities/Story.kt @@ -0,0 +1,8 @@ +package com.example.mobileapp.entities + +data class Story( + val id: Int, + val title: String, + val description: String, + val cover: Int +) diff --git a/app/src/main/java/com/example/mobileapp/entities/User.kt b/app/src/main/java/com/example/mobileapp/entities/User.kt new file mode 100644 index 0000000..9da8030 --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/entities/User.kt @@ -0,0 +1,7 @@ +package com.example.mobileapp.entities + +data class User( + val email: String, + val login: String, + val password: String +) diff --git a/app/src/main/java/com/example/mobileapp/screens/Authorization.kt b/app/src/main/java/com/example/mobileapp/screens/Authorization.kt index e40f4dd..ef86423 100644 --- a/app/src/main/java/com/example/mobileapp/screens/Authorization.kt +++ b/app/src/main/java/com/example/mobileapp/screens/Authorization.kt @@ -1,27 +1,43 @@ package com.example.mobileapp.screens +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController +import com.example.mobileapp.R import com.example.mobileapp.components.NavigationButton +import com.example.mobileapp.components.PasswordInputField import com.example.mobileapp.components.PlaceholderInputField +import com.example.mobileapp.ui.theme.ButtonColor1 +import com.example.mobileapp.ui.theme.ButtonColor2 @Composable fun Authorization(navController: NavHostController){ Column( - modifier = Modifier.fillMaxSize() + modifier = Modifier.fillMaxSize().padding(bottom = 8.dp) ) { - Column ( - modifier = Modifier.padding(bottom = 8.dp) - ) { - PlaceholderInputField(label = "Логин") - PlaceholderInputField(label = "Пароль") - NavigationButton(navController = navController, destination = "main", label = "Вход") - NavigationButton(navController = navController, destination = "registration", label = "Регистрация") - } + Image( + painter = painterResource(id = R.drawable.login), + contentDescription = "login", + contentScale = ContentScale.Crop, + modifier = Modifier + .size(512.dp) + .padding(8.dp) + .align(Alignment.CenterHorizontally)) + PlaceholderInputField(label = "Логин") + PasswordInputField(label = "Пароль") + NavigationButton(navController = navController, destination = "main", label = "Вход", + backgroundColor = ButtonColor2, textColor = Color.White) + NavigationButton(navController = navController, destination = "registration", label = "Регистрация", + backgroundColor = ButtonColor1, textColor = Color.Black) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/screens/EditScreen.kt b/app/src/main/java/com/example/mobileapp/screens/EditScreen.kt index 9d5dbc5..5069693 100644 --- a/app/src/main/java/com/example/mobileapp/screens/EditScreen.kt +++ b/app/src/main/java/com/example/mobileapp/screens/EditScreen.kt @@ -12,6 +12,6 @@ fun EditScreen(navController: NavHostController) { Column( modifier = Modifier.fillMaxSize() ) { - NavBar(navController = navController) + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/screens/ListDataScreen.kt b/app/src/main/java/com/example/mobileapp/screens/ListDataScreen.kt index 53d649f..e82bf5a 100644 --- a/app/src/main/java/com/example/mobileapp/screens/ListDataScreen.kt +++ b/app/src/main/java/com/example/mobileapp/screens/ListDataScreen.kt @@ -1,19 +1,41 @@ package com.example.mobileapp.screens +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.navigation.NavHostController -import com.example.mobileapp.components.DataListItem +import com.example.mobileapp.components.DataListScroll import com.example.mobileapp.components.NavBar +import com.example.mobileapp.ui.theme.BackgroundItem1 +import com.example.mobileapp.ui.theme.ButtonColor1 @Composable fun ListDataScreen(navController: NavHostController){ Column( - modifier = Modifier.fillMaxSize() + modifier = Modifier + .fillMaxSize() + .background(BackgroundItem1) ) { - DataListItem() - NavBar(navController = navController) + Box( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.9f) + ){ + DataListScroll() + } + Column( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center + ) { + NavBar(navController = navController, itemColorFilter = Color.White) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/screens/ListMailScreen.kt b/app/src/main/java/com/example/mobileapp/screens/ListMailScreen.kt new file mode 100644 index 0000000..c2da531 --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/screens/ListMailScreen.kt @@ -0,0 +1,40 @@ +package com.example.mobileapp.screens + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.navigation.NavHostController +import com.example.mobileapp.components.MailListScroll +import com.example.mobileapp.components.NavBar +import com.example.mobileapp.ui.theme.BackgroundItem1 + +@Composable +fun ListMailScreen(navController: NavHostController){ + Column( + modifier = Modifier + .fillMaxSize() + .background(BackgroundItem1) + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.9f) + ){ + MailListScroll() + } + Column( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center + ) { + NavBar(navController = navController, itemColorFilter = Color.White) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/screens/MailScreen.kt b/app/src/main/java/com/example/mobileapp/screens/MailScreen.kt deleted file mode 100644 index 012de69..0000000 --- a/app/src/main/java/com/example/mobileapp/screens/MailScreen.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.mobileapp.screens - -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.navigation.NavHostController -import com.example.mobileapp.components.NavBar - -@Composable -fun MailScreen(navController: NavHostController){ - Column( - modifier = Modifier.fillMaxSize() - ) { - NavBar(navController = navController) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/screens/MainScreen.kt b/app/src/main/java/com/example/mobileapp/screens/MainScreen.kt index ebaa118..8b041c1 100644 --- a/app/src/main/java/com/example/mobileapp/screens/MainScreen.kt +++ b/app/src/main/java/com/example/mobileapp/screens/MainScreen.kt @@ -1,17 +1,60 @@ package com.example.mobileapp.screens +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import androidx.navigation.NavHostController +import com.example.mobileapp.R import com.example.mobileapp.components.NavBar @Composable fun MainScreen(navController: NavHostController) { Column( - modifier = Modifier.fillMaxSize() + modifier = Modifier + .fillMaxSize() ) { - NavBar(navController = navController) + Column( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.9f), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Image( + painter = painterResource(id = R.drawable.main), + contentDescription = "main", + contentScale = ContentScale.Crop, + modifier = Modifier + .size(512.dp) + .padding(8.dp) + ) + Text( + text = "Здесь будут посты авторов", + fontSize = 20.sp, + fontWeight = FontWeight.Bold + ) + } + Column( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center + ) { + NavBar(navController = navController, itemColorFilter = Color.Black) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/screens/Registration.kt b/app/src/main/java/com/example/mobileapp/screens/Registration.kt index a27f1bd..21e1504 100644 --- a/app/src/main/java/com/example/mobileapp/screens/Registration.kt +++ b/app/src/main/java/com/example/mobileapp/screens/Registration.kt @@ -1,29 +1,45 @@ package com.example.mobileapp.screens +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController +import com.example.mobileapp.R import com.example.mobileapp.components.NavigationButton +import com.example.mobileapp.components.PasswordInputField import com.example.mobileapp.components.PlaceholderInputField +import com.example.mobileapp.ui.theme.ButtonColor1 +import com.example.mobileapp.ui.theme.ButtonColor2 @Composable fun Registration(navController: NavHostController){ Column( - modifier = Modifier.fillMaxSize() + modifier = Modifier.fillMaxSize().padding(bottom = 8.dp) ) { - Column ( - modifier = Modifier.padding(bottom = 8.dp) - ) { - PlaceholderInputField(label = "Логин") - PlaceholderInputField(label = "Email") - PlaceholderInputField(label = "Пароль") - PlaceholderInputField(label = "Пароль ещё раз") - NavigationButton(navController = navController, destination = "main", label = "Зарегистрироваться") - NavigationButton(navController = navController, destination = "authorization", label = "Назад") - } + Image( + painter = painterResource(id = R.drawable.registration), + contentDescription = "registration", + contentScale = ContentScale.Crop, + modifier = Modifier + .size(384.dp) + .padding(8.dp) + .align(Alignment.CenterHorizontally)) + PlaceholderInputField(label = "Логин") + PlaceholderInputField(label = "Email") + PasswordInputField(label = "Пароль") + PasswordInputField(label = "Пароль ещё раз") + NavigationButton(navController = navController, destination = "main", + label = "Зарегистрироваться", backgroundColor = ButtonColor2, textColor = Color.White) + NavigationButton(navController = navController, destination = "authorization", + label = "Назад", backgroundColor = ButtonColor1, textColor = Color.Black) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/screens/SettingsScreen.kt b/app/src/main/java/com/example/mobileapp/screens/SettingsScreen.kt new file mode 100644 index 0000000..57c27f8 --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/screens/SettingsScreen.kt @@ -0,0 +1,61 @@ +package com.example.mobileapp.screens + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController +import com.example.mobileapp.R +import com.example.mobileapp.components.NavBar + +@Composable +fun SettingsScreen(navController: NavHostController){ + Column( + modifier = Modifier + .fillMaxSize() + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.9f), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ){ + Image( + painter = painterResource(id = R.drawable.settingsplaceholder), + contentDescription = "settings", + contentScale = ContentScale.Crop, + modifier = Modifier + .size(512.dp) + .padding(8.dp)) + Text( + text = "Здесь будут настройки приложения", + fontSize = 20.sp, + fontWeight = FontWeight.Bold + ) + } + Column( + modifier = Modifier + .fillMaxSize(), + verticalArrangement = Arrangement.Center + ) { + NavBar(navController = navController, itemColorFilter = Color.Black) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/ui/theme/Color.kt b/app/src/main/java/com/example/mobileapp/ui/theme/Color.kt index c414575..6806282 100644 --- a/app/src/main/java/com/example/mobileapp/ui/theme/Color.kt +++ b/app/src/main/java/com/example/mobileapp/ui/theme/Color.kt @@ -8,4 +8,9 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file +val Pink40 = Color(0xFF7D5260) + +val BackgroundItem1 = Color(0xff3a425d) +val BackgroundItem2 = Color(0xff7b5a94) +val ButtonColor1 = Color(0xffb8d0e0) +val ButtonColor2 = Color(0xff3193cd) \ No newline at end of file