自定义控件——button点击更换颜色,图案等

emWin CHECKBOX与DROPDOWN控件深度解析:从消息驱动到实战避坑 在嵌入式GUI开发中,控件是构建用户界面的基础模块,其核心在于消息驱动机制与状态管理。消息驱动机制是GUI系统交互的灵魂,它通过窗口管理器派发用户输入事件,控件处理消息后更新状态并重绘界面,同时向父窗口发送通知消息以触发业务逻辑。这种机制确保了界面响应与数据同步,是实现复杂交互的技术基础。控件状态管理则封装了二态、三态等逻辑,通过Set/Get函数进行维护,是保证UI行为一致性的关键。在嵌入式系统资源受限的背景下,控件的性能优化与内存管理尤为重要,例如避免频繁重绘、妥善处理字符串存储等工程实践能显著提升系统 阅读详情

效果:
1.未点击,即button为未激活状态
未激活
2.点击,即button为激活状态
激活
变化:
1.button背景颜色从透明——>蓝色
2.button有颜色边框——>无边框
3.button内部字体颜色从蓝色——>白色
4.button内部左边图案变化

背景可用shape标签实现,corners对应圆角;stroke对应边框;solid对应背景颜色,透明不设置就行了。
内部的左侧图片:用drawableLeft属性设置,在使用paddingLeft和paddingRight调整图片和文字距离

全部代码:

<Button
            android:id="@+id/bt_processing"
            android:layout_width=""
            android:layout_height=""
            android:background="@drawable/batch_sel_btn_processing_background"
            android:drawableLeft="@drawable/batch_sel_btn_processing_picture"
            android:paddingLeft=""
            android:paddingRight=""
            android:text=""
            android:textColor="@drawable/batch_sel_btn_processing_text_color"
            android:textSize="" />

1.背景 batch_sel_btn_processing_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/batch_sha_btn_processing" android:state_activated="false" />
    <item android:drawable="@drawable/batch_sha_btn_processing_pressed" android:state_activated="true" />
</selector>

batch_sha_btn_processing.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="" />
    <stroke android:width="" android:color=""/>
</shape>

batch_sha_btn_processing_pressed.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="" />
    <solid android:color="" />
</shape>

2.内部图标 batch_sel_btn_processing_picture.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/..." android:state_activated="false" />
    <item android:drawable="@mipmap/..." android:state_activated="true" />
</selector>

3.文字颜色 batch_sel_btn_processing_text_color.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/..." android:state_activated="false" />
    <item android:color="@color/..." android:state_activated="true" />
</selector>

相关知识点:Android XML shape标签 selector标签

shape:

selector:https://blog.youkuaiyun.com/sunyFS/article/details/103149296

Airtest UI自动化测试实战:从图像识别到控件操作,覆盖游戏与多平台应用 UI自动化测试是现代软件工程中提升测试效率、保障软件质量的关键技术。其核心原理是通过脚本模拟用户操作,对应用界面进行功能验证与回归测试。在技术选型上,基于图像识别和基于UI控件树是两种主流范式,前者通过截图匹配定位元素,后者通过访问应用内部控件结构进行操作,两者各有其适用场景与技术价值。Airtest项目创新性地将这两种范式融合,提供了Airtest(图像识别)与Poco(控件树操作)的双框架支持。这种组合使其特别适用于复杂的应用场景,例如对Unity、Cocos等引擎开发的游戏进行测试,因为游戏界面通常由 阅读详情

相关推荐

UE5材质参数集与动态材质实例:实现UI驱动模型换色的最佳实践

在实时渲染和游戏开发中,动态材质控制是实现视觉交互反馈的核心技术之一。其原理在于通过程序逻辑在运行时修改着色器参数,从而改变模型的外观表现,而无需重新编译或替换材质资源。这项技术的核心价值在于实现了逻辑与表现的解耦,极大地提升了项目的可维护性和扩展性。在诸如角色自定义、环境交互、状态反馈等应用场景中尤为常见。本文聚焦于利用Unreal Engine 5的材质参数集与动态材质实例这两个关键组件,构建一个由UI蓝图驱动、高效且低耦合的实时模型换色系统。通过蓝图接口进行通信,并深入探讨了性能优化与常见问题排查方案

weixin_33895475的博客 369

嵌入式GUI开发:emWin皮肤机制原理与实战应用

在嵌入式系统开发中,图形用户界面(GUI)的视觉表现直接影响用户体验。传统开发方式常将视觉风格与业务逻辑紧密耦合,导致UI调整和维护成本高昂。emWin的皮肤机制通过绘制委托系统,将控件的绘制逻辑抽象为独立的回调函数,实现了视觉与逻辑的彻底分离。这一机制借鉴了桌面和移动端开发中的主题概念,为控件家族提供了一套可替换的“外衣”。从技术原理上看,皮肤机制基于WIDGET_ITEM_DRAW_INFO结构体,通过标准化的接口接收绘制命令和上下文信息,实现关注点分离。其技术价值在于显著提升开发效率、降低维护成本,并

