Onaltılık Renk Dizesinden bir Renk nasıl alınır


Yanıtlar:


592

ColorSınıf yöntemini deneyin :

public static int parseColor (String colorString)

Gönderen Android belgeler :

Desteklenen formatlar şunlardır: #RRGGBB #AARRGGBB 'kırmızı', 'mavi', 'yeşil', 'siyah', 'beyaz', 'gri', 'mavi', 'macenta', 'sarı', 'açık gri', 'koyu gri '


4
Herkes #000değerleri nasıl ayrıştırılacağını biliyor mu?
Alex Semeniuk

6
Evet, sadece yap:, if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }yanılıyorsam lütfen beni düzeltin
xdevs23

6
@ Xdevs23 koduna eklemek için if koşulunu şu şekilde değiştirin:if(colorString.length() == 4 && colorString[0] == '#')
Zac

Sadece işlevi değil, aynı zamanda nasıl kullanılacağını da cevaplarsanız daha iyi olurdu: MyView.setBackgroundColor (Color.parseColor ("# 123456");
Yvonne Marggraf

int red = colorString.charAt (1) == '0'? 0: 255; int mavi = colorString.charAt (2) == '0'? 0: 255; int yeşil = colorString.charAt (3) == '0'? 0: 255; Color.rgb (kırmızı, mavi, yeşil);
GTID

253

Deneyin:

myLayout.setBackgroundColor(Color.parseColor("#636161"));

4
xamarin kullanıyorsanız .. kod bu Android.Graphics.Color.ParseColor ("# 636161") ile "P" için Üst
Igor Monteiro

38

Bu soru altıgen renk ile ilgili bir dizi arama için geliyor, bu yüzden buraya bir özet ekleyeceğim.

İnt renk

Hex renkler şeklinde RRGGBBveya AARRGGBB(alfa, yeşil, mavi, kırmızı). Deneyimlerime göre, intdoğrudan kullanırken, tam AARRGGBBformu kullanmanız gerekir . Yalnızca RRGGBBforma sahipseniz FF, alfa (saydamlık) tamamen opak hale getirmek için önekleyin. Kodda nasıl ayarlayacağınız aşağıda açıklanmıştır. Kullanılması 0xbaşlayan vasıtası azından onaltılık ve 10 baz değildir.

int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);

Dizeden Renk

Diğerleri de belirtildiği gibi, kullanabilirsiniz Color.parseStringşöyle

int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);

Dize'nin bir ile başlaması gerektiğini unutmayın #. Hem RRGGBBve AARRGGBBbiçimleri desteklenir.

XML'den renk

Renklerinizi mümkün olduğunca XML'den almanız gerekir. Bu, uygulamanızda renk değişiklikleri yapmayı çok kolaylaştırdığı için önerilen seçenektir. Kodunuz boyunca çok sayıda altıgen renk ayarlarsanız, bunları daha sonra değiştirmeye çalışmak büyük bir acıdır.

Android malzeme tasarımı, önceden yapılandırılmış onaltılık değerlerle renk damağına sahiptir.

Bu tema renkleri uygulamanızda kullanılır ve şöyle görünür:

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="primary">#3F51B5</color>
  <color name="primary_dark">#303F9F</color>
  <color name="primary_light">#C5CAE9</color>
  <color name="accent">#FF4081</color>
  <color name="primary_text">#212121</color>
  <color name="secondary_text">#757575</color>
  <color name="icons">#FFFFFF</color>
  <color name="divider">#BDBDBD</color>
</resources>

Ek renklere ihtiyacınız varsa, uygulamanız için iyi bir uygulama, renginizi xml'de iki adımda tanımlamaktır. Önce onaltılık değer rengini adlandırın ve ardından uygulamanızın belirli bir renk alması gereken bir bileşenini adlandırın. Bu, renkleri daha sonra ayarlamayı kolaylaştırır. Yine, bu colors.xml'de .

<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>

Ardından, kodu kodda ayarlamak istediğinizde aşağıdakileri yapın:

int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);    
myView.setBackgroundColor(myColor);

Android Önceden tanımlı renkler

Color sınıfı, önceden tanımlanmış bir dizi renk sabitiyle gelir. Bu şekilde kullanabilirsiniz.

int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);

Diğer renkler

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.MAGENTA
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

notlar


22

Bir o dizeyi dönüştürmek intkullanılabilir renk setBackgroundColorvesetTextColor

String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);

16, onaltılı olduğu anlamına gelir ve normal 0-9 değil. Sonuç şununla aynı olmalıdır

int color = 0xFFFF0000;

nasıl dize renk dönüştürebilirsiniz = "80000000"; int renk =?
Ashish Sahu

Ben dize sürümü #80000000int durumda olacağını bu durumda olduğunu düşünüyorum int color = 0x80000000;. Bu işe yaramazsa , benden daha fazla kişinin fark edeceği şekilde daha fazla ayrıntı içeren yeni bir soru gönderin . Unutmayın, #80000000yarı saydam bir siyah renk.
Bryan Field

Ben int renk = 0x80000000 olacağını biliyorum ama benim sorunum nasıl dönüştürmek olduğunu ... ama şimdi ben int renk = parseColor ("#" + "80000000") ile sorunumu çözdüm; ... cevap için teşekkürler.
Ashish Sahu

Kodunuzu kullanarak bir istisna aldım: java.lang.NumberFormatException: Geçersiz int: "FFFF0000"
hata1337


15

Bunu dene:

vi.setBackgroundColor(Color.parseColor("#FFFF0000"));

12

Bunu kullanıyorum ve istediğim rengi ayarlamak için benim için harika çalışıyor.

public static final int MY_COLOR = Color.rgb(255, 102, 153);

Her kırmızı, yeşil ve mavi için 0-255 kullanarak renkleri ayarlayın, sonra o rengin istediğiniz yere Color.BLUE veya Color.RED veya Color sınıfının sunduğu diğer statik renklerin yerine MY_COLOR koyun.

Sadece renk tablosu için bir Google araması yapın ve 0-255 kullanarak doğru RGB kodlarına sahip bir grafik bulabilirsiniz.


7

In Xamarin Bunu kullanın

Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));

6

Res / value / colors.xml dosyasına kaydedilen XML dosyası:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

Bu uygulama kodu renk kaynağını alır:

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

Bu mizanpaj XML rengi bir özniteliğe uygular:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>

5

Bunun yerine 0xFFF000 kullanmayı deneyin ve bunu Color.HSVToColor yöntemine iletin.


2
Üçüncü F'yi sıfırla değiştirmenizi beklerim. OP'de, opaklığı ayarlamak için ilk iki F karakterinin kullanıldığını düşünüyorum.
Bryan Field

4

XML'nizde bir renk tanımlar ve bunu arka plan rengini veya başka bir şeyi değiştirmek için kullanmak isterseniz, bu API aradığınız renktir:

 ((TextView) view).setBackgroundResource(R.drawable.your_color_here);

Örneğimde TestView için kullandım


0

Kısaltılmış Onaltılı kod için

int red = colorString.charAt(1) == '0' ? 0 : 255;
int blue = colorString.charAt(2) == '0' ? 0 : 255;
int green = colorString.charAt(3) == '0' ? 0 : 255;
Color.rgb(red, green,blue);
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.