Jetpack:027-Jetpack中的Switch

news2024/10/6 6:50:07

文章目录

  • 1. 概念介绍
  • 2. 使用方法
  • 3. 代码与效果
    • 3.1 示例代码
    • 3.2 运行效果
  • 4. 内容总结

我们在上一章回中介绍了Jetpack中Slider相关的内容,本章回中 主要介绍Switch。闲话休提,让我们一起Talk Android Jetpack吧!

1. 概念介绍

我们在本章回中介绍的Switch是一种可以滑动的开关,它有两个状态值,通过滑动来切换不同的状态值。它主要是用来做为开关,打开和关闭某种状态。常见的使用场景:比如手机中设置静音和非静音状态。它的用法和Slider类似,因此我们在上一章回的基础上顺势介绍它。

2. 使用方法

在compose中使用可组合函数Switch来表示开关,该函数的常用的参数如下:

  • checked参数:主要用来控制Switch打开/关闭状态;
  • onCheckedChange参数:打开或者关闭时回调此函数,函数中的参数为开关的值;
  • thumbContent参数:主要用来控制滑动的图标,可以不设置,使用默认的圆形图标;
  • colors参数:主要用来设置边框、图标、轨迹(track)打开和关闭时的颜色;

上面这些参数中我们重点介绍checked参数,它需要使用一个状态值,然后在onCheckedChange参数中修改状态值,这样才能控制开关的状态。这么说可能比较抽象,我们将在后面小节中通过示例代码中演示它的使用方法。

Switch函数没有提供修改自身大小的参数,我尝试通过modifier参数修改它的大小,但是只能修改Switch占用的空间大小,无法修改图标,轨迹的大小,分析源代码后发现自身大小是一个固定值,目前我们无法修改它的大小,我感觉这种设计十分不友好,期待后续版本中能够提供相关的参数来修改Switch的大小。

3. 代码与效果

3.1 示例代码

var checked1 by remember { mutableStateOf(false) }

Switch(checked = checked1,
        onCheckedChange = { checked1 = it },
        colors = SwitchDefaults.colors(
            //switch最外层圆圈的颜色
            checkedBorderColor = Color.Red,
            //滑动轨道的颜色
            checkedTrackColor = Color.Yellow,
            //图标里层对号的颜色
            checkedIconColor = Color.Blue,
            //图标外层圆圈的颜色
            checkedThumbColor = Color.White,
            //这4个类型的颜色还对应unCheckedXXX,不设置时默认为灰色
        ),
        //如果选中后使用check图标:显示一个对号,否则显示默认图标:这个小圆点
        thumbContent = if(checked1){  {
            Icon(
                modifier = Modifier.size(SwitchDefaults.IconSize),
                imageVector = Icons.Default.Check,
                contentDescription = null )
        }
        }else{
            null
        }
)

我们在上面的示例代码中添加了详细的注释,这样有助于大家理解代码,代码中使用了状态值checked1来控制Switch的开关状态,然后在onCheckedChange参数中修改该状态值。

此外,我们在代码中还修改了Switch的风格,比如滑动块的图标,以及颜色。大家可以在后面的小节中从运行效果图中看到这些内容。

3.2 运行效果

编译并且运行上面的程序,可以得到下面的运行效果图。图中展示了处于不同状态下的Switch

在这里插入图片描述

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • Switch提供了打开和关闭两种状态;
  • Switch主要用来控制某种状态的打开或者关闭;
  • Switch提供了相关的参数来控制自己的状态和颜色;
  • Switch没有提供修改自身大小的方法,目前无法修改它的大小;

看官们,与Jetpack中Switch相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1164800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Collction的List方法,list特有方法,遍历方式,迭代器选择

[to] list特有方法 //插入指定元素//list.add(1,"ddd");//System.out.println(list);//[aaa, ddd, bbb, ccc]//这个表示在一索引的位置插入ddd//他会把原来一索引位置的元素往后移动一位在添加//删除指定元素//String remove list.remove(1);//System.out.println(…

交换机基本配置

交换机基本配置 思科设备操作系统的3种模式 1.用户模式:标识符:> 默认处于的模式。 2.特权模式:标识符:# 在此模式中常常进行一些配置保存或配置查看。 3.全局模式:标识符:(config)# 在此模式中常…

Python自动化测试面试题总结

python有哪些数据类型怎么将两个字典合并python如何将json写到文件里?在except语句中return后还会不会执行finally中的代码?什么是可变、不可变类型?python函数调用时参数的传递是值传递还是引用传递?python深浅拷贝的区别python为…

assert断言与const修饰指针的妙用(模拟实现strcpy函数)

assert断言 目录 assert断言的妙用: 头文件: 使用方法: const修饰指针的妙用 主要用法 const在*左边 const在*右边 断言和const修饰指针的应用 模拟实现C语言strcpy函数 1、若字符串str1,str2有空指针怎么办? 2.str2改变…

【ML】线性回归

