2

レイアウトの背景色の色を比較するifステートメントを作成したいと思います。次のようになります。

 RelativeLayout screen = (RelativeLayout) findViewById (R.id.screen);
 if(screen.getBackgroundColor() == "#FFFFFFFF"){
    //do something...
 }
 else{
   //do something else...
 }

背景色の取得方法がわかりません。私は色を設定しています:screen.setBackgroundColor(Color.parseColor("#000000"));

4

2 に答える 2

3

直接的なものはありgetBackgroundColor()ませんが、本当に色の値を知る必要がある場合は、ビューのPaintオブジェクトを取得して、そこから色を取得する必要があります。

Paint viewPaint = ((PaintDrawable) view.getBackground()).getPaint();
int colorARGB = viewPaint.getColor();

これにはアルファも含まれていることに注意してください。比較には注意してください(または、RGBを比較する必要がある場合はアルファを削除してください。

int colorRGB = colorARGB & 0x00ffffff;

これはすべてのAPIレベルで機能します。

編集

比較については、色を取得したら、Color.parseColor()を使用して、通常の方法で結果を比較できます。

if( colorRGB == Color.parseColor("#ffffff") ) {
   // matches...
}

またはARGBと同じ:

if( colorARGB == Color.parseColor("#ffffffff") ) {
   // matches...
}

また、これを頻繁に行う場合(list adapterのように)、一度解析して結果を保存し、再利用します。

于 2012-11-02T12:25:28.617 に答える
2

APIレベル11以降を使用できますか?にキャストしてscreen.getBackground()からColorDrawable、メソッドを呼び出すことができますgetColor()。残念ながら、このメソッドはAPIレベル<11では使用できません。

お役に立てれば!

于 2012-11-02T12:27:39.740 に答える