culh2177的博客 546

极路由 极1s J1S hc5661 刷padavan固件

极路由1S刷机指南 准备工作: 下载Breed不死固件 通过WinSCP上传或直接wget获取 执行mtd命令写入Breed 关键步骤: 进入Breed控制台(按住Reset键开机) 备份原厂固件和密钥 下载Padavan固件(RT-N14U-GPIO-12-xiaodu-ji1S-128M.trx) 刷机过程: 在Breed控制台更新固件 等待自动重启完成 初始设置: 管理地址:192.168.123.1 默认账号:admin/admin 无线名称:PCDN 无线密码:1234567890 注意事项:切勿

SimonLiu的博客 1302

Unity一张图带你看懂Button的各种颜色设定(HighLighted、Pressed、Selected、Disabled Color)

button会有个基础颜色,建议设定为白色,因为这个基础颜色会和后续的颜色产生一个叠加效果。DisabledColor,当该按钮的交互功能关闭时便会变成DisabledColor。Pressed Color 当鼠标按下,但是不松开时的颜色,Selected color 当鼠标按下后,选中该按钮的颜色。HighLightedColor 当鼠标放上去时显示的颜色。NormalColor 基础时候的颜色。

weixin_43757333的博客 5858

Ubuntu 26.04 本地安装 GitLab CE 完整教程(非 Docker 方式)

本文详细介绍了在Ubuntu 26.04系统上通过Omnibus包安装GitLab CE的完整流程。主要内容包括:环境准备(系统要求、依赖安装)、配置清华镜像源、执行安装命令、修改配置文件、服务管理命令以及常见问题解决方法。文章特别强调了内存要求(建议4GB以上)、首次登录密码获取、HTTPS安全配置等关键点,并提供了性能优化建议和安全设置指导。相比Docker方式,Omnibus安装具有性能更好、管理方便等优势,适合需要私有化部署GitLab的场景。

1372

vue使用 APlayer+Meting实现音乐播放,支持多平台音乐:网易云、腾讯、虾米、酷狗、百度

  我之前写过一篇博客:使用 APlayer 实现音乐播放器,虽然 APlayer 让我实现了想要的音乐播放器效果,但是音频列表 audio 的音频链接、音频封面、歌词等,是需要自己去补充的。   那么这些数据从哪里来呢?   我昨天有发愁一会儿会儿,也去搜了获取音乐列表的接口,可以发请求去获取数据嘛。   也有瞅见MetingJS,A powerful plugin connect APlayer and Meting,一个连接APlayer和Meting的功能强大的插件,附上GitHub地址:https

小R.的博客 4798

【Material-UI】Button 组件中的颜色设置(Color)详解

要添加自定义颜色,可以通过主题的palette配置来扩展颜色选项。在这个示例中,我们创建了一个自定义主题,并在palette中定义了颜色。通过main属性设置按钮的主颜色,并使用属性设置文本的对比色。Material-UI 的 Button 组件通过丰富的颜色选项和自定义能力,为开发者提供了极大的灵活性。无论是使用预定义的颜色,还是创建自定义的配色方案,开发者都可以根据具体的设计需求和用户体验要求来定制按钮的外观。

lph159的博客 3484

Windows 11最新WDK安装避坑指南:从Visual Studio配置到KMDF驱动开发

本文提供了在Windows 11系统上进行KMDF驱动开发的完整环境搭建与实战指南。针对最新WDK与Visual Studio的配置变化,详细解析了从独立安装WDK/SDK、创建首个KMDF驱动项目,到编译排错、部署调试的全流程,帮助开发者高效避坑,顺利开启Windows内核开发。

weixin_29302047的博客 527

修改Button中字体的颜色

修改button中字体的颜色需要用到ForeColor。 background和ForeColor一个是背景色,一个是前景色; 背景色即指的是背景的顔色; 而前景色指的就是背景前面的物体的顔色,一般指文本的颜色。 他们两的关系就好比拍照:后面幕布的颜色即背景色,而拍照的你就是前景色。 实例设置背景为红色,字体为蓝色的按钮: <input type="button" id="Button1" ...

江夏、的博客 1万+

题解:洛谷 P14357 [CSP-J 2025] 拼数

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。小 R 想知道,在他所有能拼成的正整数中,最大的是多少。你需要帮助小 R 求出他能拼成的正整数的最大值。小 X 给了小 R 一个字符串。输出一行一个正整数,表示小 R 能拼成的正整数的最大值。中的任意多个数字,按任意顺序拼成一个正整数。,表示小 X 给小 R 的字符串。#普及-# #其他排序#洛谷:[P14357。

