การทำความเข้าใจสีบน Android (หกตัวอักษร)


212

ฉันพยายามทำความเข้าใจว่าสีทำงานอย่างไรใน Android ฉันมีชุดสีนี้เป็นพื้นหลังของฉันLinearLayoutและฉันได้รับพื้นหลังสีเทาด้วยความโปร่งใส:

<gradient android:startColor="#b4555555" android:endColor="#b4555555"
 android:angle="270.0" />

ถ้าฉันลบตัวละครสองตัวสุดท้าย (55) ฉันได้สีทึบเสียความโปร่งใส ฉันพยายามค้นหาหน้าเว็บที่ฉันสามารถดูคำอธิบายบางอย่างเกี่ยวกับเรื่องนี้ แต่ฉันไม่พบมัน

คำตอบ:


170

หากคุณระบุเลขฐานสิบหก 6 หลักนั่นหมายถึง RGB (2 หลักฐานสิบหกสำหรับแต่ละค่าของสีแดงสีเขียวและสีน้ำเงิน

หากคุณระบุเลขฐานสิบหก 8 หลักนั่นคือ ARGB (ตัวเลขฐานสิบหก 2 หลักสำหรับแต่ละค่าของอัลฟาแดงเขียวและน้ำเงินตามลำดับ)

ดังนั้นเมื่อลบ 55 สุดท้ายคุณจะเปลี่ยนจาก A = B4, R = 55, G = 55, B = 55 (สีเทาโปร่งใสส่วนใหญ่) เป็น R = B4, G = 55, B = 55 โปร่งใสสีชมพูมืดมนสีชมพู)

ดูเอกสาร "สี"สำหรับรูปแบบที่รองรับ


และวิธีการตั้งค่า textView โปร่งใสผ่านรหัส? ฉันต้องการแปลงค่า ARGB เป็น int ดังนั้นฉันสามารถใช้งานได้ในภายหลังใน textView.setBackgroundColor (int color) เป็นไปได้ไหม? มีวิธีอื่นในการบรรลุหรือไม่
— Marek

@Marek: ค่า ARGB เป็น int ได้อย่างมีประสิทธิภาพ ดูเอกสารได้ที่developer.android.com/reference/android/graphics/Color.html (ค้นหา<<ในหน้า)
— Jon Skeet

แต่ไม่ได้จัดรูปแบบเป็น #AARRGGBB มันถูกจัดรูปแบบเป็น 0xAARRGGBB นั่นเป็นเหตุผลที่ฉันไม่สามารถใช้งานได้ในเมธอด setBackgroundColor ฉันสามารถใช้ Color.parseColor ("# AARRGGBB)
— Marek

@Marek: มันไม่ใช่ "ฟอร์แมต" - เป็นเพียงจำนวนเต็ม คุณสามารถรวมบิตต่าง ๆ ตามที่ระบุไว้ในเอกสารประกอบ
— Jon Skeet

1
@ เครื่องปิ้งขนมปัง: ไม่โปร่งใส
— Jon Skeet

1184

Android ใช้ค่า ARGB เลขฐานสิบหกซึ่งจัดรูปแบบเป็น #AARRGGBB ตัวอักษรคู่แรกนั้นคือ AA แสดงถึงช่องอัลฟา คุณต้องแปลงค่าความทึบทศนิยมของคุณให้เป็นค่าเลขฐานสิบหก นี่คือขั้นตอน:

กระบวนการค่าอัลฟ่า Hex

  1. ใช้ความทึบของคุณเป็นค่าทศนิยมและคูณด้วย 255 ดังนั้นถ้าคุณมีบล็อกที่ทึบ 50% ค่าทศนิยมจะเป็น. 5 ตัวอย่างเช่น: .5 x 255 = 127.5
  2. เศษส่วนจะไม่แปลงเป็นเลขฐานสิบหกดังนั้นคุณต้องปัดเศษตัวเลขขึ้นหรือลงเป็นจำนวนเต็ม ตัวอย่างเช่น: 127.5 รอบสูงสุด 128 55.25 รอบลดลงเหลือ 55
  3. ป้อนค่าทศนิยมของคุณในตัวแปลงทศนิยมเป็นฐานสิบหกเช่นhttp://www.binaryhexconverter.com/decimal-to-hex-converterและเปลี่ยนค่าของคุณ
  4. หากคุณได้รับเพียงค่าเดียวให้นำหน้าด้วยค่าศูนย์ ตัวอย่างเช่นหากคุณพยายามรับความทึบ 5% และคุณจะผ่านกระบวนการนี้คุณจะพบกับค่าเลขฐานสิบหกของ D เพิ่มศูนย์หน้ามันเพื่อให้ปรากฏเป็น 0D

