[Android]设置颜色

1.XML资源文件

在 res/values/colors.xml 中定义颜色资源:

<color name="my_color">#FFC107</color>

在布局文件中使用:

android:background="@color/my_color"

在代码中使用:

val color: Int = ContextCompat.getColor(this, R.color.my_color)

2.直接在代码中设置

使用 Color 类的静态方法:

import android.graphics.Colorval redColor = Color.RED
val customColor = Color.rgb(255, 165, 0) // 使用RGB值
val argbColor = Color.argb(255, 255, 165, 0) // 使用ARGB值

3.使用 ColorDrawable

在代码中创建 ColorDrawable 并使用:

import android.graphics.drawable.ColorDrawableval drawable = ColorDrawable(Color.parseColor("#FFC107"))
binding.textView.setTextColor(drawable.color)

4.颜色状态列表资源 (Color State List)

1).创建 Color State List 文件

在 res/color 目录下创建一个 XML 文件(例如 my_color_state_list.xml),用于定义颜色状态列表。

注意:先自己创建一个color目录,<selector> XML 文件应该位于 "animator"、"drawable" 或 "color" 目录中,而不是 "values" 目录中。

2).在 Color State List 文件中定义颜色状态项

在 XML 文件中,使用 <selector>元素作为根元素,然后定义不同状态下的颜色项。每个颜色项使用 <item>元素,并指定相应的状态和颜色值。

<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:color="@color/colorPressed" /><item android:state_selected="true" android:color="@color/colorSelected" /><item android:state_enabled="false" android:color="@color/colorDisabled" /><item android:color="@color/colorDefault" />
</selector>

3).定义颜色资源

在 res/values/colors.xml 文件中定义各个颜色值(例如 colorPressed、colorSelected 等),以便在 Color State List 文件中引用。

定义四个颜色,按下时的颜色(`colorPressed`)、选中时的颜色(`colorSelected`)、禁用时的颜色(`colorDisabled`)和默认的颜色(`colorDefault`)。

<resources><color name="colorPressed">#FF0000</color><color name="colorSelected">#00FF00</color><color name="colorDisabled">#808080</color><color name="colorDefault">#000000</color>
</resources>

4).在布局文件中应用 Color State List

在布局文件中使用:

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, World!"android:textColor="@color/my_color_state_list" />

在代码中使用:

val colorStateList = ContextCompat.getColorStateList(this, R.color.my_color_state_list) binding.textView.setTextColor(colorStateList) 

 

5.属性 (Attributes) 引用

使用主题中定义的颜色属性:

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="Theme.GATestDemol" parent="Theme.AppCompat.Light.NoActionBar" ><!-- 主题颜色 --><item name="colorPrimary">@color/colorPrimary</item><!-- 其他主题属性 --></style>
</resources>

并在颜色资源文件(通常是`res/values/colors.xml`)中定义colorPrimary

<resources><color name="colorPrimary">#3F51B5</color><!-- 其他颜色 -->
</resources>

在布局文件中使用:

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, World!"android:textColor="?attr/colorPrimary" />

在代码中使用:

import android.util.TypedValuevar color1 = androidx.appcompat.R.attr.colorPrimary
var color2 = com.google.android.material.R.attr.colorPrimary
var color3 = androidx.constraintlayout.widget.R.attr.colorPrimaryval typedValue = TypedValue()
this.theme.resolveAttribute(color2, typedValue, true)
val colorPrimary = typedValue.data
binding.textView.setTextColor(colorPrimary)

6.ResourcesCompat

使用 ResourcesCompat 获取颜色:

import androidx.core.content.res.ResourcesCompatval color = ResourcesCompat.getColor(resources, R.color.my_color, null)
binding.textView.setTextColor(color)

7.ValueAnimator

对颜色进行动画处理:

import android.animation.ValueAnimator  
import android.view.animation.AccelerateDecelerateInterpolator   val colorAnimator = ValueAnimator.ofArgb(Color.RED, Color.BLUE)
colorAnimator.duration = 5000 // 设置动画持续时间(单位:毫秒)
colorAnimator.interpolator = AccelerateDecelerateInterpolator() // 设置插值器
colorAnimator.repeatMode = ValueAnimator.REVERSE // 设置重复模式
colorAnimator.addUpdateListener { animator ->val animatedColor = animator.animatedValue as Int// 使用 animatedColorbinding.textView14.setTextColor(animatedColor)
}
colorAnimator.start()

8.使用 ColorMatrix 和 ColorFilter

ColorMatrix和ColorFilter是用于图形处理和色彩调整的类。它们可以用于修改位图、绘制画布或应用于图像视图等场景。

1).创建 ColorMatrix 对象

使用 ColorMatrix 类的构造函数或静态方法创建一个 ColorMatrix 对象。

val colorMatrix = ColorMatrix()