团爸讲算法 1394

勇攀数字高峰

摘要:该题目要求在数字地形图中寻找从最低点到最高点的所有严格递增登山路径。采用DFS深度优先搜索结合回溯算法,通过标记已访问位置并检查高度差限制(0<diff≤maxDiff)来遍历所有可能路径。算法首先确定起点(最低点)和终点(最高点),然后进行DFS搜索,每步移动需满足四个方向的合法移动且高度严格递增。最终输出符合条件的路径总数。提供了C++、Java和Python三种实现方案。

面试高手的博客 622

Android Studio中默认Botton的颜色(学习笔记)

此处可能会出现,右边按钮颜色仍然是默认颜色的情况(我换了别的颜色,发现有的可以改变,有的不行,也不知道是啥子问题)修改button的textcolor,再在外部添加一个background,如下所示的第6行和第17行。首先打开thems.xml文件,res--values, choose "themes.xml"1.首先建立一个xml文件,在android--app--res--layout目录下。3.将会看见code页面下出现以下,关于button的一段默认的设定。

m0_65485230的博客 5858

RT-DETR改进策略【损失函数篇】| 通过辅助边界框计算IoU提升检测效果(Inner_GIoU、Inner_DIoU、Inner_CIoU、Inner_EIoU、Inner_SIoU)

为了弥补现有 IoU 损失在不同检测任务中泛化性弱和收敛速度慢的问题,·Inner-IoU·通过引入比例因子 “ratio” 来控制辅助边界框的尺度大小,利用不同尺度的辅助边界框来计算损失,从而加速边界框回归过程。

Limiiiing的博客 1965

CSS3设置按钮的样式

