夏天到了,体验就如小标题的那一个字,于是乎, 就想着画个空调吧,看着就能凉快点。。。

先来看看成品样式吧。

哈哈哈,看着是不是挺凉快。

搞空调

先来捋一下需要实现的功能吧:

1、首先要有开关,用来控制空调的开关状态;

2、然后可以设置冷风和暖风,保证冬天和夏天都能用嘛;

3、最后就是增加和减小温度了;

OK,需求差不多就是这样,接下来就该码代码了。

写标题

先来写下空调的标题吧:

Column(modifier = Modifier.fillMaxSize().statusBarsPadding().navigationBarsPadding(),verticalArrangement = Arrangement.Top,horizontalAlignment = Alignment.CenterHorizontally,
) {Spacer(modifier = Modifier.height(50.dp))
​Text(text = "便携小空调", fontSize = 25.sp)Text(text = "Tip: 为你的夏日带去清凉!",fontSize = 15.sp,modifier = Modifier.padding(bottom = 20.dp))
}

上面代码没什么,只是一个线性布局包裹着两个Text,没啥可说的。

画空调样式

再来画下空调的样式吧:

@Composable
private fun Conditioner() {Card(modifier = Modifier.fillMaxWidth().height(100.dp).padding(horizontal = 20.dp),shape = RoundedCornerShape(topStart = 18f,topEnd = 18f,bottomStart = 36f,bottomEnd = 36f)) {Column {Divider(modifier = Modifier.padding(top = 6.dp),thickness = 0.4.dp,)Row(modifier = Modifier.fillMaxSize().background(color = Color.White).padding(6.dp)) {Image(painter = painterResource(id = R.mipmap.logo),contentDescription = "",)Column(modifier = Modifier.fillMaxSize(),verticalArrangement = Arrangement.Top,horizontalAlignment = Alignment.End,) {Image(painter = painterResource(id = R.drawable.ic_snow),contentDescription = "",modifier = Modifier.size(25.dp))
​Spacer(modifier = Modifier.height(5.dp))
​Text(text = "23°C",fontSize = 20.sp,fontFamily = FontFamily(Font(R.font.lcd, FontWeight.SemiBold)))}
​}}}
}

这块简单说下吧,空调的样式会有圆角,这里使用Card来实现,然后有一个节能能效的一个图片,右边放着冷风还是暖风的标识和温度。

控制空调

空调样式已经画好,只剩控制空调了:

// 空调开关
val airSwitch = rememberSaveable { mutableStateOf(false) }
// 温度
val temperature = rememberSaveable { mutableStateOf(23) }
// 类型,制冷还是制热
val airType = rememberSaveable { mutableStateOf(true) }Row(modifier = Modifier.padding(10.dp)) {Button(onClick = { airType.value = true }, shape = RoundedCornerShape(15.dp)) {Text(text = "冷风")}
​Switch(checked = airSwitch.value, onCheckedChange = {airSwitch.value = !airSwitch.value})
​Button(onClick = { airType.value = false }, shape = RoundedCornerShape(15.dp)) {Text(text = "热风")}
​
}
​
Button(onClick = {if (temperature.value >= 31) {showToast(context, "温度不能再高了!!!")Log.e(TAG, "AirConditioner: 太热了")return@Button}temperature.value = temperature.value + 1
}, shape = RoundedCornerShape(15.dp)) {Text(text = "+")
}
​
Button(onClick = {if (temperature.value <= 16) {showToast(context, "温度不能再低了!!!")Log.e(TAG, "AirConditioner: 太冷了")return@Button}temperature.value = temperature.value - 1
}, shape = RoundedCornerShape(15.dp)) {Text(text = "-")
}

控制空调就需要State来进行控制了,代码也很简单,只是修改了下状态值。

吹空调

整个应用代码很简单,加上各种空行和imports都不到二百行。不到二百行就能写一个小空调,虽然没有实际的温度体验。。。。但是,心静自然凉嘛

