一个滑块可变色的Seekbar

因项目需要,做一个如下图的滑动条,要求如下:

1、滑块跟着进度条改变颜色

2、滑块有白色边和内部颜色组成

大体思路,就是背景需要UI按照需求提供,然后变色时,根据滑动回调动态设置对应的颜色。

直接上代码

xml里面的布局

                <SeekBarandroid:id="@+id/atmosphere_lamp_progress_color_seekbar"style="@style/atmosphere_lamp_progress_color_horizontal"android:layout_width="@dimen/dimen578dp"android:layout_height="@dimen/dimen32dp"android:layout_marginStart="@dimen/dimen4dp"android:layout_marginTop="@dimen/dimen98dp"android:background="@null"android:max="63"android:paddingVertical="@dimen/dimen7dp"android:paddingStart="@dimen/dimen16dp"android:paddingEnd="@dimen/dimen16dp"android:splitTrack="false" />

使用到的style

    <style name="atmosphere_lamp_progress_color_horizontal"><item name="android:indeterminateOnly">false</item><item name="android:thumb">@drawable/atmosphere_thumb_bg</item><item name="android:progressDrawable">@drawable/bg_color_palette</item><!-- 滑动条颜色--><item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item><item name="android:minHeight">@dimen/dimen44dp</item><item name="android:maxHeight">@dimen/dimen44dp</item></style>

如果想让进度条有背景和进度两个滑动条,可以给progressDrawable添加一个layer-list即可

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background" android:drawable="@drawable/slider_ambient_lighting_n_white" /><item android:id="@android:id/progress" android:drawable="@drawable/slider_ambient_lighting_f_white" /></layer-list>

滑块分层我是使用了atmosphere_thumb_bg用到了layer-list

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/seekbar_thumb_out"/><itemandroid:width="@dimen/dimen28dp"android:height="@dimen/dimen28dp"android:top="@dimen/dimen2dp"android:left="@dimen/dimen2dp"android:drawable="@drawable/seekbar_thumb_in"/></layer-list>
seekbar_thumb_out如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><!--设置大小--><size android:width="@dimen/dimen32dp"android:height="@dimen/dimen32dp"/><!--设置圆角--><corners android:radius="@dimen/dimen18dp"/><!--设置背景颜色--><solid android:color="@color/white"/><!--    &lt;!&ndash;设置边框&ndash;&gt;-->
<!--    <stroke android:width="2dp" android:color="@color/colorAccent"/>--></shape>
seekbar_thumb_in如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/seekbar_thumb_out"/><itemandroid:width="@dimen/dimen28dp"android:height="@dimen/dimen28dp"android:top="@dimen/dimen2dp"android:left="@dimen/dimen2dp"android:drawable="@drawable/seekbar_thumb_in"/></layer-list>

以上都是布局,要想动态显示还是有如下java代码:

给seekbar注册监听

    //SeekBar回调private SeekBar.OnSeekBarChangeListener seekChangeListener = new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {if (fromUser) {switch (seekBar.getId()) {case R.id.atmosphere_lamp_progress_color_seekbar://氛围灯颜色LogUtils.d(TAG, "无极调色 == " + progress);setThumbColor(seekBar, progress + 1, 255);break;default:break;}}}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {switch (seekBar.getId()) {case R.id.atmosphere_lamp_progress_color_seekbar:LogUtils.i(TAG, "氛围灯———颜色 抬手 == " + lampBrightnessValue);break;default:break;}}};

封装的setThumbColor设置动态颜色

    //设置无极变色滑块颜色private void setThumbColor(SeekBar seekBar, int value, int alphaValue) {LayerDrawable layerDrawable = (LayerDrawable) seekBar.getThumb();GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable.getDrawable(1);GradientDrawable gradientDrawable0 = (GradientDrawable) layerDrawable.getDrawable(0);gradientDrawable.setColor(Myapplication.getApplication().getResources().getColor(atmosphereLampHelp.valueToColor(value), null));gradientDrawable.setAlpha(alphaValue);gradientDrawable0.setAlpha(alphaValue);}

