2016-08-08 21 views

回答

4

一些程序員來自有明顯的24種色彩更多的經驗。有時它在Android中很重要,alpha在renderscript中的一些更直接的操作中並沒有被掩蓋。正如你想'0xff4ca665'告訴系統你想要'0x4ca665'並且希望其他東西能在後面正確地掩蓋它似乎是一個粗略的賭注,甚至不能浪費一個時鐘週期。

Somethings不採用resID鏈接到顏色或給你一個像View.setBackgroundColor(int)這樣的選項,其中顏色的int用像這樣的32位整數編碼。

具體來說,這是如何在24位色的alpha掩碼工作。它們被格式化爲一個32位整數,如0bAAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB所以RGB的每種顏色都可以獲得8位,並且對於隨後使用PorterDuff混合渲染結果的Alpha進行8位掩碼。 Android純粹將整體顏色存儲爲整數,因此使用這些顏色是一個好主意,如果這就是最終結果。

當你這樣做在十六進制那樣你得到兩個數字爲每個事情0xAARRGGBB和AA設置爲ff意味着255或完全不透明。不需要相信顏色不會完全不透明。有很多時候,如果你把它們保留爲00,你會得到一張空白圖像,或者完全透明。知道哪些時間重要是不值得的,如果我們只是公開包括阿爾法。

Android還有一些其他方案,它們存儲顏色簡而言之很重要。即4444存儲阿爾法和每個顏色4位。和565,其中5位存儲紅色,6位存儲綠色,5位存儲藍色。兩者最終總共使用16位而不是32位。但是,很多編碼方案使用8888,這是非常標準的,因此很常見的是人們參考這樣的顏色,特別是在十六進制中。

+1

也有簡短的符號'#argb'和'#rgb',用於十六進制由相同數字組成(所有組件必須具有此特性)時使用。因此,例如'#ff88bbcc'可以像'#f8bc'或'#8bc'那樣重寫。 –

+0

這些實際上是基於文本的。儘管明確地偏愛某些東西,但如果您的操作需要每個時鐘週期都可能不值得,它們需要通過資源推動。作爲int color = #ffa;不會做任何事情。如果你想要,而且你不想浪費一個時鐘週期來獲得它,那麼你將它渲染爲color = 0xFFFFFFAA – Tatarize

2

#ff4ca665相同的原因...表示ARGB color value

如果在顏色XML中使用上述顏色,則前導ff並非完全必要,因爲它們是完全不透明的。

0xff4ca665將是等效的Java表示。

在任何情況下,你會得到下面的顏色

body { 
 
    background: #4ca665; 
 
}

+1

具體來說,前兩個十六進制數字表示alpha:應用於顏色的透明度。 – CommonsWare

+0

Java中十六進制表示所需的前導'ff' _is_,這是OP詢問的內容。 「0xff4ca665」與「0x4ca665」不一樣,它是透明的。 –

2

一些Android APIs如View.setBackgroundColor()需要ARGB格式的彩色整數。因此0xff4ca665表示完全不透明的RGB顏色#4ca665,而整數0x4ca665等於0x004ca665,因此表示完全透明的顏色。

相關問題