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

PorterDuff.Mode.MULTIPLY——Android中这种颜色转换的意义,android,background-color,argb,colortransform,porter-duff,Android,Background Color,Argb,Colortransform,Porter Duff,在默认的Android主题下,我有三个自定义的彩色按钮 button.getBackground().setColorFilter(customColor, PorterDuff.Mode.MULTIPLY); 当我通过/values-v11/styles.xml切换到Theme.Holo时 <style name="Theme" parent="android:Theme.Holo"> 这意味着什么?可能,S是源位图的一个点(button drawable button.g

在默认的Android主题下,我有三个自定义的彩色按钮

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

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

<style name="Theme" parent="android:Theme.Holo"> 
这意味着什么?可能,S是源位图的一个点(button drawable button.getBackground()),而D是我的自定义颜色的一个“点”。。。如何从该公式复制新的变换颜色?这是否意味着新颜色N是:

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

更新: 我想:

  • btn\u default\u normal.9.png用于简单Android主题中的上述按钮

  • btn\u default\u normal\u holo\u dark.9.png用于Android holo主题

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

    button.getBackground().setColorFilter(some_Intermediate_Color, PorterDuff.Mode.MULTIPLY);
    
    然后应用我在引入新全息主题之前使用的相同转换。为了计算这个中间色,我必须求解两个十六进制的丢番图方程,其中Na,Nc在区间[0,FF]内,m,n-是整数:

    66*Na = F2 + 100*m; => Na = 23
    99*Nc = E1 + 100*n; =>  Nc = 89
    
    因此,中间色是#238989


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

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

    但是PorterDuff.Mode.MULITPLY是什么意思?
    66*Na = F2 + 100*m; => Na = 23
    99*Nc = E1 + 100*n; =>  Nc = 89