gpt4 book ai didi

android - PorterDuff.Mode.MULTIPLY - Android 中这种颜色转换的意义

转载 作者:太空狗 更新时间:2023-10-29 15:19:55 27 4
gpt4 key购买 nike

在默认的 Android 主题下,我通过

设置了三个自定义彩色按钮
button.getBackground().setColorFilter(customColor, PorterDuff.Mode.MULTIPLY);

buttons http://img94.imageshack.us/img94/1723/themew.jpg

当我通过/values-v11/styles.xml切换到Theme.Holo时

<style name="Theme" parent="android:Theme.Holo"> 

颜色更改为:

http://img710.imageshack.us/img710/1659/themeholo.jpg

正如我所怀疑的那样,默认按钮的颜色在新的全息主题中发生了变化,并且使用相同的转换参数进行转换,它给出了意想不到的颜色。我想保留初始颜色。为此,我必须了解 PorterDuff.Mode.MULTIPLY 的转换规则。我从 Android 文档中得到的所有信息都是

[Sa * Da, Sc * Dc] 

这是什么意思?可能,S 是源位图的一个点(按钮可绘制 button.getBackground()),D 是我的 customColor 的一个“点”...我怎样才能重现新的从这个公式转换颜色?这是否意味着新颜色 N 是:

[Na, Nr, Ng, Nb] = [Sa * Da, Sr * Dr, Sg * Dg, Sb * Db] 

或者什么!?

更新:我想:

  1. btn_default_normal.9.png 用于简单 Android 主题中的上述按钮

  2. btn_default_normal_holo_dark.9.png用于Android Holo Theme

为了解决全息主题下的颜色问题,我想从第二种(全息)颜色#66999999到第一种颜色#F2E1E1E1进行中间转换:

button.getBackground().setColorFilter(some_Intermediate_Color, PorterDuff.Mode.MULTIPLY);

然后应用我在引入新的 Holo 主题之前使用的相同转换。要计算这种中间颜色,我必须在十六进制系统中求解两个丢番图方程,其中 Na、Nc 在 [0, FF] 区间内,m、n - 是整数:

66*Na = F2 + 100*m; => Na = 23
99*Nc = E1 + 100*n; => Nc = 89

因此,中间色为#23898989

不幸的是,实现获得的中间颜色结果我仍然没有得到想要的颜色...我哪里错了?

最佳答案

在这种情况下,源是 customColor,目标是按钮的背景。不过您的公式是正确的。

关于android - PorterDuff.Mode.MULTIPLY - Android 中这种颜色转换的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8945796/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com