В теме Android по умолчанию у меня есть три пользовательских цветных кнопки с помощью
button.getBackground().setColorFilter(customColor, PorterDuff.Mode.MULTIPLY);
кнопки 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
Как я подозреваю, цвет кнопки по умолчанию был изменен в новой теме Holo и, будучи преобразованным с тем же параметром преобразования, дает неожиданные цвета. Я хотел бы сохранить исходные цвета. Для этого мне нужно знать правила преобразования PorterDuff.Mode.MULTIPLY . Все, что у меня есть из Android документов, это
[Sa * Da, Sc * Dc]
Что это значит? Возможно, S - это точка исходного растрового изображения (кнопка drawable button.getBackground ()), а D - это "точка" моего customColor ... Как я могу воспроизвести новый преобразованный цвет из этой формулы? Означает ли это, что новый цвет N :
[Na, Nr, Ng, Nb] = [Sa * Da, Sr * Dr, Sg * Dg, Sb * Db]
или что!?
UPDATE:
Я полагаю, что:
btn_default_normal.9.png использовалось для вышеуказанных кнопок в простой теме Android
btn_default_normal_holo_dark.9.png используется для голографической темы Android
Чтобы устранить проблему с цветами в Holo Theme, я хочу сделать промежуточное преобразование из второго (Holo) цвета # 66999999 в первый цвет # 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
Следовательно, промежуточный цвет равен # 23898989 .
К сожалению, при реализации полученного промежуточного цвета я все равно не получаю желаемых цветов в результате ... Где я не прав?