From 3f2e464775c0990bdb6ebce8b975bfee0e565a53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A8=D0=B0=D0=BC=D0=B8=D0=BB=D1=8C?= Date: Wed, 25 Mar 2026 11:30:25 +0300 Subject: [PATCH] done --- .../composehomework/ui/task1/Task1Screen.kt | 68 +++++++++++++------ .../composehomework/ui/task2/Task2Screen.kt | 64 ++++++++++++----- gradle.properties | 1 + 3 files changed, 94 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/ru/otus/composehomework/ui/task1/Task1Screen.kt b/app/src/main/java/ru/otus/composehomework/ui/task1/Task1Screen.kt index baea737..7b7d055 100644 --- a/app/src/main/java/ru/otus/composehomework/ui/task1/Task1Screen.kt +++ b/app/src/main/java/ru/otus/composehomework/ui/task1/Task1Screen.kt @@ -1,26 +1,52 @@ package ru.otus.composehomework.ui.task1 import androidx.compose.runtime.Composable - -/** - * Задание 1: Переписывание XML на Compose - * - * Перепишите экран из Task1Fragment (XML layout) на Compose. - * - * Требования: - * 1. Создайте функцию @Composable Task1Screen() - * 2. Используйте компоненты: Text, Button, Image - * 3. Используйте Column для вертикальной компоновки - * 4. Примените модификаторы - * 5. Реализуйте ту же функциональность: при нажатии кнопки изменяйте текст - * - * Подсказки: - * - Используйте remember { mutableStateOf() } для хранения состояния текста - * - Для изображения используйте Image с painterResource или Icon - * - Примените модификатор .padding(16.dp) к Column - * - Используйте Arrangement.spacedBy() для отступов между элементами - */ +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.* +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +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 @Composable fun Task1Screen() { - // TODO: Реализуйте экран на Compose -} + + var welcomeText by remember { + mutableStateOf("Добро пожаловать!") + } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), + + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(32.dp, Alignment.CenterVertically) + ) { + + Text( + text = welcomeText, + fontSize = 24.sp, + fontWeight = FontWeight.Bold + ) + + Image( + painter = painterResource(android.R.drawable.ic_dialog_info), + contentDescription = "Info Icon", + modifier = Modifier.size(120.dp) + ) + + Button( + modifier = Modifier.fillMaxWidth(), + onClick = { + welcomeText = "Кнопка нажата!" + } + ) { + Text("Нажми меня") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/composehomework/ui/task2/Task2Screen.kt b/app/src/main/java/ru/otus/composehomework/ui/task2/Task2Screen.kt index 9b625d4..5d9ae7a 100644 --- a/app/src/main/java/ru/otus/composehomework/ui/task2/Task2Screen.kt +++ b/app/src/main/java/ru/otus/composehomework/ui/task2/Task2Screen.kt @@ -1,24 +1,52 @@ package ru.otus.composehomework.ui.task2 import androidx.compose.runtime.Composable +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.* +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.* +import androidx.compose.runtime.getValue +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +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 + -/** - * Задание 2: Добавление состояния - * - * Развивайте Task1Screen, добавив счетчик кликов. - * - * Требования: - * 1. Скопируйте код из Task1Screen.kt - * 2. Добавьте счетчик используя: var count by remember { mutableStateOf(0) } - * 3. Кнопка должна увеличивать счетчик при каждом нажатии - * 4. Отобразите текущее значение счетчика в Text - * - * Подсказки: - * - Используйте делегат by для удобной работы с состоянием - * - Не забудьте импортировать: androidx.compose.runtime.getValue и setValue - * - Обновите текст кнопки или добавьте отдельный Text для счетчика - */ @Composable fun Task2Screen() { - // TODO: Реализуйте экран с состоянием счетчика -} + + var count by remember { mutableStateOf(0) } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), + + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(32.dp, Alignment.CenterVertically) + ) { + + Text( + text = "Счетчик: $count", + fontSize = 24.sp, + fontWeight = FontWeight.Bold + ) + + Image( + painter = painterResource(android.R.drawable.ic_dialog_info), + contentDescription = "Info Icon", + modifier = Modifier.size(120.dp) + ) + + Button( + modifier = Modifier.fillMaxWidth(), + onClick = { count++ } + ) { + Text("Нажми меня") + } + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 2cbd6d1..39aa0e0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,3 +21,4 @@ kotlin.code.style=official # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true +android.overridePathCheck=true