Загрузка данных
package com.example.telegramdrawer
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.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
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
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
App()
}
}
}
@Composable
fun App() {
var isDarkTheme by remember { mutableStateOf(false) }
MaterialTheme(
colors = if (isDarkTheme) darkColors() else lightColors()
) {
TelegramDrawer(isDarkTheme) {
isDarkTheme = !isDarkTheme
}
}
}
@Composable
fun TelegramDrawer(
isDarkTheme: Boolean,
onThemeToggle: () -> Unit
) {
val scaffoldState = rememberScaffoldState()
val scope = rememberCoroutineScope()
var selectedItem by remember { mutableStateOf("Главная") }
var backgroundColor by remember { mutableStateOf(Color.White) }
val context = LocalContext.current
Scaffold(
scaffoldState = scaffoldState,
topBar = {
TopAppBar(
title = { Text("Telegram") },
navigationIcon = {
IconButton(onClick = {
scope.launch {
scaffoldState.drawerState.open()
}
}) {
Icon(Icons.Default.Menu, contentDescription = "Menu")
}
},
actions = {
IconButton(onClick = onThemeToggle) {
Icon(
imageVector = if (isDarkTheme)
Icons.Default.WbSunny
else
Icons.Default.DarkMode,
contentDescription = "Theme"
)
}
}
)
},
drawerContent = {
var expanded by remember { mutableStateOf(true) }
Column(modifier = Modifier.fillMaxWidth()) {
// Профиль
Column(
modifier = Modifier
.fillMaxWidth()
.clickable {
selectedItem = "Профиль пользователя"
}
.padding(16.dp)
) {
Text("Екатерина")
Text("+7 (914) 599-83-69")
IconButton(onClick = { expanded = !expanded }) {
Icon(
imageVector = if (expanded)
Icons.Default.KeyboardArrowUp
else
Icons.Default.KeyboardArrowDown,
contentDescription = "Expand"
)
}
}
if (expanded) {
Text("Аккаунт 1", modifier = Modifier.padding(16.dp))
Text("Аккаунт 2", modifier = Modifier.padding(16.dp))
Text("Добавить аккаунт", modifier = Modifier.padding(16.dp))
}
Divider()
DrawerMenuItem("Мой профиль", Icons.Default.Person) {
selectedItem = "Мой профиль"
backgroundColor = Color(0xFFE3F2FD)
Toast.makeText(context, "Мой профиль", Toast.LENGTH_SHORT).show()
scope.launch { scaffoldState.drawerState.close() }
}
DrawerMenuItem("Настройки", Icons.Default.Settings) {
selectedItem = "Настройки"
backgroundColor = Color(0xFFFFF3E0)
Toast.makeText(context, "Настройки", Toast.LENGTH_LONG).show()
scope.launch { scaffoldState.drawerState.close() }
}
DrawerMenuItem("Возможности Telegram", Icons.Default.Info) {
selectedItem = "Возможности Telegram"
backgroundColor = Color(0xFFE8F5E9)
scope.launch { scaffoldState.drawerState.close() }
}
}
}
) { padding ->
Box(
modifier = Modifier
.fillMaxSize()
.padding(padding)
.background(backgroundColor),
contentAlignment = androidx.compose.ui.Alignment.Center
) {
Text(text = selectedItem, style = MaterialTheme.typography.h5)
}
}
}
@Composable
fun DrawerMenuItem(
text: String,
icon: androidx.compose.ui.graphics.vector.ImageVector,
onClick: () -> Unit
) {
Row(
modifier = Modifier
.fillMaxWidth()
.clickable { onClick() }
.padding(16.dp)
) {
Icon(icon, contentDescription = text)
Spacer(modifier = Modifier.width(16.dp))
Text(text)
}
}