线性回归 以房价为例。 单因子线性回归 房价和面积建立回归模型。 多因子线性回归 房价和面积、收入、房龄、地区人口数建立回归模型。 线性回归模型评估 MSE 越小越好, R 2 R^2 R2越接近1越好 MSE(预测值y 和实际值y’ 的均方误差) …

Java值传递与引用传递的区别

我们先来看一下值传递和引用传递的定义;值传递:在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会影响到原来的实际参数。引用传递:在调用函数时,将实际参数的地址直接传递到…

使用这些优秀的 iPad App 提升您的技术水平

还记得当年 iPad 隆重登场,每个人都对其改变游戏规则的潜力感到震惊吗?嗯,你猜怎么着?iPad 应用程序世界已经发展,我们为您精心挑选了最好的应用程序(由 AVNation 提供)。 1、Crestron Electro…

【CSDN 每日一练 ★★☆】【动态规划】最小路径和

【CSDN 每日一练 ★★☆】【动态规划】最小路径和 动态规划 题目 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 示例 1&#x…

java毕业设计基于ssm的招聘求职网站

项目介绍 本前途招聘求职网站是针对目前仓库的实际需求,从实际工作出发,对过去的前途招聘求职网站存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确…

微服务架构之路1,服务如何拆分?使用微服务的注意事项?

目录 一、前言二、单体服务的弊端三、微服务化四、服务如何拆分?五、使用微服务的注意事项1、服务如何定义2、服务如何发布和订阅3、服务如何监控4、服务如何治理5、故障如何定位 大家好,我是哪吒。 一、前言 微服务已经是Java开发的必备技能&#xff…

Java--多线程--Thread类+Runnable接口

1.多进程与多线程 1.1多进程: 一个进程是一个包含自身地址的程序,每个独立执行的程序都称为进程,也就是正在执行的程序,系统可以分配给每个进程一段有限的使用CPU的时间(CPU时间片),CPU在这个时…

数据库实验:SQL的多表数据查询

目录 实验目的实验内容实验要求实验过程实验代码结果示意 书接上文,但是感觉之前的形式不太好用,至少不是很方便观看,所以这篇尝试改变一下写法,希望可以提升一些观感 实验目的 (1) 掌握RDBMS的数据多表查询功能 (2) 掌握SQL语言…

Junit使用

一、Junit常用注释 Test 将一个普通的方法修饰成为一个测试方法。 Test(exceptedXX.class) Test(exceptedArithmeticException.class):预期被测方法是否抛出ArithmeticException异常Test(timeout毫秒)BeforeClass:它…

velero备份k8s集群

流程图 velero备份原理 本地 Velero 客户端发送备份指令。Kubernetes 集群内就会创建一个 Backup 对象。BackupController 监测 Backup 对象并开始备份过程。BackupController 会向 API Server 查询相关数据。BackupController 将查询到的数据备份到远端的对象存储。 velero的…

【深度学习】pytorch——Tensor(张量)详解

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ pytorch——Tensor 简介创建Tensortorch.Tensor( )和torch.tensor( )的区别torch.Tensor( )torch.tensor( ) tensor可以是一个数(标量)、一维数组(向量)、二维数组&…

EasyExcel动态复杂表头导出方法

目录 需求分析解决方案数据问题数据导入 需求分析 公司数据比较特殊有一部分数据需要动态修改导致信息导入时表头是不确定的,但其中又有一部分表头是固定的,如下图所示,如果表头全部是固定的话可以通过EasyExcel实体类的注解很轻松的解决&am…

Linux CentOS7.9安装OpenJDK17

Linux CentOS7.9安装OpenJDK17 一、OpenJDK下载 清华大学开源软件镜像站 国内的站点,下载速度贼快 二、上传解压 文件上传到服务器后,解压命令: tar -zxvf jdk-xxxx-linux-x64.tar.gz三、配置环境 export JAVA_HOME/home/local/java/j…

ffmpeg mp3截取命令,视频与mp3合成带音频视频命令

从00:00:03.500开始截取往后长度到结尾的mp3音频(这个更有用,测试好用) ffmpeg -i d:/c.mp3 -ss 00:00:03.500 d:/output.mp3 将两个音频合并成一个音频(测试好用) ffmpeg -i "concat:d:/c.mp3|d:/output.mp3&…

Linux C语言进阶-D10指针数组

指针变量构成的数组 理解下面printf中的a和p的表示,其中p[0]、p[1]、p[2]表示存储的a,a1和a2这几个地址,而再加个*,相当于对地址解引用,从而得到数组中的值。 如下图,要想得到a[0][1]的值可以直接打印a[0][1]&#xf…

使用pytorch处理自己的数据集

目录 1 返回本地文件中的数据集 2 根据当前已有的数据集创建每一个样本数据对应的标签 3 tensorboard的使用 4 transforms处理数据 tranfroms.Totensor的使用 transforms.Normalize的使用 transforms.Resize的使用 transforms.Compose使用 5 dataset_transforms使用 1 返回本地…