里面的颜色值,可以按照自己要求一一对应即可。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重大更新!锂电池剩余寿命预测新增 CALCE 数据集

往期精彩内容&#xff1a; 单步预测-风速预测模型代码全家桶-CSDN博客 半天入门&#xff01;锂电池剩余寿命预测&#xff08;Python&#xff09;-CSDN博客 超强预测模型&#xff1a;二次分解-组合预测-CSDN博客 VMD CEEMDAN 二次分解&#xff0c;BiLSTM-Attention预测模型…

实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(2):功能介绍

0 参考资料 PCF8563数据手册&#xff08;第 11 版——2015 年 10 月 26 日&#xff09;.pdf 1 功能介绍 1.1 实时时钟&#xff08;RTC&#xff09;/日历 &#xff08;1&#xff09;PCF8563支持实时时钟&#xff08;RTC&#xff09;&#xff0c;提供时、分、秒信息。对应寄存器…

Xcode如何高效的一键重命名某个关键字

1.选中某个需要修改的关键字&#xff1b; 2.右击&#xff0c;选择Refactor->Rename… 然后就会出现如下界面&#xff1a; 此时就可以一键重命名了。 还可以设置快捷键。 1.打开Settings 2.找到Key Bindings 3.搜索rename 4.出现三个&#xff0c;点击一个地方设置后其…

Grok 3 的崛起:AI 的新时代

AI 领域再次震动&#xff0c;一款全新的深度思考大型语言模型正式亮相。它不仅碾压了现有的各项基准测试&#xff0c;还成功登顶 LM Marina 排行榜&#xff0c;夺得第一名。这款 AI 不是别人&#xff0c;正是埃隆马斯克那款“基于事实、敢言无忌”的 Grok 3——一个号称既极为聪…

ros安装rqt_joint_trajectory_controller

有时候&#xff0c;我们可以看到别人的代码里面有这个&#xff0c;但是这个是需要安装的。 <node name"gui_controller" pkg"rqt_joint_trajectory_controller" type"rqt_joint_trajectory_controller" />sudo apt-get install ros-noeti…

ARM Linux LCD上实时预览摄像头画面

文章目录 1、前言2、环境介绍3、步骤4、应用程序编写4.1、lcd初始化4.2、摄像头初始化4.3、jpeg解码4.4、开启摄像头4.5、完整的程序如下 5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 本次应用程序主要针对支持MJPEG格式输出的UVC摄像头。 2、环境介绍 rk35…

是德科技keysight N5173B信号发生器,是一款经济高效的仪器

是德科技keysight N5173B信号发生器安捷伦N5173B信号源 是德N5173B微波模拟信号发生器&#xff0c;拥有 9 kHz 至 40 GHz 的频率覆盖范围&#xff0c;N5173B为宽带滤波器、放大器、接收机等器件的参数测试提供了必要的信号&#xff0c;是一款经济高效的仪器。 N5173B特点&…

【Redis】在Java中以及Spring环境下操作Redis

Java环境下&#xff1a; 1.创建maven 项目 2.导入依赖 <!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.2</version></dependency> 此处使用的是Jedis&…

registry 容器镜像测试

registry 封装容器部署环境测试 封装打包镜像 dockerfile # 阶段 1&#xff1a;构建阶段&#xff08;使用多阶段构建以减少最终镜像大小&#xff09; FROM golang:1.22-alpine AS builder # 安装构建所需工具 RUN #apk add --no-cache git # 设置工作目录 WORKDIR /app # 将…

Python视频网站(Django框架)

有需要请加文章底部Q哦 可远程调试 Python视频网站(Django框架) 一 介绍 此Python视频网站基于Django框架开发&#xff0c;数据库mysql&#xff0c;前端jquery.js。系统角色分为用户和管理员。 技术栈:Python3(Django框架)MySQLjquery.jsPyCharmnavicat 二 功能 用户 1 注册…