2).修改 ColorMatrix

通过调用 ColorMatrix 对象的方法,可以修改矩阵中的元素,以实现不同的图像处理效果。

调整亮度:

val brightness = 1.2f // 亮度增加 20%
val matrix = floatArrayOf(brightness, 0f, 0f, 0f, 0f,0f, brightness, 0f, 0f, 0f,0f, 0f, brightness, 0f, 0f,0f, 0f, 0f, 1f, 0f
)
colorMatrix.set(matrix)

调整对比度:

val contrast = 1.5f // 对比度增加 50%
val matrix = floatArrayOf(contrast, 0f, 0f, 0f, 0f,0f, contrast, 0f, 0f, 0f,0f, 0f, contrast, 0f, 0f,0f, 0f, 0f, 1f, 0f
)
colorMatrix.set(matrix)

颜色转换:

val matrix = floatArrayOf(1f, 0f, 0f, 0f, 0f, // 红色通道0f, 0f, 0f, 0f, 0f, // 绿色通道0f, 0f, 0f, 0f, 0f, // 蓝色通道0f, 0f, 0f, 1f, 0f  // 透明度通道
)
colorMatrix.set(matrix)

3).创建 ColorFilter

使用 ColorMatrixColorFilter 类创建一个 ColorFilter 对象,并将 ColorMatrix 对象传递给它。

val colorFilter = ColorMatrixColorFilter(colorMatrix)

4).应用 ColorFilter

将 ColorFilter 应用于目标视图或绘图画布。

对 ImageView 应用 ColorFilter:

val colorMatrix = ColorMatrix().apply { setSaturation(0.5f) }
val filter = ColorMatrixColorFilter(colorMatrix)
binding.imageView.colorFilter = filter
val colorMatrix = ColorMatrix()
val contrast = 1.5f // 对比度增加 50%
val matrix = floatArrayOf(contrast, 0f, 0f, 0f, 0f,0f, contrast, 0f, 0f, 0f,0f, 0f, contrast, 0f, 0f,0f, 0f, 0f, 1f, 0f
)
colorMatrix.set(matrix)
val colorFilter = ColorMatrixColorFilter(colorMatrix)
binding.imageView.colorFilter = colorFilter

在绘图画布上应用 ColorFilter:

canvas?.drawBitmap(bitmap, 0f, 0f, Paint().apply {colorFilter = colorFilter
})

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

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

相关文章

安卓播放解码后的byte字节视频

参考文章&#xff1a;安卓播放解码后的byte字节视频 - 简书 wlmedia播放器集成&#xff08;4&#xff09;— 实现视频播放 一个很棒的库&#xff0c; github地址&#xff1a;https://github.com/wanliyang1990/wlmedia About Android 音视频播放SDK&#xff0c;几句代码即可实…

MAC地址_MAC地址格式_以太网的MAC帧_基础知识

MAC地址 全世界的每块网卡在出厂前都有一个唯一的代码,称为介质访问控制(MAC)地址 一.网络适配器(网卡) 要将计算机连接到以太网&#xff0c;需要使用相应的网络适配器(Adapter)&#xff0c;网络适配器一般简称为“网卡”。在计算机内部&#xff0c;网卡与CPU之间的通信&…

dewarp:数据变换

一. 效果 输入图片&#xff1a;test.jpg 前向场:test.npy 输出图片&#xff1a;dewarp_img.jpg 二. 代码 import os import cv2 import numpy as npdef align_flow(image, flow):"""flow: -1~1, 非文本区域是nanbm_flow: 对齐的bm&#xff0c;可以直接对图…

LeetCode算法练习top100:(4)链表

