2011-08-03 14 views
16

To może być głupie pytanie, ale jestem zaskoczony, że klasa Paint nie ma metody . Chcę wykonać następujące czynności:Android: konwersja kolorów na Int

public void setColor(Color color) { 
/* ... */ 
Paint p = new Paint(); 
p.setColor(color); // set color takes only int as a paramter :(
/* ... */ 
} 

więc wszelkie łatwy sposób przekonwertować Color do int?

+3

android.graphics.Color to zbiór metod statycznych. To nie powinno być inicjowane. Jak udało ci się to zrobić? –

+0

masz rację, dziękuję, proszę zaksięguj to ponownie jako odpowiedź :) – Caner

Odpowiedz

39

Każda color analizy składniowej pod int najprostszej dwa sposób tutaj:

1) Get Color System

int redColorValue = Color.RED; 

2) dowolny kolor kodzie Hex jako argumencie

int greenColorValue = Color.parseColor("#00ff00") 

musi pamiętać w powyższym kodzie Color klasa musi być android.graphics...!

1

R.color.black lub niektóre kolory są oczywiście liczbami całkowitymi. Potrzebuje wartości RGB. Możesz podać własne jak #FF123454 która reprezentuje różne kolory podstawowe

2

Wszystkie metody i zmienne są w kolorze statyczny. Nie można utworzyć instancji obiektu Color.

Official Color Docs

Klasa Kolor określa sposoby tworzenia i konwersja kolorów ints.

Kolory są reprezentowane jako zapakowane pliki, składające się z 4 bajtów: alfa, czerwony, zielony, niebieski.

Wartości są niepremagneżowane, co oznacza, że ​​dowolna przezroczystość jest przechowywana wyłącznie w komponencie alfa, a nie w składnikach kolorów.

Składniki są przechowywane w następujący sposób (alpha < < 24) | (czerwony < < 16) | (zielony < < 8) | niebieski.

Każdy składnik zawiera się w zakresie od 0,255 do 0, co oznacza brak wkładu dla tego komponentu, a 255 oznacza 100% wkładu.

ten sposób nieprzezroczyste czarne będzie 0xFF000000 (100% nieprzezroczysty, ale nie wkład czerwony, zielony lub niebieski) i nieprzezroczyste-White będzie 0xFFFFFFFF

0

Paint DOES mają ustawioną funkcję koloru.

/** 
* Set the paint's color. Note that the color is an int containing alpha 
* as well as r,g,b. This 32bit value is not premultiplied, meaning that 
* its alpha can be any value, regardless of the values of r,g,b. 
* See the Color class for more details. 
* 
* @param color The new color (including alpha) to set in the paint. 
*/ 
public native void setColor(@ColorInt int color); 

Jako programista Androida, ustawić kolor farby jak to ...

paint.setColor(getResources().getColor(R.color.xxx)); 

zdefiniować wartość koloru na color.xml coś podobnego ...

<color name="xxx">#008fd2</color> 

Nawiasem mówiąc, jeśli chcesz wartości RGB hex określonej wartości koloru, a następnie można sprawdzić stronę internetową tak: http://www.rapidtables.com/web/color/RGB_Color.htm

Mam nadzieję, że to pomoże! Ciesz się kodowaniem!