2016-08-15 11 views
-1

Два разных способа настройки цветовых кодов для андроид-представления, возвращающего разные результаты, не знаете почему?Почему существует разница между цветами дисплея для R.color. <colorString> и Color.parseColor (colorString in hex) в android?

Попытка реструктурировать код и хотел преобразовать следующий фрагмент: Метод 1:

Paint p = new Paint(); 
p.setColor(Color.parseColor("#D32F2F")); 

немногому отформатированный способ получения результата с помощью color.xml в андроида

Способ 2:

Paint p = new Paint(); 
p.setColor(R.color.recyclerViewAnimationBackground); 

Color Name and display in colors.xml

Проблема заключается в том, что результаты, возвращаемые обоими, должны быть одинаковыми, но не уверены, почему они отличаются.

Метод 1: Возвращает Red Метод 2: Возвращает Violet

Я не блокирован в усилиях в области развития, но надеюсь получить некоторую помощь в понимании логики позади этого.

ответ

1

R.color.XYZ идентификатор ресурса (int, на самом деле), что определяет цветовые ресурсы.

Color.parseColor("#D32F2F") фактически возвращает Color.

Последнее, что вы хотите. Значение R.color может использоваться только там, где указывается ресурс .

андроид библиотека поддержки содержит следующий код, чтобы получить цвет для идентификатора ресурса:

int color = ContextCompat.getColor(context, colorResourceId); 
2
R.color.recyclerViewAnimationBackground 

дает вам идентификатор ресурсов, принадлежащий R.java.

Color.parseColor("#D32F2F") 

дает вам правильное значение, а не идентификатор (из R.java).

Использование

int color = ContextCompat.getColor(context, colorResourceId); 
+1

:-) Я люблю то, что мы добавили код библиотеки поддержки в то же время, на самом деле –

+1

ЛЮБИТ факт, что вы оба добавили это неправильно, полностью упустили точку с классом ContextCompat. –

+1

@Amit: Большое спасибо, это помогает :) – sumandas