Android'de renkleri anlama (altı karakter)


212

Android'de renklerin nasıl çalıştığını anlamaya çalışıyorum. Bu renk benim arka plan olarak ayarlanmış LinearLayoutve bazı şeffaflık ile bir arka plan gri olsun:

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

Son iki karakteri kaldırırsam (55) saydamlığı kaybederek düz bir renk alırım. Bununla ilgili bazı açıklamalar görebildiğim bir sayfa bulmaya çalışıyordum, ama bulamadım.

Yanıtlar:


170

6 onaltılık basamak sağlarsanız, RGB (her kırmızı, yeşil ve mavi değeri için 2 onaltılık basamak) anlamına gelir.

8 onaltılık basamak sağlarsanız, bu bir ARGB (sırasıyla alfa, kırmızı, yeşil ve mavi değerlerinin her biri için 2 onaltılık basamak).

Böylece son 55'i kaldırarak A = B4, R = 55, G = 55, B = 55 (çoğunlukla şeffaf gri), R = B4, G = 55, B = 55 (tam olmayan - şeffaf esmer pembemsi).

Bkz "Renk" belgelere desteklenen formatlar için.


Ve textView şeffaflığını kodla nasıl ayarlayabilirim? Daha sonra textView.setBackgroundColor (int renk) yönteminde kullanabilirsiniz böylece ARGB değerini int dönüştürmek istiyorum. Mümkün mü? Bunu başarmanın başka bir yolu var mı?
Marek

@Marek: bir ARGB değeri olan etkin bir int. Developer.android.com/reference/android/graphics/Color.html adresindeki dokümanlara bakın ( <<sayfada bulabilirsiniz ).
Jon Skeet

ancak #AARRGGBB olarak biçimlendirilmemiş. Daha sonra 0xAARRGGBB olarak biçimlendirilir. Bu yüzden setBackgroundColor yönteminde kullanamadım. Color.parseColor ("# AARRGGBB)
Marek

@Marek: "Biçimlendirilmiş" değil - sadece bir tam sayı. Çeşitli bitleri belgelerde listelendiği gibi birleştirebilirsiniz.
Jon Skeet

1
@ Toaster: Hayır, şeffaflık.
Jon Skeet

1184

Android, #AARRGGBB olarak biçimlendirilen onaltılık ARGB değerlerini kullanır. Bu ilk harf çifti, AA, alfa kanalını temsil eder. Ondalık opaklık değerlerinizi onaltılık bir değere dönüştürmelisiniz. İşte adımlar:

Alfa Hex Değer Süreci

  1. Opaklığınızı ondalık değer olarak alın ve 255 ile çarpın. Dolayısıyla,% 50 opak olan bir bloğunuz varsa ondalık değer .5 olur. Örneğin: .5 x 255 = 127,5
  2. Kesir onaltılık biçime dönüştürülmez, bu nedenle sayınızı en yakın tam sayıya yukarı veya aşağı yuvarlamanız gerekir. Örneğin: 127,5, 128'e kadar yuvarlar; 55,25'e 55 yuvarlar.
  3. Ondalık değerinizi http://www.binaryhexconverter.com/decimal-to-hex-converter gibi ondalık-onaltılı bir dönüştürücüye girin ve değerlerinizi dönüştürün.
  4. Yalnızca tek bir değer alırsanız, önüne sıfır ekleyin. Örneğin,% 5 opaklık elde etmeye çalışıyorsanız ve bu işlemden geçiyorsanız, D'nin onaltılık değeri ile sonuçlanırsınız. 0D olarak görünmesi için önüne sıfır ekleyin.

Alfa kanalı değerini bu şekilde bulabilirsiniz. Sizin için bir değerler listesi oluşturma özgürlüğünü aldım. Zevk almak!

Onaltılık Opaklık Değerleri

  • % 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 için temel Malzeme renk tasarım kılavuzu: google.com/design/spec/style/… Daha fazla anahtar Hex Opaklık Değerleri: 100%: FF 87%: DE 70%: B3 54%: 8A 30%: 4D 26%: 42 12 %: 1F