package top100.top链表;import top100.ListNode; import top100.Node;import java.util.ArrayDeque; import java.util.ArrayList; import java.util.HashMap;public class TOP {//160. 相交链表//hashmap方法太low了//判断链表是否相交//双指针遍历两个相交链表,如果有相遇点…

OpenSign:安全可靠的电子签名解决方案 | 开源日报 No.76

microsoft/Web-Dev-For-Beginners Stars: 71.5k License: MIT 这个开源项目是一个为期 12 周的全面课程&#xff0c;由微软云倡导者团队提供。它旨在帮助初学者掌握 JavaScript、CSS 和 HTML 的基础知识。每一节都包括预习和复习测验、详细的书面指南、解决方案、作业等内容。…

图解分布式事务实现原理(一)

参考 本文参考https://zhuanlan.zhihu.com/p/648556608&#xff0c;在小徐的基础上做了个人的笔记。 分布式事务场景 事务核心特性 在聊分布式事务之前&#xff0c;我们先理清楚有关于 “事务” 的定义. 事务 Transaction&#xff0c;是一段特殊的执行程序&#xff0c;其需…

OceanBase杨冰:完全自研,才能逢山开路遇水搭桥

11月16日&#xff0c;在OceanBase2023年度发布会上&#xff0c;OceanBase CEO杨冰介绍&#xff0c;中国数字经济的蓬勃发展催生了对分布式数据库的强大需求&#xff0c;这种需求也牵引了OceanBase坚定投入自主研发&#xff0c;从而推动树立了分布式数据库的四项新标准。 据了解…

PLC电力载波通讯,一种新的IoT通讯技术

前言: PLC-IoT 是 PLC 技术应用在物联场景的创新实践,有效解决电力线路信号干扰、衰减问题,支持 IP 化通信能力,使能终端设备智能化,构建智慧边缘联接。PLC让传统IoT有了更多的连接可能: 电力线通信技术适用的场景包括电力配用电网络、城市智慧路灯、交通路口信号灯、园…

Linux Shell 通配符 / glob 模式

1、概念 glob 模式&#xff08;globbing&#xff09;也被称之为 shell 通配符&#xff0c;名字的起源来自于 Unix V6 中的 /etc/glob &#xff08;详见 man 文档&#xff09;。glob 是一种特殊的模式匹配&#xff0c;最常见的是通配符拓展&#xff0c;也可以将 glob 模式设为精…

【ROS导航Navigation】五 | 导航相关的消息 | 地图 | 里程计 | 坐标变换 | 定位 | 目标点和路径规划 | 激光雷达 | 相机

致谢&#xff1a;ROS赵虚左老师 Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 参考赵虚左老师的实战教程 一、地图 nav_msgs/MapMetaData 地图元数据&#xff0c;包括地图的宽度、高度、分辨率等。 nav_msgs/OccupancyGrid 地图栅格数据&#…

js添加dom到指定div之后,并给添加的dom类名,然后设置其样式,以及el-popover层级z-index过高问题解决。

遇到一个需求,Vue项目做一个表格,要求表头与表格内容分开,如下效果所示,表头与表格有个高度间隔边距(箭头所示),因为默认我们的el-table的表头与内容是一起的: 思路:通过querySelector获取el-table__header-wrapper元素,通过createElement创建一个div,通过 newElem…

WebStorm配置less编译wxss或css

文章目录 前言先下载安装less程序&#xff1a;实参&#xff1a;要刷新的输出路径成功 前言 使用WebStorm写微信小程序&#xff0c;wxss写着很麻烦&#xff0c;就想着用less&#xff0c;接下来是配置less编译 先下载安装less npm install -g lessless会安装在你当前目录下(以D…

JPA概述

JPA&#xff08;Java Persistence API&#xff09;是一种用于在Java应用程序中管理关系型数据库的Java标准。它提供了一种将Java对象映射到数据库表的机制&#xff0c;并支持通过面向对象的方式来执行数据库操作。JPA的目标是简化数据库编程&#xff0c;并提供与底层数据库的解…

P1941 飞扬的小鸟

P1941 飞扬的小鸟 Description Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度&#xff0c;让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话&#xff0c;便宣告失败。 为了简化问题&am…

【数据结构】树与二叉树(十一):二叉树的层次遍历(算法LevelOrder)

文章目录 5.2.1 二叉树二叉树性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点&#xff0c;其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…

UE5中APlayerController属性与方法列表(翻译中......)

一、属性列表 类型 名称 描述 TObjectPtr< APa... AcknowledgedPawn 用于网络游戏&#xff0c;使客户端可以承认它拥有一个特定的卒。 TArray< FActive... ActiveForceFeedbackEffects TSharedPtr< str... ActiveHapticEffect_Gun TSharedPtr< str..…

大模型幻觉成应用落地难题 最新评测文心一言解决幻觉能力最好文心一言解决幻觉能力最好 或成产业应用首选

“林黛玉倒拔垂杨柳”、“月球上面有桂树”、“宋江字武松”……相信经常使用大语言模型都会遇到这样“一本正经胡说八道”的情况。这其实是大模型的“幻觉”问题&#xff0c;是大模型行业落地的核心挑战之一。例如幻觉会影响生成内容的可靠性&#xff0c;对于法律、金融、医疗…

算法-贪心算法-简单-买卖股票的最佳时机

记录一下算法题的学习4 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这…

预览PDF并显示当前页数

这里写目录标题 步骤实例实例效果图 步骤 1.安装依赖 npm install --save vue-pdf2.在需要的页面&#xff0c;引入插件 import pdf from vue-pdf3.使用 单页pdf可以直接使用 <pdf :src"获取到的pdf地址"></pdf>多页pdf通过循环实现 html标签部分 &l…

【机器学习基础】机器学习入门(1)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ &#x1f4a1;专栏介绍&#xff1a; 本专栏的第一篇文章&#xff0c;当然要介绍一下了~来说一下这个专栏的开…