用 Compose 实现个空调,为你的夏日带去清凉相关推荐

  1. 云空调,GitHub 的专属冷气——GitHub 热点速览 v.21.20

    作者:HelloGitHub-小鱼干 万物皆可上云,air-conditioner 是上周火爆小鱼干朋友圈和公众号信息流的云空调项目.第一眼的时候,你会觉得和这个云空调还挺别致的,第二眼,si~~感到 ...

  2. 炎炎夏日,小酱送你一个便携小空调

    Tip: 为你的夏日带去[清凉] ​ 最新随着夏天的一步步走近,天气也开始变得非常炎热起来,最近微信朋友圈内开始流行起了便携小空调的梗,出于好奇心小酱率先体验了一下,除了使用过后有种智商被侮辱的感觉, ...

  3. 炎炎夏日打造一个属于自己的“便携小空调”吧

    "便携小空调"曾经火遍朋友圈与空间,今天我们就用web来打造一个属于自己的夏日小空调吧! 下面是效果图: 这是点击"独立遥控器"后的效果: 这是空调打开后的效果 ...

  4. vector 不初始化时什么状态_练车时,教练为什么不给你开空调?

    许多小伙伴会觉得冬天不适合练车!天气越来越冷了,还在坚持学车的你是不是觉得很辛苦?更辛苦的是在练习科目二的时候教练还不给你开空调.教练为什么不给开空调呢?节约成本还是磨练意志?其实这真的是误会,教练不 ...

  5. 海外直播、聊天交友APP的开发及上架GooglePlay体验【Compose版】

    前言 Jetpack Compose在2021年7月底的时候正式发布了Release 1.0版本,在8月中旬的时候正好赶上公司海外项目计划重构,于是主动请缨向领导申请下来了此次开发的机会.由于之前一直 ...

  6. Android 我的第一个Jetpack Compose应用

    目录 1. 背景 2. Jetpack Compose 是什么? 3. 开始前的准备 4. 创建DEMO 4.1 New Project 4.2 项目配置 5. 项目整体变化 5.1 布局部分 5.2 ...

  7. 空调行业如何破局?TCL空调双十一战绩可窥见端倪

    来源 | 螳螂观察 作者|佘凯文 11月7日立冬,正式拉开冬季的帷幕,但除了北方的个别城市,全国绝大部分地区仍能感受到阳光的和煦.相比之下,在受到整体大环境反复施压后,国内某些行业所经历的" ...

  8. 空调市场“三连降”背后,经销商们早已退无可退

    文|智能相对论 作者|佘凯文 1月份,世界气象组织发布通告称"尽管全球平均气温因2020年至2022年的拉尼娜事件而有所下降,但2021年为有记录以来最暖的七个年份之一."国内方面 ...

  9. Java程序实现一个空调的类,基于jsp的空调电费管理系统-JavaEE实现空调电费管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的空调电费管理系统, 该项目可用各类java课程设计大作业中, 空调电费管理系统的系统架构分为前后台两部分, 最终实 ...

最新文章

  1. MyEclipse10整合Axis2插件
  2. POJ2296二分2sat
  3. STM32 CAN 过滤器、滤波屏蔽器配置总结
  4. 专题解读 |「知识图谱」领域近期值得读的 6 篇顶会论文
  5. Spring Boot 集成 MyBatis 与 c3p0
  6. 搜百度 php教程,jquery php 百度搜索框智能提示效果_PHP教程
  7. ArcGIS实验教程——实验十四:空间数据库的建立
  8. 同一服务器部署多个tomcat时的端口号修改详情
  9. 4 QM配置-质量计划配置-编辑缺陷类型的代码组和代码
  10. SpringCloud学习笔记012---CentOs7搭建高速缓存NoSql Redis单机服务_redis_4.0.1_或者redis_6.0.x_可自定义版本
  11. intellij快捷键linux,IntelliJ IDEA的几个常用快捷键
  12. 【Linux】创建逻辑卷管理(LVM)
  13. 使用USB直接方式解决ESXi识别加密狗的问题
  14. c语言大学程序设计题库,c语言程序设计题库
  15. 【Xilinx FPGA】vivado工具下载安装
  16. Guass消元 poj 1830
  17. Android Studio系统状态栏,设置setSmallIcon通知图标无效问题及解决方案
  18. 高德地图图形面积计算
  19. 【璟丰机电】HarmonicDrive哈默纳科行星齿轮减速机结构及其特点
  20. 如何导出存储过程、函数、包和触发器的定义语句?如何导出表和索引的创建语句?...

热门文章

  1. spleeter音乐人声分离、5种架子鼓钢琴声音分离的高质量模型运行超详细教程windows+ubuntu18.04
  2. PhotoshopCC2019(64位)下载+安装教程
  3. android 手势识别,Android实现Gesture手势识别用法分析
  4. 计算机视觉-棋盘格标定
  5. 3 步完全掌握 LoRaWAN Server,让你拥有自己的物联网
  6. ftp服务器连接数修改,ftp服务器连接数设置
  7. 常用的140个Win XP设置技巧
  8. 双方博弈复制动态方程(y-z,z=0.3,z=0.5,z=0.7)与matlab数值仿真——matlab2016a版本
  9. 创新、创业,风险投资介绍。附:2019年热门风险投资人 ( VCPE )
  10. 支付宝面对面支付(境外)