2012-01-20 8 views
3

Под умолчанию тему Android У меня есть три пользовательских цветные кнопки с помощьюPorterDuff.Mode.MULTIPLY - Sence этого цвета преобразования в Android

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

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

Когда я переключаюсь на Theme.Holo по средства /values-v11/styles.xml

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

цвета изменено на:

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

Как я подозреваю, цвет кнопки по умолчанию был изменен в новой Хола тему и трансформируется с тем же параметром преобразования она дает неожиданные цвета. Я хотел бы сохранить исходные цвета. Для этого я должен знать правила преобразования PorterDuff.Mode.MULTIPLY. Все, что у меня есть на Android-документах:

[Sa * Da, Sc * Dc] 

Что это значит? Вероятно, S является точкой исходного растрового изображения (кнопка drawable button.getBackground()) и D - это «точка» моего пользовательского цвета ... Как я могу воспроизвести новый преобразованный цвет из этой формулы? Имеет ли это означает, что новый цвет N является:

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

или что !?

UPDATE: Я полагаю, что:

  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); 

, а затем applay такое же преобразование, какое я использовал до того, как была введена новая тема Холо. Для вычисления этого промежуточного цвета я должен решить две диофантовых уравнений в шестнадцатеричной системе, где Na, Nc находятся в интервале [0, FF] и т, п - целые числа:

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

Таким образом, промежуточный продукт цвет # 23898989.

К сожалению, при реализации полученного промежуточного цвета я все еще не получаю желаемых цветов в результате ... Где я ошибаюсь?

ответ

0

В этом случае источником является customColor, а местом назначения является фон кнопки. Однако ваша формула правильная.

+0

Спасибо за ответ! Пожалуйста, смотрите мое обновление выше! – isabsent

+0

что означает PorterDuff.Mode.MULITPLY? – jonney

 Смежные вопросы

  • Нет связанных вопросов^_^