นั่นคือวิธีที่คุณพบค่าช่องอัลฟา ฉันใช้เสรีภาพในการรวบรวมรายการของค่าสำหรับคุณ สนุก!

ค่าความทึบแสง Hex

  • 100% - FF
  • 95% - F2
  • 90% - E6
  • 85% - D9
  • 80% - CC
  • 75% - BF
  • 70% - B3
  • 65% - A6
  • 60% - 99
  • 55% - 8C
  • 50% - 80
  • 45% - 73
  • 40% - 66
  • 35% - 59
  • 30% - 4D
  • 25% - 40
  • 20% - 33
  • 15% - 26
  • 10% - 1A
  • 5% - 0D
  • 0% - 00

37
ฐานบนคู่มือการออกแบบสีของวัสดุ Android: google.com/design/spec/style/… คีย์ค่าความทึบ Hex ที่สำคัญเพิ่มเติม: 100%: FF 87%: DE 70%: B3 54%: 8A 30%: 4D 26%: 42 12 %: 1F
— cn123h

ที่นี่คุณจะพบค่าทั้งหมด: dtp-aus.com/hexadeci.htmและคุณสามารถรับอัลฟา 0-100 โดยหารตัวเลขด้วย 255 และคูณด้วย 100 ด้วยหวังว่ามันจะช่วยคุณได้
— Niib Fouda

สำหรับ 12% echo "obase=16; ibase=10; (255*12+50)/100" | bcอัลฟา: (+50 - สำหรับการปัดเศษเป็นค่าที่ใกล้เคียงที่สุดคือ 100/2 จริง ๆ )
— vigilancer

195

ออกคำตอบจาก @BlondeFuriousนี่คือโค้ด Java บางส่วนเพื่อรับค่าเลขฐานสิบหกแต่ละค่าจาก 100% ถึง 0% alpha:

for (double i = 1; i >= 0; i -= 0.01) {
    i = Math.round(i * 100) / 100.0d;
    int alpha = (int) Math.round(i * 255);
    String hex = Integer.toHexString(alpha).toUpperCase();
    if (hex.length() == 1)
        hex = "0" + hex;
    int percent = (int) (i * 100);
    System.out.println(String.format("%d%% — %s", percent, hex));
}

เอาท์พุท:

100% — FF
99% — FC
98% — FA
97% — F7
96% — F5
95% — F2
94% — F0
93% — ED
92% — EB
91% — E8
90% — E6
89% — E3
88% — E0
87% — DE
86% — DB
85% — D9
84% — D6
83% — D4
82% — D1
81% — CF
80% — CC
79% — C9
78% — C7
77% — C4
76% — C2
75% — BF
74% — BD
73% — BA
72% — B8
71% — B5
70% — B3
69% — B0
68% — AD
67% — AB
66% — A8
65% — A6
64% — A3
63% — A1
62% — 9E
61% — 9C
60% — 99
59% — 96
58% — 94
57% — 91
56% — 8F
55% — 8C
54% — 8A
53% — 87
52% — 85
51% — 82
50% — 80
49% — 7D
48% — 7A
47% — 78
46% — 75
45% — 73
44% — 70
43% — 6E
42% — 6B
41% — 69
40% — 66
39% — 63
38% — 61
37% — 5E
36% — 5C
35% — 59
34% — 57
33% — 54
32% — 52
31% — 4F
30% — 4D
29% — 4A
28% — 47
27% — 45
26% — 42
25% — 40
24% — 3D
23% — 3B
22% — 38
21% — 36
20% — 33
19% — 30
18% — 2E
17% — 2B
16% — 29
15% — 26
14% — 24
13% — 21
12% — 1F
11% — 1C
10% — 1A
9% — 17
8% — 14
7% — 12
6% — 0F
5% — 0D
4% — 0A
3% — 08
2% — 05
1% — 03
0% — 00

เวอร์ชัน JavaScript อยู่ด้านล่าง:


นอกจากนี้คุณยังสามารถ Google "number to hex" โดยที่ 'number' เป็นค่าใด ๆ ระหว่าง 0 ถึง 255


36

การออกแบบวัสดุ Android

