83 lines
2.3 KiB
Markdown
83 lines
2.3 KiB
Markdown
### **Color Picker**
|
||
|
||
Инструмент для работы с цветами.
|
||
Получение значений RGB/HEX.
|
||
|
||
```kt
|
||
package com.example.colorpicker
|
||
|
||
import android.content.ClipData
|
||
import android.content.ClipboardManager
|
||
import android.content.Context
|
||
import android.os.Bundle
|
||
import android.widget.Toast
|
||
import androidx.activity.ComponentActivity
|
||
import androidx.activity.compose.setContent
|
||
import androidx.compose.foundation.background
|
||
import androidx.compose.foundation.layout.*
|
||
import androidx.compose.material3.*
|
||
import androidx.compose.runtime.*
|
||
import androidx.compose.ui.Modifier
|
||
import androidx.compose.ui.graphics.Color
|
||
import androidx.compose.ui.platform.LocalContext
|
||
import androidx.compose.ui.unit.dp
|
||
|
||
class MainActivity : ComponentActivity() {
|
||
override fun onCreate(savedInstanceState: Bundle?) {
|
||
super.onCreate(savedInstanceState)
|
||
|
||
setContent {
|
||
ColorPickerApp()
|
||
}
|
||
}
|
||
}
|
||
|
||
@Composable
|
||
fun ColorPickerApp() {
|
||
var r by remember { mutableStateOf(128f) }
|
||
var g by remember { mutableStateOf(128f) }
|
||
var b by remember { mutableStateOf(128f) }
|
||
|
||
val context = LocalContext.current
|
||
|
||
val color = Color(r / 255f, g / 255f, b / 255f)
|
||
val hex = "#%02X%02X%02X".format(r.toInt(), g.toInt(), b.toInt())
|
||
|
||
Column(modifier = Modifier.padding(16.dp)) {
|
||
|
||
Text("R: ${r.toInt()}")
|
||
Slider(value = r, onValueChange = { r = it }, valueRange = 0f..255f)
|
||
|
||
Text("G: ${g.toInt()}")
|
||
Slider(value = g, onValueChange = { g = it }, valueRange = 0f..255f)
|
||
|
||
Text("B: ${b.toInt()}")
|
||
Slider(value = b, onValueChange = { b = it }, valueRange = 0f..255f)
|
||
|
||
Spacer(modifier = Modifier.height(16.dp))
|
||
|
||
Box(
|
||
modifier = Modifier
|
||
.fillMaxWidth()
|
||
.height(150.dp)
|
||
.background(color)
|
||
)
|
||
|
||
Spacer(modifier = Modifier.height(16.dp))
|
||
|
||
Text("HEX: $hex")
|
||
|
||
Spacer(modifier = Modifier.height(8.dp))
|
||
|
||
Button(onClick = {
|
||
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||
val clip = ClipData.newPlainText("color", hex)
|
||
clipboard.setPrimaryClip(clip)
|
||
|
||
Toast.makeText(context, "Скопировано: $hex", Toast.LENGTH_SHORT).show()
|
||
}) {
|
||
Text("Copy HEX")
|
||
}
|
||
}
|
||
}
|
||
``` |