当前位置: 首页 > news >正文

Android笔记【14】结合LaunchedEffect实现计时器功能。

一、问题

cy老师第五次作业

结合LaunchedEffect实现计时器功能。要求:动态计时,每秒修改时间,计时的时间格式为“00:00:00”(小时:分钟:秒)提交源代码的文本和运行截图。

二、结果

三、代码

package com.example.test02import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ExitToApp
import androidx.compose.material.icons.filled.PlayArrow
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.LinearProgressIndicator
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableLongStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import kotlinx.coroutines.delay@Preview
@Composable
fun MainScreen_04(){//函数作用域内val timer = remember{ mutableLongStateOf(0) }var runningState = remember{ mutableStateOf(true) }val timerState = rememberUpdatedState(newValue = timer)val formattedTime = formatTime(timerState.value.value)LaunchedEffect(Unit){while(runningState.value){delay(100)timerState.value.value +=1
//            if(timerState.value.value == 100)
//                runningState.value =false}}Box(modifier = Modifier.fillMaxSize(),contentAlignment = Alignment.Center){Column(modifier = Modifier.fillMaxWidth(),horizontalAlignment = Alignment.CenterHorizontally,verticalArrangement = Arrangement.Center){
//            LinearProgressIndicator(
//                progress = { timer.value.toFloat()/100 },
//                modifier = Modifier.size(800.dp,10.dp),
//                color = Color.Green,
//                trackColor = Color.LightGray,
//            )Text(text = "计时器",fontSize=30.sp,color= MaterialTheme.colorScheme.primary)Text(text = "${timerState.value.value}秒",fontSize = 24.sp)
//            TimerDisplay(timerState.value)Row(modifier = Modifier.fillMaxWidth(),horizontalArrangement = Arrangement.Center){IconButton(modifier =  Modifier.width(100.dp),onClick={runningState.value = truetimer.value = 0}){Row{Icon(imageVector = Icons.Filled.PlayArrow,tint = Color.Green,contentDescription = null)Text("计时")}}IconButton(modifier = Modifier.width(100.dp),onClick={runningState.value  = falsetimer.value +=1}){Row{Icon(imageVector = Icons.AutoMirrored.Filled.ExitToApp,tint = Color.Green,contentDescription = null)Text("停止")}}}}}}@Composable
fun TimerDisplay(timerState: MutableState<Long>) {val formattedTime = formatTime(timerState.value)Text(text = formattedTime,color = Color.Red, // 字体颜色为红色fontSize = 24.sp, // 字体大小)}private fun formatTime(seconds: Long): String {return String.format(" %02d:%02d:%02d",seconds/3600, seconds / 60, seconds % 60)
}
http://www.lryc.cn/news/499317.html

相关文章:

  • kubectl 和 kubeconfig 基本原理
  • LVGL笔录----动画
  • 【LeetCode热题100】BFS解决FloodFill算法
  • 设计模式の软件设计原则
  • Linux centos7 下载MySQL5.7仓库的命令
  • CSS flex布局踩坑小记:flex-basis属性之0px与0%的差异 (赞)
  • 华硕主板不能开启
  • 室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计(整合版)
  • OpenAI 发布 o1 LLM,推出 ChatGPT Pro
  • 【MySQL】存储过程和触发器
  • QT4和 QT5 槽函数连接的区别
  • 使用 PyTorch 和 Horovod 来编写一个简单的分布式训练 demo
  • SQL复杂查询功能介绍及示例
  • shell基础用法
  • C#设计模式--策略模式(Strategy Pattern)
  • 【opencv入门教程】15. 访问像素的十四种方式
  • 【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
  • 根据html的段落长度设置QtextBrowser的显示内容,最少显示一个段落
  • 基于Huffman编码的GPS定位数据无损压缩算法
  • php:完整部署Grid++Report到php项目,并实现模板打印
  • C标签和 EL表达式的在前端界面的应用
  • Linux絮絮叨(四) 系统目录结构
  • Java基于SpringBoot的网上订餐系统,附源码
  • 《Java核心技术I》死锁
  • 【Windows11系统局域网共享文件数据】
  • MCU、ARM体系结构,单片机基础,单片机操作
  • 在办公室环境中用HMD替代传统显示器的优势
  • ssm 多数据源 注解版本
  • selenium常见接口函数使用
  • STM32F103单片机使用STM32CubeMX新建IAR工程步骤