นี่คือการแปลงสำหรับการตั้งค่าระดับความทึบของสีข้อความ

  • 100%: FF
  • 87%: DE
  • 70%: B3
  • 54%: 8A
  • 50%: 80
  • 38%: 61
  • 12%: 1F

ข้อความสีเข้มบนพื้นหลังสีอ่อน

ป้อนคำอธิบายรูปภาพที่นี่

  • ข้อความหลัก: DE000000
  • ข้อความรอง: 8A000000
  • ข้อความที่ปิดใช้งานข้อความคำใบ้และไอคอน: 61000000
  • วงเวียน: 1F000000

ตัวอักษรสีขาวบนพื้นหลังสีเข้ม

ป้อนคำอธิบายรูปภาพที่นี่

  • ข้อความหลัก: FFFFFFFF
  • ข้อความรอง: B3FFFFFF
  • ข้อความที่ปิดใช้งานข้อความคำใบ้และไอคอน: 80FFFFFF
  • วงเวียน: 1FFFFFFF

ดูสิ่งนี้ด้วย

  • เงยหน้าขึ้นมองเปอร์เซ็นต์ใด ๆที่นี่

เยี่ยมมากขอบคุณ! ตั้งแต่วันที่ 7 มกราคม 2019 ค่าเหล่านี้จะไม่ปรากฏในหน้าการออกแบบวัสดุ Android ที่คุณเชื่อมโยงอีกต่อไป เหล่านี้ยังคงเป็นค่าแนะนำอย่างเป็นทางการและมีแหล่งที่มาอย่างเป็นทางการอื่นที่พวกเขาจะระบุไว้? ขอบคุณ!
— TheUnwokenFool

@TheUnwokenFool คำตอบนี้อาจล้าสมัยแล้ว ฉันไม่เห็นอะไรเลยเกี่ยวกับการตั้งค่าระดับความทึบของข้อความ หากปรากฏว่ามีข้อขัดแย้งใด ๆ ให้ไปตามแนวทางปฏิบัติปัจจุบัน
— Suragch

17

บน Android สามารถระบุสีเป็น RGB หรือ ARGB

http://en.wikipedia.org/wiki/ARGB

ใน RGB คุณมีอักขระสองตัวสำหรับทุกสี (แดงเขียวน้ำเงิน) และใน ARGB คุณมีสองตัวอักษรเพิ่มเติมสำหรับช่องอัลฟา

ดังนั้นถ้าคุณมี 8 ตัวอักษรมันคือ ARGB โดยสองตัวแรกจะระบุช่องอัลฟา หากคุณลบอักขระสองตัวที่นำหน้าออกจะเป็นเพียง RGB (สีทึบไม่มีตัวอักษร / โปร่งใส) หากคุณต้องการระบุสีในซอร์สโค้ด Java ของคุณคุณต้องใช้:

int Color.argb (int alpha, int red, int green, int blue)

alpha  Alpha component [0..255] of the color
red    Red component [0..255] of the color
green  Green component [0..255] of the color
blue   Blue component [0..255] of the color

การอ้างอิง: argb


7

ค่าสีฐานสิบหก 8 หลักคือการแทนค่า ARGB (อัลฟ่า, แดง, เขียว, น้ำเงิน) ในขณะที่ค่า 6 หลักจะถือว่าเป็นความทึบ 100% (ทึบอย่างเต็มที่) และกำหนดเพียงค่า RGB ดังนั้นเพื่อให้สิ่งนี้ทึบแสงอย่างสมบูรณ์คุณสามารถใช้ # FF555555 หรือ # 555555 แต่ละค่าเลขฐานสิบหก 2 หลักคือหนึ่งไบต์ซึ่งแทนค่าตั้งแต่ 0-255


-1

ที่ chrome รุ่นใหม่ (อาจเป็น 67.0.3396.62), CSS hex hex สามารถใช้การแสดงโมเดลนี้

เช่น:

div{
  background-color:#FF00FFcc;
}

ccมีความทึบแต่โครเมี่ยมเก่าไม่รองรับตัวดัดแปลงนั้น


ยินดีต้อนรับสู่ StackOverflow โปรดเยี่ยมชมการท่องเที่ยว การตอบกลับของคุณไม่ได้ช่วย OP ในขณะที่เขาถามเกี่ยวกับสีใน Android ไม่ใช่ Chrome หรือ HTML
— PeS

@PeS เมื่อวานใช่ แต่มีตัวแทนเหมือนกัน
— Heicks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.