平面按钮样式——现主流 在实际开发中,按钮的应用是必不可少 使用 CSS 来制作按钮,可以更有新意,更有趣,也可以自定义自己想要的样式 平面样式按钮的使用现在非常流行,并且符合无处不在的平面设计趋势 实现方式 .button { background-color: #4CAF50; /* Green */ border: none; color: white; padding: 15px 32px; text-align: center; text-dec

视觉软件 3万+

图解移动机器人中的运动规划(Motion Planning),附几十种规划算法

运动规划是移动机器人的核心理论和工程技术之一,本文作为教程先导,解析了运动规划的两大组件——路径规划和轨迹规划。欢迎感兴趣的同学订阅专栏!

FRIGIDWINTER的博客 4万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android开发之Button控件(实现点击按钮更换图案及颜色)

Button控件实现点击按钮更换图案即颜色

ShadyPi的IT笔记 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Unity】Button基础-按钮更换图片样式

话说,今天修改了一下项目中的内容,发现按钮不怎么好看,想用图片的方式改一改,然后点开Button,忽然发现好多内容都忘记了。。。 Transition(过渡方式):按钮在状态改变时自身的过渡方式: Color Tint(颜色改变) Sprite Swap(图片切换) Animation(执行动画)(后面有详细介绍) Sprite Swap(图片切换过渡模式): Highlighted Sprite(高亮图片):选中状态或是鼠标靠近会进入高亮状态。 Pressed Sprite(按...

好吃的和好看的都需要用实力来争取 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

制作自定义背景Button按钮、自定义形状Button的全攻略

制作自定义背景Button按钮、自定义形状Button的全攻略 在Android开发应用中,默认的Button是由系统渲染和管理大小的。而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的。因此,我们在开发产品的时候,需要对默认按钮进行美化。在本篇里,笔者结合在应用开发中的经验,探讨一下自定义背景的按钮、自定义形状按钮的实现方法。 首先看实现效果截图:

xuewuzhijin2012的专栏 1014

嵌入式GUI开发实战:emWin的GUIBuilder与Skinning机制深度解析

在嵌入式系统开发中,图形用户界面(GUI)的实现常面临资源受限与视觉定制两大挑战。其核心原理在于通过高效的渲染引擎与控件管理机制,在有限的硬件资源上构建流畅的交互体验。从技术价值看,优秀的GUI框架能显著提升开发效率与产品竞争力,尤其在消费电子、工业控制等对界面美观度与响应速度有高要求的应用场景中。本文聚焦于emWin框架,深入剖析其GUIBuilder可视化工具与Skinning皮肤机制如何协同工作。GUIBuilder通过拖拽布局与自动代码生成,解决了界面“从无到有”的效率瓶颈;而Skinning机制则

weixin_33824363的博客 361

嵌入式GUI开发实战:emWin滚动条、滑块、微调框与文本控件深度解析

在嵌入式系统开发中,图形用户界面(GUI)是实现人机交互的核心组件。其原理基于事件驱动和消息传递机制,控件作为窗口对象,通过内部状态机和回调函数响应用户操作。掌握GUI控件的技术价值在于能够构建直观、高效且稳定的产品界面,直接影响用户体验。常见的应用场景包括工业HMI、医疗设备、智能家居面板以及消费电子产品的参数设置界面。本文将聚焦于SEGGER emWin这一广泛应用的高性能嵌入式GUI库,深入剖析其四大核心控件——滚动条(SCROLLBAR)、滑块(SLIDER)、微调框(SPINBOX)和文本(TEX

weixin_34297704的博客 286

emWin Flex皮肤系统深度解析:嵌入式GUI控件外观与逻辑分离实战

在嵌入式GUI开发中,控件外观与逻辑的紧密耦合是常见的工程痛点,这限制了界面的定制化与复用性。皮肤系统(Skinning System)正是解决这一问题的架构设计,其核心原理在于通过回调函数与数据驱动机制,将控件的视觉绘制逻辑从功能逻辑中彻底解耦。这种分离带来的技术价值在于,开发者无需修改控件内部代码,即可动态定义和切换其边框、背景、文字等视觉属性,极大提升了UI的定制灵活性与开发效率。在嵌入式系统、MCU平台以及消费电子、工业HMI等应用场景中,皮肤系统能够帮助产品在有限的硬件资源上,实现品牌化、差异化的

weixin_34116110的博客 433

emWin皮肤机制深度解析:嵌入式GUI定制化与性能优化实践

在嵌入式系统开发中,图形用户界面(GUI)是实现人机交互的核心组件,其性能与定制化能力直接影响产品体验。皮肤机制作为一种高级UI定制技术,通过回调函数系统将控件外观绘制与业务逻辑彻底解耦,实现了界面表现层的独立设计。其原理基于命令-响应模型,开发者可以精细控制每个视觉元素的绘制过程,从而在资源受限的嵌入式平台上平衡性能与视觉效果。该技术的核心价值在于提升代码的模块化、可复用性和可维护性,尤其适用于需要快速迭代和系列化开发的工业控制、医疗设备及智能家居等领域。通过emWin皮肤机制,开发者能够灵活定制按钮、框

329

嵌入式GUI皮肤机制深度解析:以emWin CHECKBOX_SKIN_FLEX为例

在嵌入式系统开发中,图形用户界面(GUI)是连接用户与设备的关键桥梁,其设计直接影响产品的用户体验与品牌形象。面对嵌入式设备有限的硬件资源(如RAM、Flash和CPU主频),如何在保证功能与美观的同时实现高效运行,成为开发者面临的核心挑战。皮肤(Skinning)机制作为一种先进的UI设计模式,通过将控件的视觉表现(“皮囊”)与核心逻辑(“灵魂”)解耦,提供了高度的定制灵活性与运行效率。其技术原理基于回调函数(Callback)的绘制框架,允许开发者在编译时静态配置或运行时动态修改控件外观,从而实现主题切

weixin_33692284的博客 426

emwin+字库芯片实现按钮文字内容任意

那是后续的事情了,我先把按钮的实现方式发出来,给大家一个参考:其实说白了也没啥,就是自己实现按钮控件的回调函数,在WM_PAINT响应事件中按照自己的需求对按钮进行绘制。我没有使用emwin提供的字符串显示接口函数,而是用自己写的函数替代,不知道有没有什么问题,下面是实现的代码。这样就在客户区的窗口位置x,y的位置创建了一个宽度为w,高度为h,ID为BUTTON_ID_USER的一个按钮,如果直接运行,按钮上是没有文字的。通过以上的代码,就可以实现从字库芯片读取字模,然后更新emwin按钮控件的文本信息。

xinyuezdy的博客 281

emWin皮肤系统深度解析:嵌入式GUI外观与逻辑分离的设计与实现

在嵌入式系统开发中,图形用户界面(GUI)是连接用户与设备的关键桥梁。其核心原理在于将界面渲染逻辑与业务功能解耦,通过分层架构提升代码的可维护性和复用性。这项技术的核心价值在于,它允许开发者在资源受限的微控制器平台上,无需深入底层绘图代码,即可高效定制控件外观,从而平衡性能与视觉效果。从技术实现角度看,它通常基于回调函数机制,控件在需要绘制时,会向预定义的皮肤函数发送包含绘制命令和区域信息的结构化数据,由开发者利用基础的图形API(如填充矩形、绘制圆角)进行响应式绘制。这种模式广泛应用于工业HMI、医疗设备

weixin_34150830的博客 410

房车露营改装营地应用基于HarmonyOS ArkTS API 24通过.onClick(() => { ... })绑定交互事件。这种方式将组件的结构、样式与行为聚合在一处,形成高度内聚的代码单元

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

jin421352的博客 183
上一篇: RecyclerView使用——精确恢复到上次浏览位置
下一篇: Android XML——selector标签
sunyFS
博客等级 码龄7年 21粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值