多元数据直观表示(R语言)

一、实验目的&#xff1a; 通过上机试验&#xff0c;掌握R语言实施数据预处理及简单统计分析中的一些基本运算技巧与分析方法&#xff0c;进一步加深对R语言简单统计分析与图形展示的理解。 二、实验内容&#xff1a; bank.csv文件中数据来自1969-1971年美国一家银行的474名职…

在MacOS上打造本地部署的大模型知识库(一)

一、在MacOS上安装Ollama docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main 最后停掉Docker的ollama&#xff0c;就能在webui中加载llama模…

Fiddler在Windows下抓包Https

文章目录 1.Fiddler Classic 配置2.配置浏览器代理自动代理手动配置浏览器代理 3.抓取移动端 HTTPS 流量&#xff08;可选&#xff09;解决抓取 HTTPS 失败问题1.Fiddler证书过期了 默认情况下&#xff0c;Fiddler 无法直接解密 HTTPS 流量。需要开启 HTTPS 解密&#xff1a; 1…

常用的AI文本大语言模型汇总

AI文本【大语言模型】 1、文心一言https://yiyan.baidu.com/ 2、海螺问问https://hailuoai.com/ 3、通义千问https://tongyi.aliyun.com/qianwen/ 4、KimiChat https://kimi.moonshot.cn/ 5、ChatGPThttps://chatgpt.com/ 6、魔塔GPT https://www.modelscope.cn/studios/iic…

(python)Arrow库使时间处理变得更简单

前言 Arrow库并不是简单的二次开发,而是在datetime的基础上进行了扩展和增强。它通过提供更简洁的API、强大的时区支持、丰富的格式化和解析功能以及人性化的显示,填补了datetime在某些功能上的空白。如果你需要更高效、更人性化的日期时间处理方式,Arrow库是一个不错的选择…

游戏引擎学习第127天

仓库:https://gitee.com/mrxiao_com/2d_game_3 为本周设定阶段 我们目前的渲染器已经实现了令人惊讶的优化&#xff0c;经过过去两周的优化工作后&#xff0c;渲染器在1920x1080分辨率下稳定地运行在60帧每秒。这个结果是意料之外的&#xff0c;因为我们没有预计会达到这样的…

leetcode 73. 矩阵置零

题目如下 数据范围 如果一个点m(i,j) 0其中i j都大于0那么按照题目要求对应的m[0][j] m[i][0]都要赋值为0. 所以我们可以令第一行和第一列作为标记是否对应的列和行需要置为0. 又因为我们没法判断第一行和第一列所以需要额外两个变量标记第一列和第二列。 这样就可以满足题…

deepseek-r1-centos-本地服务器配置方法

参考&#xff1a; 纯小白 Centos 部署DeepSeek指南_centos部署deepseek-CSDN博客 https://blog.csdn.net/xingxin550/article/details/145574080 手把手教大家如何在Centos7系统中安装Deepseek&#xff0c;一文搞定_centos部署deepseek-CSDN博客 https://blog.csdn.net/soso67…

机器学习:强化学习的epsilon贪心算法

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种机器学习方法&#xff0c;旨在通过与环境交互&#xff0c;使智能体&#xff08;Agent&#xff09;学习如何采取最优行动&#xff0c;以最大化某种累积奖励。它与监督学习和无监督学习不同&#xff0c;强调试错…

比创达电子科技-EMC干货之防静电技术

EMC干货之防静电技术 什么是静电放电 两个具有不同静电电位的物体&#xff0c;由于直接接触或静电场感应引起两物体间的静电电荷的转移,静电电场的能量达到一定程度后&#xff0c;击穿其间介质而进行放电的现象就是静电放电,简称为ESD(Electro Static Discharge)。 静电产生的原…