Выбор цвета изображения в Android с использованием Jetpack Compose
Многие приложения для Android требуют функциональности, в которой пользователь должен иметь возможность выбирать цвет из изображения, присутствующего в приложении для Android. В этой статье мы рассмотрим, как реализовать Image Color Picker в Android-приложениях с помощью Jetpack Compose . Мы сможем выбрать цвета из изображения в приложении для Android. Пример видео приведен ниже, чтобы получить представление о том, что мы собираемся делать в этой статье.
Пошаговая реализация
Шаг 1. Создайте новый проект в Android Studio.
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». При выборе шаблона выберите «Пустая активность создания» . Если вы не найдете этот шаблон, попробуйте обновить Android Studio до последней версии. Мы продемонстрировали приложение на Kotlin, поэтому убедитесь, что вы выбрали Kotlin в качестве основного языка при создании нового проекта.
Шаг 2: Добавление зависимости в файл build.gradle
Перейдите к app> build.gradle и добавьте приведенную ниже зависимость в раздел зависимостей.
implementation "com.github.skydoves:colorpicker-compose:1.0.0"
Теперь синхронизируйте свой проект, чтобы установить зависимость в приложении Android.
Шаг 3: Добавление нового цвета в файл Color.kt
Перейдите к приложению > java > имени пакета вашего приложения > ui.theme > файлу Color.kt и добавьте в него приведенный ниже код.
Kotlin
package com.example.newcanaryproject.ui.theme import androidx.compose.ui.graphics.Color val Purple200 = Color(0xFF0F9D58)val Purple500 = Color(0xFF0F9D58)val Purple700 = Color(0xFF3700B3)val Teal200 = Color(0xFF03DAC5) // on below line we are adding different colors.val greenColor = Color(0xFF0F9D58) |
Шаг 4: Работа с файлом MainActivity.kt
Перейдите к файлу MainActivity.kt и обратитесь к следующему коду. Ниже приведен код файла MainActivity.kt . Комментарии добавляются внутри кода, чтобы понять код более подробно.
Kotlin
package com.example.newcanaryproject import android.app.Activityimport android.content.Contextimport android.net.Uriimport android.os.Bundleimport android.util.DisplayMetricsimport android.util.Logimport android.view.WindowManagerimport android.widget.Chronometerimport android.widget.MediaControllerimport android.widget.Toastimport android.widget.VideoViewimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.layout.*import androidx.compose.foundation.shape.RoundedCornerShapeimport androidx.compose.material.*import androidx.compose.material.icons.Iconsimport androidx.compose.material.icons.filled.Addimport androidx.compose.runtime.*import androidx.compose.ui.Alignmentimport androidx.compose.ui.Modifierimport androidx.compose.ui.draw.clipimport androidx.compose.ui.graphics.*import androidx.compose.ui.platform.LocalContextimport androidx.compose.ui.res.imageResourceimport androidx.compose.ui.text.TextStyleimport androidx.compose.ui.text.font.FontFamilyimport androidx.compose.ui.text.font.FontWeightimport androidx.compose.ui.text.input.TextFieldValueimport androidx.compose.ui.text.style.TextAlignimport androidx.compose.ui.unit.*import com.example.newcanaryproject.ui.theme.*import com.github.skydoves.colorpicker.compose.*import dev.shreyaspatil.easyupipayment.EasyUpiPaymentimport dev.shreyaspatil.easyupipayment.listener.PaymentStatusListenerimport dev.shreyaspatil.easyupipayment.model.PaymentAppimport dev.shreyaspatil.easyupipayment.model.TransactionDetailsimport java.text.SimpleDateFormatimport java.util.* class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { NewCanaryProjectTheme { // on below line we are specifying background color for our application Surface( // on below line we are specifying modifier and color for our app modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background ) { // on the below line we are specifying the theme as the scaffold. Scaffold( // in scaffold we are specifying the top bar. topBar = { // inside top bar we are specifying background color. TopAppBar(backgroundColor = greenColor, // along with that we are specifying title for our top bar. title = { // in the top bar we are specifying tile as a text Text( // on below line we are specifying // text to display in top app bar. text = "GFG", // on below line we are specifying // modifier to fill max width. modifier = Modifier.fillMaxWidth(), // on below line we are specifying // text alignment. textAlign = TextAlign.Center, // on below line we are specifying // color for our text. color = Color.White ) }) }) { // on below line we are calling // image color picker function imageColorPicker() } } } } }} @Composablefun imageColorPicker() { // on below line we are creating a variable // for controller and initializing it. val controller = rememberColorPickerController() // on below line we are creating a column // and adding a modifier to it. Column(modifier = Modifier.fillMaxSize()) { // on below line we are adding a spacer to it. Spacer(modifier = Modifier.height(30.dp)) // on below line we are creating an image color picker. ImageColorPicker( // on below line we are adding a modifier to it. modifier = Modifier .fillMaxWidth() // on below line we are adding height. .height(300.dp) // on below line we are adding a passing. .padding(20.dp), // on below line we are adding our image to pick color from paletteImageBitmap = ImageBitmap.imageResource(R.drawable.img1), // on below line we are // adding a controller to it. controller = controller, // on below line we are adding a palette scale as fit. paletteContentScale = PaletteContentScale.FIT, // on below line we are checking for color change. onColorChanged = { colorEnvelope: ColorEnvelope -> } ) // on below line we are adding a spacer. Spacer(modifier = Modifier.height(12.dp)) // on below line we are adding a row. Row( // on below line we // are adding a modifier to it modifier = Modifier .fillMaxWidth() // on below line we are // adding a padding to it. .padding(horizontal = 30.dp), // on below line we are adding a // horizontal and vertical alignment. horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically ) { // on below line we are adding a alpha tile. AlphaTile( // on below line // we are adding a modifier modifier = Modifier .fillMaxWidth() // on below line // we are adding a height .height(60.dp) // on below line we are // adding a clip for round edges. .clip(RoundedCornerShape(6.dp)), // on below line we are adding a controller. controller = controller ) } // on below line we are // adding an alpha slider AlphaSlider( // on below line we are // adding a modifier. modifier = Modifier .fillMaxWidth() .padding(10.dp) .height(35.dp), // on below line we are // adding a controller controller = controller, ) // on below line we are // creating a brightness slider. BrightnessSlider( // on below line we are // adding modifier to // add padding, height modifier = Modifier .fillMaxWidth() .padding(10.dp) .height(35.dp), // on below line we are // adding a controller. controller = controller, ) }} |
Теперь запустите ваше приложение и посмотрите его результат.
Выход: