Android पर रंगों को समझना (छह वर्ण)


212

मैं यह समझने की कोशिश कर रहा हूं कि एंड्रॉइड में रंग कैसे काम करते हैं। मेरा यह रंग मेरी पृष्ठभूमि के रूप में सेट है LinearLayout, और मुझे कुछ पारदर्शिता के साथ एक पृष्ठभूमि ग्रे मिलता है:

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

यदि मैं पिछले दो पात्रों को हटाता हूं (55) तो मुझे एक ठोस रंग मिलता है, जिससे पारदर्शिता खो जाती है। मैं एक ऐसा पेज खोजने की कोशिश कर रहा था, जहाँ मैं इस बारे में कुछ स्पष्टीकरण देख सकूँ, लेकिन मुझे यह नहीं मिला।

जवाबों:


170

यदि आप 6 हेक्स अंक प्रदान करते हैं, तो इसका मतलब है कि RGB (लाल, हरे और नीले रंग के प्रत्येक मूल्य के लिए 2 हेक्स अंक)।

यदि आप 8 हेक्स अंक प्रदान करते हैं, तो यह एआरजीबी (क्रमशः अल्फा, लाल, हरे और नीले रंग के प्रत्येक मूल्य के लिए 2 हेक्स अंक) है।

इसलिए अंतिम 55 को हटाकर आप A = B4, R = 55, G = 55, B = 55 (अधिकतर पारदर्शी ग्रे) से बदलकर R = B4, G = 55, B = 55 (एक पूर्णतः गैर -ट्रांसपर्स डस्की पिंकी)।

समर्थित स्वरूपों के लिए "रंग" प्रलेखन देखें ।


और कोड के माध्यम से textView पारदर्शिता कैसे सेट करें? मैं ARGB मान को इंट में बदलना चाहता हूं, इसलिए मैं इसे बाद में textView.setBackgroundColor (int color) विधि में उपयोग कर सकता हूं। क्या यह संभव है? इसे हासिल करने का कोई और तरीका?
मारेक

@Marek: एक ARGB मूल्य है एक पूर्णांक, प्रभावी ढंग से। डॉक्‍टर पर देखें ।android.com/reference/android/graphics/ Color.html ( <<पेज में खोजें)।
जॉन स्कीट

लेकिन इसे #AARRGGBB के रूप में नहीं बनाया गया है। फिर इसे 0xAARRGGBB के रूप में तैयार किया जाता है। यही कारण है कि मैं इसे setBackgroundColor विधि में उपयोग नहीं कर सका। मैं Color.parseColor ("# AARRGGBB)
Marek

@Marek: यह "स्वरूपित" नहीं है - यह सिर्फ एक पूर्णांक है। आप दस्तावेज़ में सूचीबद्ध विभिन्न बिट्स को जोड़ सकते हैं।
जॉन स्कीट

1
@ टोस्टर: नहीं, पारदर्शिता।
जॉन स्कीट

1184

Android हेक्साडेसिमल ARGB मानों का उपयोग करता है, जिन्हें #AARRGGBB के रूप में स्वरूपित किया जाता है। अक्षरों की पहली जोड़ी, AA, अल्फा चैनल का प्रतिनिधित्व करती है। आपको अपने दशमलव अपारदर्शिता मानों को एक हेक्साडेसिमल मान में परिवर्तित करना होगा। यहाँ कदम हैं:

अल्फा हेक्स मान प्रक्रिया

  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 के रूप में प्रकट होता है।

इस प्रकार आप अल्फा चैनल मान पाते हैं। मैंने आपके लिए मूल्यों की सूची को एक साथ रखने की स्वतंत्रता ली है। का आनंद लें!

हेक्स अपारदर्शिता मान

  • 100% - एफएफ
  • 95% - F2
  • 90% - ई 6
  • 85% - डी 9
  • 80% - सीसी
  • 75% - बीएफ
  • 70% - बी 3
  • 65% - ए 6
  • 60% - 99
  • 55% - 8 सी
  • 50% - 80
  • 45% - 73
  • 40% - 66
  • 35% - 59
  • 30% - 4 डी
  • 25% - 40
  • 20% - 33
  • 15% - 26
  • 10% - 1 ए
  • 5% - 0 डी
  • 0% - 00

37
Android सामग्री रंग डिज़ाइन मार्गदर्शिका पर आधारित: google.com/design/spec/style/… अधिक महत्वपूर्ण हेक्स अपारदर्शिता मान: 100%: FF 87%: DE 70%: B3 54%: 8A 30%: 4D 26%: 42 12 %: 1F
cn123h

यहां आपको सभी मान मिलते हैं: dtp-aus.com/hexadeci.htm और आप अल्फा 0-100 को संख्या 255 से विभाजित करके और इसे 100 से गुणा कर सकते हैं। आशा है कि यह आपकी मदद करता है
नीब फौदा

12% अल्फा के लिए echo "obase=16; ibase=10; (255*12+50)/100" | bc:। (+50 - निकटतम मूल्य के लिए गोलाई के लिए, यह वास्तव में 100/2 है)
सतर्कता

195

बंद जा रहे @BlondeFurious से जवाब है, यहाँ 100% 0% अल्फ़ा पर से प्रत्येक हेक्साडेसिमल मान पाने के लिए कुछ जावा कोड है:

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

एक जावास्क्रिप्ट संस्करण नीचे है:


आप Google को "हेक्स पर नंबर" भी दे सकते हैं, जहां 'नंबर' 0 और 255 के बीच का कोई भी मूल्य है।


36

Android सामग्री डिजाइन

ये पाठ रंग अस्पष्टता स्तर सेट करने के लिए रूपांतरण हैं।

  • 100%: एफएफ
  • 87%: डे
  • 70%: बी 3
  • 54%: 8 ए
  • 50%: 80
  • 38%: 61
  • 12%: 1 एफ

प्रकाश पृष्ठभूमि पर गहरा पाठ

यहां छवि विवरण दर्ज करें

  • प्राथमिक पाठ: DE000000
  • माध्यमिक पाठ: 8A000000
  • अक्षम पाठ, संकेत पाठ और आइकन: 61000000
  • विभाजक: 1F000000

काले रंग की पृष्ठभूमि पर सफेद पाठ

यहां छवि विवरण दर्ज करें

  • प्राथमिक पाठ: FFFFFFFF
  • माध्यमिक पाठ: B3FFFFFF
  • अक्षम पाठ, संकेत पाठ और आइकन: 80FFFFFF
  • विभाजक: 1FFFFFFF

यह सभी देखें

  • यहां कोई भी प्रतिशत देखें ।

बहुत बढ़िया काम, धन्यवाद! 7 जनवरी, 2019 तक, ये मूल्य अब आपके द्वारा लिंक किए गए Android सामग्री डिज़ाइन पृष्ठ में दिखाई नहीं देंगे। क्या ये अभी भी आधिकारिक अनुशंसित मूल्य हैं, और क्या कोई अन्य आधिकारिक स्रोत है जहां उन्हें बताया गया है? धन्यवाद!
theUnwokenFool

@ TheUwwokenFool, यह उत्तर अब पुराना हो सकता है। मुझे पाठ के लिए अस्पष्टता स्तर निर्धारित करने के बारे में कुछ भी दिखाई नहीं देता है। यदि कोई विरोधाभास प्रतीत होता है तो वर्तमान दिशानिर्देशों के साथ चलते हैं।
सुरगछ

17

Android पर, रंगों को RGB या ARGB के रूप में निर्दिष्ट किया जा सकता है।

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

RGB में आपके पास हर रंग (लाल, हरा, नीला) के लिए दो अक्षर हैं, और ARGB में आपके पास अल्फा चैनल के लिए दो अतिरिक्त वर्ण हैं।

इसलिए, यदि आपके पास 8 अक्षर हैं, तो यह ARGB है, जिसमें पहले दो वर्ण अल्फा चैनल को निर्दिष्ट करते हैं। यदि आप अग्रणी दो वर्णों को निकालते हैं तो यह केवल RGB (ठोस रंग, कोई अल्फ़ा / पारदर्शिता) नहीं है। यदि आप अपने जावा स्रोत कोड में एक रंग निर्दिष्ट करना चाहते हैं, तो आपको उपयोग करना होगा:

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

संदर्भ: अर्ग


7

8-अंकीय हेक्स रंग मान ARGB (अल्फा, रेड, ग्रीन, ब्लू) का प्रतिनिधित्व करता है, जबकि 6-अंकीय मान सिर्फ 100% अस्पष्टता (पूरी तरह से अपारदर्शी) मानता है और सिर्फ RGB मानों को परिभाषित करता है। तो इसे पूरी तरह से अपारदर्शी बनाने के लिए, आप या तो # FF555555, या सिर्फ # 555555 का उपयोग कर सकते हैं। प्रत्येक 2-अंकीय हेक्स मान एक बाइट है, 0-255 से मानों का प्रतिनिधित्व करता है।


-1

नए क्रोम संस्करण में (शायद 67.0.3396.62), सीएसएस हेक्स रंग इस मॉडल के प्रदर्शन का उपयोग कर सकते हैं,

उदाहरण के लिए:

div{
  background-color:#FF00FFcc;
}

cc अस्पष्टता है, लेकिन पुराना क्रोम उस मॉड का समर्थन नहीं करता है


StackOverflow, कृपया यात्रा में आपका स्वागत है दौरे । आपका उत्तर ओपी की मदद नहीं करता है क्योंकि उसने एंड्रॉइड में रंगों के बारे में पूछा था, क्रोम या एचटीएमएल नहीं।
Pe

@PeS कल, हाँ, लेकिन उनका एक ही प्रतिनिधित्व है।
Heicks
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.