cn123h

Burada tüm değerleri bulabilirsiniz: dtp-aus.com/hexadeci.htm ve numarayı 255'e bölerek ve 100 ile çarparak alfa 0-100 alabilirsiniz. umarım size yardımcı olur
Niib Fouda

% 12 alfa için: echo "obase=16; ibase=10; (255*12+50)/100" | bc. (+50 - en yakın değere yuvarlamak için, aslında 100/2)
uyanık

195

Çektin @BlondeFurious gelen cevap , burada% 100 alfa% 0 ila her onaltılık değerini almak için bazı Java kodu:

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));
}

Çıktı:

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

Bir JavaScript sürümü aşağıdadır:


Ayrıca, "sayı" 0 ile 255 arasında herhangi bir değer olduğunda, yalnızca Google "sayıdan onaltılıya" da ulaşabilirsiniz.


36

Android Materyal Tasarımı

Bunlar, metin rengi opaklık düzeylerini ayarlamak için kullanılan dönüşümlerdir.

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

Açık renkli koyu metin

resim açıklamasını buraya girin

  • Birincil metin: DE000000
  • İkincil metin: 8A000000
  • Devre dışı bırakılmış metin, ipucu metni ve simgeler: 61000000
  • Bölücüler: 1F000000

Koyu arka planlar üzerinde beyaz metin

resim açıklamasını buraya girin

  • Birincil metin: FFFFFFFF
  • İkincil metin: B3FFFFFF
  • Devre dışı bırakılmış metin, ipucu metni ve simgeler: 80FFFFFF
  • Bölücüler: 1FFFFFFF

Ayrıca bakınız

  • Burada herhangi bir yüzde arayın .

Harika iş, teşekkürler! 7 Ocak 2019 itibariyle, bu değerler artık bağladığınız Android Materyal Tasarımı sayfasında görünmüyor. Bunlar hala resmi olarak önerilen değerler mi ve belirtildikleri başka bir resmi kaynak var mı? Teşekkürler!
TheUnwokenFool

@TheUnwokenFool, bu cevap şimdi eski olabilir. Metin için donukluk düzeylerini ayarlama konusunda da hiçbir şey görmüyorum. Herhangi bir çelişki varsa, mevcut yönergeleri izleyin.
Suragch

17

Android'de renkler RGB veya ARGB olarak belirtilebilir.

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

RGB'de her renk için iki karakteriniz (kırmızı, yeşil, mavi) ve ARGB'de alfa kanalı için iki karakter daha var.

Yani, 8 karakteriniz varsa, ilk iki karakter alfa kanalını belirten ARGB'dir. Baştaki iki karakteri kaldırırsanız, bu yalnızca RGB'dir (düz renkler, alfa / saydamlık yok). Java kaynak kodunuzda bir renk belirtmek istiyorsanız, şunu kullanmanız gerekir:

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

Referans: argb


7

8 basamaklı onaltılık renk değeri, ARGB'nin (Alfa, Kırmızı, Yeşil, Mavi) bir temsilidir; 6 basamaklı bir değer ise yalnızca% 100 opaklık (tamamen opak) alır ve yalnızca RGB değerlerini tanımlar. Bu yüzden tamamen opak hale getirmek için # FF555555 veya sadece # 555555 kullanabilirsiniz. Her 2 basamaklı onaltılık değer, 0-255 arasındaki değerleri temsil eden bir bayttır.


-1

yeni krom versiyonunda (belki 67.0.3396.62), CSS hex rengi bu model ekranını kullanabilir,

Örneğin:

div{
  background-color:#FF00FFcc;
}

cc opaklıktır, ancak eski krom bu modu desteklemez


StackOverflow'a hoş geldiniz, lütfen turu ziyaret edin . Cevabınız Android veya Chrome'da değil, Android'deki renkler hakkında sorduğu için OP'ye yardımcı olmaz.
PeS

@PeS dün, evet, ama aynı temsile sahipler.
Heicks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.