2017-10-06 25 views
0

私のレイアウトにImageViewがあります。 setColorFilter()を使ってその画像に色を設定しました。今私はgetColorFilter()を使用して同じ色を取得しようとしています。しかし、それはColorFilterオブジェクトを返す。どのようにして16進数の色を抽出できますか?androidのgetColorFilterから色の16進値またはrgb値を取得する方法

これは私がイメージに色を設定しようとしています方法です:

image.setColorFilter(Color.parseColor("#ECECEC"), PorterDuff.Mode.MULTIPLY); 

今、私はColorFilterオブジェクトを返すされているコードの下に使用しています:

image.getColorFilter() 

をしかし、どのようにそこから色の16進値またはRGB値を取得するには?

答えて

4

色を取得する方法が最もよくGoogleに知られている理由のために隠されているようだ:

/** 
* Returns the ARGB color used to tint the source pixels when this filter 
* is applied. 
* 
* @see Color 
* @see #setColor(int) 
* 
* @hide 
*/ 
public int getColor() { 
    return mColor; 
} 

あなたはそれを格納する変数を使用することができます。

int colorFilterColor ; 

と色フィルタを設定中:

int color = Color.parseColor("#ECECEC"); 
image.setColorFilter(color , PorterDuff.Mode.MULTIPLY); 
colorFilterColor = color ; 

カラー取得の場合:

public int getFilterColor(){ 
return colorFilterColor ; 
} 
+0

これは良い考えです。しかし、なぜ 'getColorFilter()'がカラー値を返さないのですか?ちょうど知りたかった。 – XoXo

+0

@Hiren PorterDuffColorFilterのソースを調べたところ、色を取得するメソッドが隠されているようです –

+0

これは本当に悪いです:(@Coldfire – XoXo

関連する問題