package
com.example.newcanaryproject
import
android.Manifest.permission.READ_EXTERNAL_STORAGE
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.content.BroadcastReceiver
import
android.content.Context
import
android.content.Intent
import
android.content.IntentFilter
import
android.content.pm.PackageManager
import
android.content.res.ColorStateList
import
android.database.Cursor
import
android.os.Bundle
import
android.os.Environment
import
android.provider.MediaStore
import
android.util.Log
import
android.widget.TextClock
import
android.widget.Toast
import
android.widget.ToggleButton
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.animation.animateColor
import
androidx.compose.animation.core.*
import
androidx.compose.foundation.ExperimentalFoundationApi
import
androidx.compose.foundation.Image
import
androidx.compose.foundation.layout.*
import
androidx.compose.foundation.lazy.GridCells
import
androidx.compose.foundation.lazy.LazyVerticalGrid
import
androidx.compose.material.*
import
androidx.compose.material.icons.Icons
import
androidx.compose.material.icons.filled.Favorite
import
androidx.compose.material.icons.filled.FavoriteBorder
import
androidx.compose.runtime.*
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.res.colorResource
import
androidx.compose.ui.res.painterResource
import
androidx.compose.ui.semantics.Role.Companion.Image
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
androidx.compose.ui.viewinterop.AndroidView
import
androidx.core.app.ActivityCompat
import
androidx.core.app.ActivityCompat.requestPermissions
import
androidx.core.content.ContextCompat
import
androidx.localbroadcastmanager.content.LocalBroadcastManager
import
coil.compose.rememberImagePainter
import
com.example.newcanaryproject.MainActivity2
import
com.example.newcanaryproject.R
import
com.example.newcanaryproject.ui.theme.*
import
java.io.File
import
java.text.SimpleDateFormat
import
java.util.*
class
MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
NewCanaryProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"GFG"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
displayToggleButton()
}
}
}
}
}
}
@SuppressLint
(
"UnusedTransitionTargetStateParameter"
)
@Composable
fun displayToggleButton() {
val checkedState = remember { mutableStateOf(
false
) }
Column(
Modifier
.fillMaxSize()
.fillMaxHeight()
.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text(
text =
"Toggle Button in Android"
,
modifier = Modifier
.fillMaxWidth()
.padding(
20
.dp),
textAlign = TextAlign.Center,
color = Color.Black,
fontWeight = FontWeight.Bold,
fontSize =
25
.sp,
)
Spacer(modifier = Modifier.height(
20
.dp))
Text(
text =
if
(checkedState.value)
"Like"
else
"Dis Like"
,
modifier = Modifier
.fillMaxWidth()
.padding(
20
.dp),
textAlign = TextAlign.Center,
color = Color.Black,
fontWeight = FontWeight.Bold,
fontSize =
25
.sp,
)
Spacer(modifier = Modifier.height(
20
.dp))
IconToggleButton(
checked = checkedState.value,
onCheckedChange = {
checkedState.value = !checkedState.value
},
modifier = Modifier.padding(
10
.dp)
) {
val transition = updateTransition(checkedState.value)
val tint by transition.animateColor(label =
"iconColor"
) { isChecked ->
if
(isChecked) Color.Green
else
Color.Black
}
val size by transition.animateDp(
transitionSpec = {
if
(
false
isTransitioningTo
true
) {
keyframes {
durationMillis =
250
30
.dp at
0
with LinearOutSlowInEasing
35
.dp at
15
with FastOutLinearInEasing
40
.dp at
75
35
.dp at
150
}
}
else
{
spring(stiffness = Spring.StiffnessVeryLow)
}
},
label =
"Size"
) {
30
.dp }
Icon(
imageVector =
if
(checkedState.value) Icons.Filled.Favorite
else
Icons.Filled.FavoriteBorder,
contentDescription =
"Icon"
,
tint = tint,
modifier = Modifier.size(size)
)
}
}
}