自定义控件——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

Zephyr OS实战指南:从入门到精通物联网开发

本文提供了一份详尽的Zephyr OS实战指南,涵盖从开发环境搭建到物联网应用开发的全过程。文章详细介绍了如何利用Zephyr OS进行线程管理、设备驱动开发、低功耗设计以及蓝牙通信,并通过具体代码示例帮助开发者快速掌握这一专为物联网设备设计的开源实时操作系统,实现从入门到精通的跨越。

weixin_29201933的博客 546

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

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

weixin_43757333的博客 5858

使用moveit中的报错及解决

1.fatal error: moveit/move_group_interface/move_group.h: 没有那个文件或目录。// #include <moveit/move_group_interface/move_group.h> 改为。问题1 moveit/move_group_interface/move_group.h: 没有那个文件或目录。在运行c++程序时报错。

qq_60566155的博客 2285

手把手教你用FPGA解析AD9680的JESD204B数据流(附Verilog代码)

本文详细介绍了如何利用FPGA解析AD9680的JESD204B数据流,包括协议核心机制、硬件平台搭建、Verilog代码实现及调试技巧。通过实战案例和代码示例,帮助工程师快速掌握高速ADC数据采集与处理技术,提升系统性能。

weixin_33640562的博客 372

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

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

lph159的博客 3484

绑定压力的计算方法

压强的公式为P=F/S,其中P为ACF要求的本压压强范围,S为受压面积,F为本压压头施加的力。绑定参数需要按线体按压头进行DOE确认,并使用DOE确认好的参数按压头重新绑定标识好送ACF厂商实测固化率、粒子变形的情况,避免绑定参数导致的异常,在绑定参数的设定过程中温度和时间可以使用仪器实测但绑定的压力则需要换算。工程上绑定压力换算的原则是:1、FPC属于柔性物料,柔性物料的受压面积按FPC绑定的受压面积=FPC绑定的长度。一、工程上FOG FPC本压压力换算(柔性材料以挤压的接触面积=受力面积)F=P。

weixin_53757859的博客 1533

修改Button中字体的颜色

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

江夏、的博客 1万+

昇腾CANN实战:如何用DVPP+AIPP实现32路视频流毫秒级预处理(附性能对比)

本文深入探讨了昇腾CANN架构中DVPP和AIPP模块在32路视频流毫秒级预处理中的硬件加速技术。通过异构计算架构的优化,实现了从传统CPU方案的40.7毫秒到CANN方案3.4毫秒的显著性能提升,特别适用于智能安防领域的实时视频分析需求。文章详细解析了DVPP多通道并行设计和AIPP模型级预处理融合的技术细节,并提供了性能对比数据与实战调优经验。

alice7model的博客 919

在MATLAB和Simulink中设计并仿真一个智能建筑能效优化系统

智能建筑能效优化是现代建筑管理的重要组成部分,旨在通过智能化手段降低能源消耗、减少碳排放并提高居住舒适性。通过Simulink进行智能建筑能效优化仿真,可以验证控制策略的有效性、优化系统设计并降低开发成本。以下是如何在MATLAB和Simulink中设计并仿真一个智能建筑能效优化系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的智能建筑能效优化仿真。该系统能够模拟复杂的建筑环境,验证能效优化策略的有效性,并通过优化设计提高建筑的能源利用效率和居住舒适性。

xiaoheshang_123的博客 138

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

OAuth2.0集成SpringSecurity加JWT实现单点登录

单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以

Nicky's blog 9038

CSS3设置按钮的样式

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

视觉软件 3万+

解释多智能体强化学习(Multi-Agent Reinforcement Learning)(面试题200合集,中频、重要)

多智能体强化学习通过扩展传统强化学习框架,研究多个智能体在动态、交互环境中的策略优化问题。它既有理论上的挑战(如非平稳性和均衡求解),也有广泛的实际应用前景。数学上,它依赖马尔可夫博弈模型,核心是设计算法让智能体在合作或竞争中达到最优。

qq_38334677的博客 990

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

ShadyPi的IT笔记 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

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

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

制作自定义背景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、付费专栏及课程。

余额充值