2016-08-15 4 views
-1

異なる結果を返すアンドロイドビューのカラーコードを設定するには2つの方法がありますが、それはなぜですか? 方法1::R.colorの表示色に違いがあるのはなぜですか?アンドロイドの<colorString>とColor.parseColor(colorString in hex)

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

アンドロイド

方法2でcolor.xmlを使用して、結果を得るための小さなフォーマットされた方法にコードを再構築しようとすると、次のコードを変換したい

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

Color Name and display in colors.xml

問題は、両方で返された結果が同じである必要がありますが、それらが異なる理由は不明です。

方法1:レッド 方法2を返します:バイオレット

私は開発作業にブロックされたが、この背後にある論理を理解する上でいくつかの助けを得ることを期待していないを返します。

答えて

1

R.color.XYZ色のリソースを識別しリソース識別子int、本当に)です。

Color.parseColor("#D32F2F")は、実際にはColorを返します。

後者はあなたが望むものです。 R.colorの値は、のリソースが参照されている場合にのみ使用できます。

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

は、R.javaからのリソースIDを提供します。

Color.parseColor("#D32F2F") 

正しい値は、(R.javaの)任意のIDではありません。

使用は

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

私たちは同時にサポートライブラリのコードを追加しているという事実を愛する:-)、 –

+1

は愛:

アンドロイドサポートライブラリは、リソース識別子の色を取得するには、次のコードが含まれています事実、あなたは両方ともそれを間違って追加しました - ContextCompatクラスを持っている点を完全に見逃しました。 –

+1

@Amit:ありがとう、それは役に立ちます:) – sumandas

関連する問題