2016-08-08 5 views

答えて

4

を取得するいくつかのプログラマが明白な24ビットの色でより多くの経験を持っているから来ます。また、Androidで重要なことがある場合もありますが、アルファはレンダスクリプトの一部のより直接的な操作でマスクされません。そして、あなたが '0x4ca665'を望むようにシステムに "0xff4ca665"を欲しいと思って、後でそれを正しくマスクすることが文字通りクロックサイクルを無駄にすることのない何かのスケッチ賭けのように思えます。

SomethingsはresIDリンクを色に変換せず、View.setBackgroundColor(int)のようなオプションを与えません。ここで、色のintは32ビット整数でエンコードされます。

これは、24ビットカラーのアルファマスキングがどのように機能するかを具体的に示したものです。それらは32ビット整数としてフォーマットされます。0bAAAAAAAARRRRRRRGGGGGGGGBBBBBBBB RGBの各色は8ビットになります。後でPorterDuffブレンディングを使用して結果をレンダリングする場合は、アルファに対して8ビットのマスキングが行われます。 Androidは色を純粋に整数として保存するので、これを使用することは良いアイデアです。

16進数で0xAARRGGBBを2桁、AAをffに設定すると255か完全に不透明になります。色を完全に不透明にしないようにする必要はありません。 00のようにそれらを残すと、空白の画像、または完全に透明な画像で終わることが多くあります。私たちが明白にアルファを含んでいれば、それが重要な時を知ることはそれに値するものではありません。

Androidには、短くて色を保存するいくつかのスキームがあります。即ち、アルファ及び各色を4ビットで記憶する4444。 5ビットの赤、6ビットの緑、5ビットの青を格納する565。どちらも合計で32ビットではなく合計16ビットを使用します。しかし、非常に多くのエンコーディングスキームではかなり標準的な8888を使用しています。そのような色を参照する人々、特に16進数を参照するのは非常に一般的です。

+1

さらに短い表記 '#argb'と'#rgb'があります。これは、16進数が同じ数字で構成されている場合に使用されます(すべてのコンポーネントにこの特性が必要です)。たとえば、 '#ff88bbcc'は'#f8bc'や '#8bc'のように書き換えることができます。 –

+0

これらは実際にはテキストベースです。また、何かのためにはっきりと好まれていますが、リソースを使いこなす必要があります。操作が1クロックサイクルごとに必要な場合は、その価値がないかもしれません。 int color = #ffa;とします。何もしません。あなたがそれを望んでいて、それを得るために1クロックサイクルを無駄にしたくないなら、それをcolor = 0xFFFFFFAA – Tatarize

2

#ff4ca665と同じ理由... ARGB color valueを示す。

上記の色XMLを使用している場合、先頭のffは完全に不透明になっているため完全には必要ではありません。

0xff4ca665は同等のJava表現です。

いずれの場合においても

、あなたは以下の色

body { 
 
    background: #4ca665; 
 
}

+1

具体的には、最初の2桁の16進数がアルファを表します:どの程度の透明度をカラーに適用しますか? – CommonsWare

+0

Javaの16進表現に必要な主要な 'ff' _isは、OPが要求しているものです。 '0xff4ca665'は透明である' 0x4ca665'と同じではありません。 –

2

View.setBackgroundColor()のようなアンドロイドのAPIには、ARGB形式のカラー整数が必要です。したがって、0xff4ca665は完全に不透明なRGBカラー#4ca665を表し、整数0x4ca6650x004ca665に等しく、したがって完全に透明なカラーを表します。

関連する問題