Zasób rysowalny to ogólna koncepcja grafiki, którą można narysować na ekranie.
można pobrać za pomocą interfejsów API, takich jak getDrawable(int)
, lub
do innego zasobu XML o takich atrybutach jak android:drawable
i android:icon
.
Jest kilka rodzajów elementów, które można przeciągać:
- Plik bitmapowy
-
- Plik graficzny z bitmapą (PNG, WEBP, JPG lub GIF).
Tworzy
BitmapDrawable
.
- Plik dziewięć poprawek
- Plik PNG z rozciąganymi obszarami, które pozwalają zmieniać rozmiar obrazów odpowiednio do treści (
.9.png
). Tworzy NinePatchDrawable
.
- Lista warstw
- Element rysowalny, który zarządza tablicą innych obiektów rysowalnych. Są one rysowane w kolejności tablicy, więc
na początku jest rysowany element o największym indeksie. Tworzy
LayerDrawable
.
- Lista stanów
- Plik XML odwołujący się do innej grafiki bitmapowej
dla różnych stanów, aby na przykład użyć innego obrazu po naciśnięciu przycisku.
Tworzy
StateListDrawable
.
- Lista poziomów
- Plik XML definiujący element rysowalny, który zarządza licznymi alternatywnymi elementami, z których każdy
mają przypisaną maksymalną wartość liczbową. Tworzy
LevelListDrawable
.
- Przejście z możliwością rysowania
- Plik XML określający obiekt rysowalny, który może przełączać się między 2 zasobami rysowalnymi.
Tworzy
TransitionDrawable
.
- Wektor rysowalny
- Plik XML określający obiekt rysowalny, który wstawia inny obiekt rysowalny o określonej odległości.
Jest to przydatne, gdy w widoku trzeba narysować tło mniejsze niż rzeczywisty
granic.
- Klip, który można rysować
- Plik XML określający element rysowalny, który przycina kolejny obiekt rysowalny na podstawie obiektu
bieżącej wartości. Tworzy
ClipDrawable
.
- Skala rysowalna
- Plik XML definiujący element rysowalny, który zmienia rozmiar innego obiektu, w zależności od jego
bieżącej wartości. Tworzy
ScaleDrawable
- Kształt rysowalny.
- Plik XML określający kształt geometryczny, w tym kolory i gradienty.
Tworzy
GradientDrawable
.
Dowiedz się, jak
utwórz: AnimationDrawable
,
zobacz dokument Zasoby animacji.
Uwaga: zasób kolorów może być też
używany jako obiekt rysowalny w kodzie XML. Na przykład podczas tworzenia listy stanów
obiekt rysowalny, możesz odwoływać się do zasobu koloru dla atrybutu android:drawable
(android:drawable="@color/green"
).
Bitmapa
Obraz bitmapy. Android obsługuje pliki mapy bitowej w tych formatach:
PNG (preferowany), WEBP (preferowany, wymaga interfejsu API na poziomie 17 lub wyższym), JPG (akceptowalny), GIF (zalecany).
Możesz odwołać się bezpośrednio do pliku bitmapy, używając nazwy pliku jako identyfikatora zasobu lub utworzyć
identyfikator zasobu aliasu w pliku XML.
Uwaga: pliki bitmap mogą być automatycznie optymalizowane w formacie bezstratnym
kompresję obrazu za pomocą narzędzia aapt
. Dla:
Na przykład plik PNG o prawdziwym kolorze, który nie wymaga więcej niż 256 kolorów, może zostać przekonwertowany na 8-bitowy.
PNG z paletą kolorów. W ten sposób uzyskujesz obraz o takiej samej jakości, który wymaga mniej
pamięci.
Pamiętaj więc, że pliki binarne obrazów umieszczone w tym katalogu mogą się zmieniać podczas kompilacji. Jeśli
Planujesz odczytać obraz jako strumień bitowy, aby przekonwertować go na bitmapę,
folder res/raw/
, który nie jest zoptymalizowany.
Plik bitmapy
Plik bitmapy to plik w formacie PNG, WEBP, JPG lub GIF. Android tworzy Drawable
w dowolnym z tych plików po zapisaniu ich w katalogu res/drawable/
.
- lokalizacja pliku:
res/drawable/filename.png
(.png
, .webp
, .jpg
lub .gif
)
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
BitmapDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- przykład:
- Z obrazem zapisanym pod adresem
res/drawable/myimage.png
zastosowano ten układ XML
obraz w widoku:
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/myimage" />
Ten kod aplikacji pobiera obraz w postaci pliku Drawable
:
Kotlin
val drawable: Drawable? = ResourcesCompat.getDrawable
(resources, R.drawable.myimage, null)
- zobacz też:
-
Bitmapa XML
Bitmapa XML to zasób zdefiniowany w kodzie XML, który wskazuje plik bitmapy. Efekt to alias dla
nieprzetworzonego pliku bitmapy. Plik XML może określać dodatkowe właściwości bitmapy, takie jak dithering i kafelki.
Uwaga: elementu <bitmap>
możesz używać jako elementu podrzędnego
element <item>
. Dla:
np. podczas tworzenia listy stanów lub listy warstw,
możesz wykluczyć android:drawable
z elementu <item>
i zagnieździć w nim element <bitmap>
.
definiujący element rysowalny.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
BitmapDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@[package:]drawable/drawable_resource"
android:antialias=["true" | "false"]
android:dither=["true" | "false"]
android:filter=["true" | "false"]
android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:mipMap=["true" | "false"]
android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
- elementy:
-
<bitmap>
- Wymagane. Określa źródło mapy bitowej i jego właściwości.
Atrybuty:
xmlns:android
- Ciąg znaków. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
Jest to wymagane tylko wtedy, gdy
Elementem głównym jest <bitmap>
. Nie jest potrzebny, gdy
Element <bitmap>
jest zagnieżdżony w elemencie <item>
.
android:src
- Zasób rysowalny. Wymagany. Odniesienie do elementu rysowalnego
.
android:antialias
- Wartość logiczna. Włącza lub wyłącza antyaliasing.
android:dither
- Wartość logiczna. Włącza lub wyłącza rozpraszanie bitmapy, jeśli nie jest to możliwe
mają taką samą konfigurację pikseli jak ekran, na przykład mapę bitową ARGB 8888 na modelu RGB 565.
ekranu.
android:filter
- Wartość logiczna. Włącza lub wyłącza filtrowanie bitmapy. Filtrowanie jest używane, gdy
bitmapa jest zmniejszona lub rozciągnięta w celu wygładzenia.
android:gravity
- Słowo kluczowe. Definiuje grawitację dla bitmapy. Grawitacja wskazuje, gdzie
umieść obiekt rysowalny w kontenerze, jeśli mapa bitowa jest mniejsza niż kontener.
Musi to być co najmniej jedna z tych wartości stałych rozdzielonych znakiem |
:
Wartość | Opis |
top |
Umieść obiekt na górze kontenera, nie zmieniając jego rozmiaru. |
bottom |
Umieść obiekt na dole kontenera, nie zmieniając jego rozmiaru. |
left |
Umieść obiekt przy lewej krawędzi kontenera, nie zmieniając jego rozmiaru. |
right |
Umieść obiekt przy prawej krawędzi kontenera, nie zmieniając jego rozmiaru. |
center_vertical |
Umieść obiekt na środku kontenera w pionie, nie zmieniając jego rozmiaru. |
fill_vertical |
W razie potrzeby zwiększ pionowy rozmiar obiektu, aby wypełnił cały kontener. |
center_horizontal |
Umieść obiekt na środku kontenera w poziomie, nie zmieniając jego rozmiaru. |
fill_horizontal |
W razie potrzeby powiększ obiekt w poziomie, aby wypełnił cały kontener.
|
center |
Umieść obiekt na środku kontenera na osi pionowej i poziomej,
i jego rozmiaru. |
fill |
W razie potrzeby zwiększ rozmiar obiektu w poziomie i pionie, aby wypełnił cały obszar
kontenera. Jest to ustawienie domyślne. |
clip_vertical |
Dodatkowa opcja, w ramach której można przyciąć górne lub dolne krawędzie elementu podrzędnego
granic swojego kontenera. Klip jest oparty na grawitacji pionowej: górna grawitacja przycina
dolna krawędź grawitacja przycina górną, ale żadna z nich nie przycina obu.
|
clip_horizontal |
Dodatkowa opcja, w ramach której można przyciąć lewe lub prawe krawędzie elementu podrzędnego
granic swojego kontenera. Klip jest oparty na grawitacji poziomej: lewa grawitacja
prawa grawitacja przycina lewą krawędź, ale żadna z nich nie przycina obu.
|
android:mipMap
- Wartość logiczna. Włącza lub wyłącza wskazówkę dotyczącą mipmap. Aby dowiedzieć się więcej, przeczytaj
setHasMipMap()
.
Wartość domyślna to false (fałsz).
android:tileMode
- Słowo kluczowe. Określa tryb kafelka. Gdy włączony jest tryb kafelków, bitmapa jest
powtórzenia. Grawitacja jest ignorowana po włączeniu trybu kafelka.
Musi mieć jedną z tych stałych wartości:
Wartość | Opis |
disabled |
Nie kafelkuj bitmapy. jest to wartość domyślna |
clamp |
Replikuj kolor krawędzi, jeśli cieniowanie wykracza poza pierwotne granice |
repeat |
Powtórz obraz cieniowania w poziomie i pionie. |
mirror |
Powtórz obraz w cieniu w poziomie i pionie, naprzemienne lustrzane odbicia.
sąsiednie obrazy są zawsze łączone. |
- przykład:
-
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/icon"
android:tileMode="repeat" />
- zobacz też:
-
9 poprawek
NinePatch
to obraz PNG, w którym można zdefiniować obszary rozciągane
które Android skaluje, gdy zawartość widoku wykracza poza normalne granice obrazu. Ty
zazwyczaj przypisują ten typ obrazu jako tło widoku, który ma co najmniej jeden zestaw wymiarów
do "wrap_content"
.
Gdy widok powiększa się w celu dopasowania do treści, pojawia się
jest również skalowany
do rozmiaru widoku. Przykładem użycia obrazu z 9 poprawkami jest
tło używane przez standardowy widżet Button
na Androida, który musi się rozciągać do
umieść tekst (lub obraz) wewnątrz przycisku.
Tak jak w przypadku zwykłej bitmapy, możesz odwoływać się bezpośrednio do pliku z 9 poprawkami
lub z zasobu zdefiniowanego przez kod XML.
Pełną dyskusję na temat tworzenia pliku z dziewięcioma poprawkami z rozciąganymi regionami
Zobacz Tworzenie map bitowych z możliwością zmiany rozmiaru (pliki z 9 poprawkami).
Plik z 9 poprawkami
- lokalizacja pliku:
res/drawable/filename.9.png
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
NinePatchDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- przykład:
- Z obrazem zapisanym o
res/drawable/myninepatch.9.png
, ten układ XML
stosuje dziewięć poprawek do widoku:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/myninepatch" />
- zobacz też:
-
9-poprawka XML
Kod XML „9-patch” to zasób zdefiniowany w kodzie XML, który wskazuje plik z 9 poprawkami. Plik XML może
i określać Dithering dla obrazu.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
NinePatchDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<nine-patch
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@[package:]drawable/drawable_resource"
android:dither=["true" | "false"] />
- elementy:
-
<nine-patch>
- Wymagane. Definiuje źródło z 9 poprawkami i jego właściwości.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
android:src
- Zasób rysowalny. Wymagany. Odniesienie do dziewięciu poprawek
.
android:dither
- Wartość logiczna. Włącza lub wyłącza rozpraszanie bitmapy, jeśli nie jest to możliwe
mają taką samą konfigurację pikseli jak ekran, na przykład mapę bitową ARGB 8888 na modelu RGB 565.
ekranu.
- przykład:
-
<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/myninepatch"
android:dither="false" />
Lista warstw
Obiekt LayerDrawable
to obiekt rysowalny
który zarządza tablicą innych elementów narysowanych. Każdy element rysowalny na liście jest rysowany w kolejności
z listy. Ostatni obiekt rysowalny na liście jest rysowany na początku.
Każdy obiekt rysowalny jest reprezentowany przez element <item>
wewnątrz pojedynczego elementu <layer-list>
.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
LayerDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</layer-list>
- elementy:
-
<layer-list>
- Wymagane. Musi to być element główny. Zawiera co najmniej 1 element
<item>
.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
<item>
- Określa element, który można rysować w warstwie, którą można rysować, w pozycji określonej przez jego atrybuty.
Musi być elementem podrzędnym elementu
<layer-list>
. Akceptuje podrzędne <bitmap>
.
Atrybuty:
android:drawable
- Zasób rysowalny. Wymagany. Odniesienie do elementu rysowalnego
.
android:id
- Identyfikator zasobu. Unikalny identyfikator zasobu tego elementu rysowanego. Tworzenie nowego zasobu
Identyfikator tego produktu, użyj formularza:
"@+id/name"
Symbol plusa oznacza, że jest ona utworzona jako nowy
ID. Za pomocą tego identyfikatora możesz
pobierz i zmodyfikuj obiekt rysowalny za pomocą funkcji View.findViewById()
lub Activity.findViewById()
.
android:top
- Wymiar. Przesunięcie od góry jako wartość wymiaru lub zasób wymiaru.
android:right
- Wymiar. Odpowiednie przesunięcie jako wartość wymiaru lub zasób wymiaru.
android:bottom
- Wymiar. Przesunięcie do dołu jako wartość wymiaru lub zasób wymiaru.
android:left
- Wymiar. Przesunięcie od lewej jako wartość wymiaru lub zasób wymiaru.
Domyślnie wszystkie rysowane elementy są domyślnie skalowane tak, by pasowały do rozmiaru widoku, który je zawiera. W związku z tym:
umieszczenie obrazów na liście warstw na różnych pozycjach może zwiększyć rozmiar widoku.
niektóre obrazy skalują się odpowiednio do potrzeb.
Aby unikać
skalowania elementów na liście należy użyć elementu <bitmap>
wewnątrz elementu <item>
, aby określić obiekt rysowalny i zdefiniować grawitację elementu, który nie jest rysowany
skalę, taką jak "center"
. Na przykład <item>
definiuje element
który skaluje się, by dopasować się do widoku kontenera:
<item android:drawable="@drawable/image" />
Aby uniknąć skalowania, w tym przykładzie użyto elementu <bitmap>
z wyśrodkowanym
grawitacja:
<item>
<bitmap android:src="@drawable/image"
android:gravity="center" />
</item>
- przykład:
- Plik XML zapisany o
res/drawable/layers.xml
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/android_red"
android:gravity="center" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/android_green"
android:gravity="center" />
</item>
<item android:top="20dp" android:left="20dp">
<bitmap android:src="@drawable/android_blue"
android:gravity="center" />
</item>
</layer-list>
W tym przykładzie do zdefiniowania elementu rysowalnego w tym przykładzie użyto zagnieżdżonego elementu <bitmap>
dla każdego elementu o grawitacji "center"
. Dzięki temu żaden z obrazów nie będzie skalowany
do rozmiaru kontenera ze względu na zmiany rozmiaru spowodowane przez obrazy przesunięcia.
Ten kod XML układu stosuje obiekt rysowalny do widoku:
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/layers" />
Powstały stos obrazów coraz bardziej przesuniętych stron:
- zobacz też:
-
Lista stanów
Obiekt StateListDrawable
to obiekt rysowalny zdefiniowany w kodzie XML.
który korzysta z wielu obrazów do reprezentowania tej samej grafiki, w zależności od stanu
obiektu. Stan widżetu Button
można na przykład kliknąć, zaznaczyć
lub żaden z nich; za pomocą rysowania listy stanów dla każdego z nich
stanu.
Listę stanów opisujesz w pliku XML. Każda grafika jest reprezentowana przez element <item>
wewnątrz jednego elementu <selector>
. Co <item>
wykorzystuje różne atrybuty, aby opisać stan, w jakim jest używany jako element graficzny
obiekt rysowalny.
Podczas każdej zmiany stanu lista stanów jest przesuwana od góry do dołu. Pierwszy element, który
pasuje do bieżącego stanu. Wybór nie opiera się na „najlepszym”
pasuje”, ale raczej pierwszy element, który spełnia minimalne kryteria obowiązujące w danym stanie.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
StateListDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize=["true" | "false"]
android:dither=["true" | "false"]
android:variablePadding=["true" | "false"] >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_hovered=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_activated=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
- elementy:
-
<selector>
- Wymagane. Musi to być element główny. Zawiera co najmniej 1 element
<item>
.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
android:constantSize
- Wartość logiczna. Prawda, jeśli zgłoszony rozmiar wewnętrzny obiektu rysowania pozostaje na stałym poziomie jako stan
zmiany (rozmiar jest maksymalnym rozmiarem dla wszystkich stanów); false, jeśli rozmiar różni się w zależności od
do bieżącego stanu. Wartość domyślna to false (fałsz).
android:dither
- Wartość logiczna. Prawda, aby włączyć dithering bitmapy, jeśli bitmapa nie ma takiego samego piksela
konfigurację jako ekran, na przykład mapę bitową ARGB 8888 na ekranie RGB 565; fałsz na
wyłączyć dithering. Wartość domyślna to true (prawda).
android:variablePadding
- Wartość logiczna. Prawda, jeśli dopełnienie elementu rysowanego zmienia się w zależności od bieżącego
w wybranym stanie; Wartość false, jeśli dopełnienie musi pozostać takie samo w oparciu o maksymalną
ze wszystkimi stanami. Aby włączyć tę funkcję, musisz uporać się z
wykonywanie układu przy zmianie stanu, co często nie jest obsługiwane. Wartość domyślna to false (fałsz).
<item>
- Definiuje element rysowalny do użycia w określonych stanach, zgodnie z jego atrybutami. Musi to być
element podrzędny elementu
<selector>
.
Atrybuty:
android:drawable
- Zasób rysowalny. Wymagany. Odwołanie do zasobu rysowalnego.
android:state_pressed
- Wartość logiczna. Prawda, jeśli ten element jest używany po dotknięciu obiektu (np. przycisk).
poruszony; false, jeśli ten element jest używany domyślnie, bez kliknięcia.
android:state_focused
- Wartość logiczna. Prawda, jeśli ten element jest używany, gdy obiekt jest zaznaczony przy użyciu danych wejściowych,
np. gdy użytkownik wybierze pole tekstowe. false, jeśli ten element jest używany domyślnie,
i stan niezaznaczony.
android:state_hovered
- Wartość logiczna. Prawda, jeśli ten element jest używany po najechaniu na niego kursorem.
false, jeśli ten element jest używany w domyślnym stanie innym niż najechanie. Często
Element rysowalny może być tym samym obiektem rysowanym użytym jako obiekt rysowalny. stanu.
Wprowadzono w interfejsie API poziomu 14.
android:state_selected
- Wartość logiczna. Prawda, jeśli ten element jest używany, gdy obiekt jest bieżącym
wybór użytkownika podczas nawigacji za pomocą sterowania kierunkowego, na przykład podczas poruszania się po liście
padem kierunkowym. false, jeśli ten element jest używany, gdy obiekt nie jest zaznaczony.
Wybrany stan jest używany, gdy android:state_focused
nie jest wystarczający,
np. gdy aktywny jest widok listy i element w nim jest zaznaczony za pomocą pada kierunkowego.
android:state_checkable
- Wartość logiczna. Prawda, jeśli ten element jest używany, gdy można go wybrać. false, jeśli
jest używany, gdy obiektu nie można wybrać. Przydatny tylko wtedy, gdy obiekt może
przejście między widżetem, który można wybrać lub którego nie można wybrać.
android:state_checked
- Wartość logiczna. Prawda, jeśli ten element jest używany, gdy obiekt jest zaznaczony. Wartość false (fałsz)
jest używane, gdy obiekt nie jest zaznaczony.
android:state_enabled
- Wartość logiczna. Wartość prawda, jeśli ten element jest używany, gdy obiekt jest włączony.
oznacza zdolność do rejestrowania zdarzeń dotknięcia lub kliknięcia; false, jeśli jest używana, gdy obiekt jest
wyłączono.
android:state_activated
- Wartość logiczna. Prawda, jeśli ten element jest używany, gdy obiekt jest aktywowany jako
wybór trwały, np. „highlight” (zaznacz) poprzednio wybranego elementu listy w trwałym
widok nawigacji; false, jeśli jest używana, gdy obiekt nie został aktywowany.
Wprowadzono w interfejsie API poziomu 11.
android:state_window_focused
- Wartość logiczna. Prawda, jeśli ten element jest używany, gdy okno aplikacji jest zaznaczone, co oznacza
aplikacja działa na pierwszym planie; false, jeśli ten element jest używany, gdy aplikacja
nie jest aktywne, np. gdy obszar powiadomień zostanie otwarty lub pojawi się okno.
Uwaga: Android stosuje pierwszy element na liście stanów, który
pasuje do bieżącego stanu obiektu. Jeśli więc pierwszy element na liście zawiera
żadnego z poprzednich atrybutów stanu, jest on stosowany za każdym razem. Właśnie dlatego warto zadbać o
jako zawsze ostatnią, jak widać w przykładzie poniżej.
- przykład:
- Plik XML zapisany o
res/drawable/button.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:state_hovered="true"
android:drawable="@drawable/button_focused" /> <!-- hovered -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
Ten kod XML układu stosuje do przycisku listę stanów, którą można rysować:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/button" />
- zobacz też:
-
Lista poziomów
Obiekt rysowalny, który zarządza pewną liczbą alternatywnych elementów, z których każdy ma przypisaną maksymalną wartość liczbową
. Ustawienie wartości poziomu elementu rysowania za pomocą funkcji setLevel()
wczytuje zasób rysowalny w
poziomu listy, której wartość android:maxLevel
jest większa lub równa wartości
i przekazywane do metody.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
LevelListDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<level-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/drawable_resource"
android:maxLevel="integer"
android:minLevel="integer" />
</level-list>
- elementy:
-
<level-list>
- Wymagane. Musi to być element główny. Zawiera co najmniej 1 element
<item>
.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
<item>
- Określa element, który można narysować na określonym poziomie.
Atrybuty:
android:drawable
- Zasób rysowalny. Wymagany. Odniesienie do elementu rysowalnego
zasób, który ma zostać wstawiony.
android:maxLevel
- Liczba całkowita. Maksymalny dozwolony poziom tego produktu.
android:minLevel
- Liczba całkowita. Minimalny dozwolony poziom dla tego produktu.
- przykład:
-
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/status_off"
android:maxLevel="0" />
<item
android:drawable="@drawable/status_on"
android:maxLevel="1" />
</level-list>
Gdy zastosujesz to ustawienie do View
, możesz zmienić poziom za pomocą setLevel()
lub setImageLevel()
.
- zobacz też:
-
Przejście z możliwością rysowania
Obiekt TransitionDrawable
to obiekt rysowalny
które mogą przechodzić między 2 innymi zasobami.
Każdy obiekt rysowalny jest reprezentowany przez element <item>
wewnątrz jednego elementu <transition>
. Obsługiwane są maksymalnie 2 elementy. Aby przejść dalej, wywołaj
startTransition()
Do
przejście do tyłu, wywołaj reverseTransition()
.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
TransitionDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<transition
xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</transition>
- elementy:
-
<transition>
- Wymagane. Musi to być element główny. Zawiera co najmniej 1 element
<item>
.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
<item>
- Określa element rysowalny, który ma być używany jako element przejścia, który można narysować.
Musi być elementem podrzędnym elementu
<transition>
. Akceptuje podrzędne <bitmap>
.
Atrybuty:
android:drawable
- Zasób rysowalny. Wymagany. Odniesienie do elementu rysowalnego
.
android:id
- Identyfikator zasobu. Unikalny identyfikator zasobu tego elementu rysowanego. Tworzenie nowego zasobu
Identyfikator tego produktu, użyj formularza:
"@+id/name"
Symbol plusa oznacza, że jest ona utworzona jako nowy
ID. Za pomocą tego identyfikatora możesz
pobierz i zmodyfikuj obiekt rysowalny za pomocą funkcji View.findViewById()
lub Activity.findViewById()
.
android:top
- Liczba całkowita. Przesunięcie od góry w pikselach.
android:right
- Liczba całkowita. Przesunięcie od prawej w pikselach.
android:bottom
- Liczba całkowita. Odsunięcie od dołu w pikselach.
android:left
- Liczba całkowita. Przesunięcie od lewej w pikselach.
- przykład:
- Plik XML zapisany o
res/drawable/transition.xml
:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/on" />
<item android:drawable="@drawable/off" />
</transition>
Ten kod XML układu stosuje obiekt rysowalny do widoku:
<ImageButton
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/transition" />
Ten kod wykonuje 500 ms przejścia z pierwszego do drugiego elementu:
Kotlin
val button: ImageButton = findViewById(R.id.button)
val drawable: Drawable = button.drawable
if (drawable is TransitionDrawable) {
drawable.startTransition(500)
}
Java
ImageButton button = (ImageButton) findViewById(R.id.button);
Drawable drawable = button.getDrawable();
if (drawable instanceof TransitionDrawable) {
((TransitionDrawable) drawable).startTransition(500);
}
- zobacz też:
-
Element rysowalny wektor
Element rysowalny zdefiniowany w kodzie XML, który wstawia inny obiekt rysowalny o określonej odległości. To jest przydatne
gdy widok wymaga tła, które jest mniejsze niż jego rzeczywiste granice.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
InsetDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/drawable_resource"
android:insetTop="dimension"
android:insetRight="dimension"
android:insetBottom="dimension"
android:insetLeft="dimension" />
- elementy:
-
<inset>
- Wymagane. Określa element rysowalny wektora. Musi to być element główny.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
android:drawable
- Zasób rysowalny. Wymagany. Odniesienie do elementu rysowalnego
zasób, który ma zostać wstawiony.
android:insetTop
- Wymiar. Wcięcie u góry jako wartość wymiaru lub zasób wymiaru.
android:insetRight
- Wymiar. Wcięcie z prawej, jako wartość wymiaru lub zasób wymiaru.
android:insetBottom
- Wymiar. Wcięcie dolne jako wartość wymiaru lub zasób wymiaru.
android:insetLeft
- Wymiar. Wcięcie z lewej jako wartość wymiaru lub zasób wymiaru.
- przykład:
-
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/background"
android:insetTop="10dp"
android:insetLeft="10dp" />
- zobacz też:
-
Element rysowalny w klipsie
Element rysowalny zdefiniowany w kodzie XML, który przypina inny obiekt rysowalny na podstawie bieżącego poziomu obiektu rysowania. Ty
może kontrolować szerokość i wysokość elementu rysowanego w zależności od poziomu,
w postaci grawitacji, aby kontrolować, gdzie zostanie umieszczony w całym pojemniku. Najczęściej używane do implementacji
takie jak paski postępu.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
ClipDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<clip
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/drawable_resource"
android:clipOrientation=["horizontal" | "vertical"]
android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"] />
- elementy:
-
<clip>
- Wymagane. Określa element, który można rysować. Musi to być element główny.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
android:drawable
- Zasób rysowalny. Wymagany. Odniesienie do elementu rysowalnego
zasobu, który ma zostać przycięty.
android:clipOrientation
- Słowo kluczowe. Orientacja klipu.
Musi mieć jedną z tych stałych wartości:
Wartość | Opis |
horizontal |
Przypnij element rysowalny w poziomie. |
vertical |
Przypnij element rysowalny w pionie. |
android:gravity
- Słowo kluczowe. Określa miejsce klipu w elemencie rysowanym.
Musi to być co najmniej jedna z tych wartości stałych rozdzielonych znakiem |
:
Wartość | Opis |
top |
Umieść obiekt na górze kontenera, nie zmieniając jego rozmiaru. Gdy clipOrientation ma wartość "vertical" , przycinanie ma miejsce na dole elementu, który można rysować. |
bottom |
Umieść obiekt na dole kontenera, nie zmieniając jego rozmiaru. Gdy clipOrientation ma wartość "vertical" , przycinanie ma miejsce na górze elementu, który można rysować. |
left |
Umieść obiekt przy lewej krawędzi kontenera, nie zmieniając jego rozmiaru. To jest
wartość domyślną. Gdy clipOrientation ma wartość "horizontal" , przycinanie ma miejsce po prawej stronie
obiekt rysowalny. |
right |
Umieść obiekt przy prawej krawędzi kontenera, nie zmieniając jego rozmiaru. Gdy clipOrientation ma wartość "horizontal" , przycinanie ma miejsce po lewej stronie argumentu
obiekt rysowalny. |
center_vertical |
Umieść obiekt na środku kontenera w pionie, nie zmieniając jego rozmiaru. Zachowanie przycięcia
taka sama jak przy grawitacji "center" . |
fill_vertical |
W razie potrzeby zwiększ pionowy rozmiar obiektu, aby wypełnił cały kontener. Gdy clipOrientation ma wartość "vertical" , przycinanie nie następuje, ponieważ element rysowalny wypełnia
w pionie (chyba że poziom, który można narysować ma wartość 0, jest wtedy niewidoczny). |
center_horizontal |
Umieść obiekt na środku kontenera w poziomie, nie zmieniając jego rozmiaru.
Przycinanie działa tak samo jak przy grawitacji "center" . |
fill_horizontal |
W razie potrzeby powiększ obiekt w poziomie, aby wypełnił cały kontener. Kiedy
clipOrientation ma wartość "horizontal" , przycinanie nie występuje, ponieważ obiekt rysowalny wypełnia
w poziomie (chyba że poziom, który można przeciągnąć, ma wartość 0, co oznacza, że nie jest widoczny).
|
center |
Umieść obiekt na środku kontenera na osi pionowej i poziomej,
i jego rozmiaru. Gdy clipOrientation ma wartość "horizontal" , przycinanie ma miejsce po lewej i prawej stronie. Gdy clipOrientation ma wartość "vertical" , przycinanie ma miejsce na górze i na dole. |
fill |
W razie potrzeby zwiększ rozmiar obiektu w poziomie i pionie, aby wypełnił cały obszar
kontenera. Przycinanie nie występuje, ponieważ element rysowalny wypełnia
w pionie i w poziomie (chyba że poziom, który można przeciągnąć, wynosi 0 – w takim przypadku nie jest
widoczne). |
clip_vertical |
Dodatkowa opcja, w ramach której można przyciąć górne lub dolne krawędzie elementu podrzędnego
granic swojego kontenera. Klip jest oparty na grawitacji pionowej: górna grawitacja przycina
dolna krawędź grawitacja przycina górną, ale żadna z nich nie przycina obu.
|
clip_horizontal |
Dodatkowa opcja, w ramach której można przyciąć lewe lub prawe krawędzie elementu podrzędnego
granic swojego kontenera. Klip jest oparty na grawitacji poziomej: lewa grawitacja
prawa grawitacja przycina lewą krawędź, ale żadna z nich nie przycina obu.
|
- przykład:
- Plik XML zapisany o
res/drawable/clip.xml
:
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/android"
android:clipOrientation="horizontal"
android:gravity="left" />
Poniższy kod XML układu stosuje klip, który można rysować do widoku:
<ImageView
android:id="@+id/image"
android:src="@drawable/clip"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
Poniższy kod pobiera obiekt rysowalny i zwiększa liczbę przycinań do
stopniowo odkrywać obraz:
Kotlin
val imageview: ImageView = findViewById(R.id.image)
val drawable: Drawable = imageview.background
if (drawable is ClipDrawable) {
drawable.level = drawable.level + 1000
}
Java
ImageView imageview = (ImageView) findViewById(R.id.image);
Drawable drawable = imageview.getBackground();
if (drawable instanceof ClipDrawable) {
((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000);
}
Zwiększenie poziomu spowoduje zmniejszenie liczby przycięć i powolne wyświetlenie obrazu. Oto i ona
na poziomie 7000:
Uwaga: domyślny poziom to 0, co oznacza, że obraz jest całkowicie przycięty.
nie jest widoczny. Przy poziomie 10 000 obraz nie jest przycięty i jest w pełni widoczny.
- zobacz też:
-
Obiekt do rysowania na skali
Element rysowalny zdefiniowany w pliku XML, który zmienia rozmiar innego obiektu rysowalnego na podstawie jego bieżącego
na poziomie 300%.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
ScaleDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/drawable_resource"
android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
android:scaleHeight="percentage"
android:scaleWidth="percentage" />
- elementy:
-
<scale>
- Wymagane. Określa skalę, którą można rysować. Musi to być element główny.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
android:drawable
- Zasób rysowalny. Wymagany. Odniesienie do elementu rysowalnego
.
android:scaleGravity
- Słowo kluczowe. Określa pozycję grawitacji po skalowaniu.
Musi to być co najmniej jedna z tych wartości stałych rozdzielonych znakiem |
:
Wartość | Opis |
top |
Umieść obiekt na górze kontenera, nie zmieniając jego rozmiaru. |
bottom |
Umieść obiekt na dole kontenera, nie zmieniając jego rozmiaru. |
left |
Umieść obiekt przy lewej krawędzi kontenera, nie zmieniając jego rozmiaru. To jest
wartość domyślną. |
right |
Umieść obiekt przy prawej krawędzi kontenera, nie zmieniając jego rozmiaru. |
center_vertical |
Umieść obiekt na środku kontenera w pionie, nie zmieniając jego rozmiaru. |
fill_vertical |
W razie potrzeby zwiększ pionowy rozmiar obiektu, aby wypełnił cały kontener. |
center_horizontal |
Umieść obiekt na środku kontenera w poziomie, nie zmieniając jego rozmiaru. |
fill_horizontal |
W razie potrzeby powiększ obiekt w poziomie, aby wypełnił cały kontener.
|
center |
Umieść obiekt na środku kontenera na osi pionowej i poziomej,
i jego rozmiaru. |
fill |
W razie potrzeby zwiększ rozmiar obiektu w poziomie i pionie, aby wypełnił cały obszar
kontenera. |
clip_vertical |
Dodatkowa opcja, w ramach której można przyciąć górne lub dolne krawędzie elementu podrzędnego
granic swojego kontenera. Klip jest oparty na grawitacji pionowej: górna grawitacja przycina
dolna krawędź grawitacja przycina górną, ale żadna z nich nie przycina obu.
|
clip_horizontal |
Dodatkowa opcja, w ramach której można przyciąć lewe lub prawe krawędzie elementu podrzędnego
granic swojego kontenera. Klip jest oparty na grawitacji poziomej: lewa grawitacja
prawa grawitacja przycina lewą krawędź, ale żadna z nich nie przycina obu.
|
android:scaleHeight
- Procent. Wysokość skali wyrażona jako procent wartości elementu, który można narysować
związane. Format wartości to XX%, np.100% lub 12,5%.
android:scaleWidth
- Procent. Szerokość skali wyrażona jako procent elementu, który można narysować
związane. Format wartości to XX%, np.100% lub 12,5%.
- przykład:
-
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/logo"
android:scaleGravity="center_vertical|center_horizontal"
android:scaleHeight="80%"
android:scaleWidth="80%" />
- zobacz też:
-
Kształt rysowalny
To ogólny kształt zdefiniowany w kodzie XML.
- lokalizacja pliku:
res/drawable/filename.xml
(- )
Nazwa pliku to identyfikator zasobu
- skompilowany typ danych zasobu:
- Wskaźnik zasobu
GradientDrawable
- odniesienie do zasobu:
-
W języku Java:
R.drawable.filename
W pliku XML: @[package:]drawable/filename
- składnia:
-
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] >
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<gradient
android:angle="integer"
android:centerX="float"
android:centerY="float"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:useLevel=["true" | "false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size
android:width="integer"
android:height="integer" />
<solid
android:color="color" />
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer" />
</shape>
- elementy:
-
<shape>
- Wymagane. Kształt, który można rysować. Musi to być element główny.
Atrybuty:
xmlns:android
- Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, którą musi być
"http://schemas.android.com/apk/res/android"
android:shape
- Słowo kluczowe. Określa typ kształtu. Prawidłowe wartości to:
Wartość | Opis |
"rectangle" |
Prostokąt, który wypełnia widok główny. To jest domyślny kształt. |
"oval" |
Owal, który pasuje do wymiarów widoku, który zawiera. |
"line" |
Pozioma linia rozciągająca się wzdłuż szerokości widoku, który zawiera. Ten
kształt wymaga elementu <stroke> do określenia szerokości
. |
"ring" |
Okrągły kształt. |
Te atrybuty są używane tylko wtedy, gdy android:shape="ring"
:
android:innerRadius
- Wymiar. Promień dla
wewnętrznej części pierścienia (otwór w środku) jako wartość wymiaru lub zasób wymiaru.
android:innerRadiusRatio
- Swobodna. Promień obszaru wewnętrznego
i jego części, wyrażony jako stosunek szerokości pierścienia. Na przykład jeśli chodzi o
android:innerRadiusRatio="5"
, promień wewnętrzny jest równy szerokości pierścienia podzielonego przez 5. Ten
została zastąpiona przez android:innerRadius
. Wartością domyślną jest 9.
android:thickness
- Wymiar. Grubość
pierścień, jako wartość wymiaru lub zasób wymiaru.
android:thicknessRatio
- Swobodna. Grubość pierścienia
wyrażony jako stosunek szerokości pierścienia. Jeśli na przykład
android:thicknessRatio="2"
, to
grubość równa się szerokości pierścienia podzielonego przez 2. Ta wartość została zastąpiona przez android:innerRadius
. Wartością domyślną jest 3.
android:useLevel
- Wartość logiczna. Wartość prawda, jeśli jest używana jako
LevelListDrawable
. Zwykle ma wartość fałsz,
W przeciwnym razie kształt może się nie pojawić.
<corners>
- Tworzy zaokrąglone narożniki kształtu. Ma zastosowanie tylko wtedy, gdy kształt jest prostokątny.
Atrybuty:
android:radius
- Wymiar. Promień wszystkich narożników jako wartość wymiaru lub zasób wymiaru. Ta wartość jest zastępowana dla każdego
pod kątem tych atrybutów.
android:topLeftRadius
- Wymiar. Promień lewego górnego rogu jako wartość wymiaru lub zasób wymiaru.
android:topRightRadius
- Wymiar. Promień prawego górnego rogu ekranu jako wartość wymiaru lub zasób wymiaru.
android:bottomLeftRadius
- Wymiar. Promień lewego dolnego rogu jako wartość wymiaru lub zasób wymiaru.
android:bottomRightRadius
- Wymiar. Promień prawego dolnego rogu jako wartość wymiaru lub zasób wymiaru.
Uwaga: każdy róg musi początkowo mieć róg.
promień jest większy niż 1 lub żadne narożniki nie są zaokrąglane. Jeśli chcesz mieć konkretne narożniki
aby nie być zaokrąglane, możesz obejść ten problem, używając android:radius
do ustawienia narożnika domyślnego.
większy od 1, a następnie zastąp każdy narożnik wartościami, które
i ustaw 0 („0dp”) w miejscach, gdzie rogi nie mają być zaokrąglone.
<gradient>
- Określa kolor gradientu kształtu.
Atrybuty:
android:angle
- Liczba całkowita. Kąt gradientu w stopniach. 0 od lewej do prawej, 90 to
od dołu do góry. Musi to być wielokrotność liczby 45. Wartość domyślna to 0.
android:centerX
- Swobodna. Względna pozycja na osi X środka gradientu (0–1,0).
android:centerY
- Swobodna. Względna pozycja Y środka gradientu (0–1,0).
android:centerColor
- Kolor. Opcjonalny kolor występujący między kolorem początkowym i końcowym.
wartość szesnastkową lub zasób koloru.
android:endColor
- Kolor. Kolor końcowy w postaci szesnastkowej.
lub zasób koloru.
android:gradientRadius
- Swobodna. Promień gradientu. Stosowane tylko wtedy, gdy
android:type="radial"
.
android:startColor
- Kolor. Kolor początkowy w postaci szesnastkowej
lub zasób koloru.
android:type
- Słowo kluczowe. Typ stosowanego wzorca gradientu. Prawidłowe wartości to:
Wartość | Opis |
"linear" |
Gradient liniowy. Jest to ustawienie domyślne. |
"radial" |
Gradient promieniowy. Kolor początkowy to kolor środkowy. |
"sweep" |
Duży gradient linii. |
android:useLevel
- Wartość logiczna. Prawda, jeśli jest używana jako
LevelListDrawable
.
<padding>
- Dopełnienie stosowane do elementu widoku danych. Spowoduje to wypełnienie pozycji widoku
a nie kształt.
Atrybuty:
android:left
- Wymiar. Dopełnienie z lewej strony jako wartość wymiaru lub zasób wymiaru.
android:top
- Wymiar. Dopełnienie u góry jako wartość wymiaru lub zasób wymiaru.
android:right
- Wymiar. Dopełnienie z prawej strony jako wartość wymiaru lub zasób wymiaru.
android:bottom
- Wymiar. Dopełnienie u dołu jako wartość wymiaru lub zasób wymiaru.
<size>
- Rozmiar kształtu.
Atrybuty:
android:height
- Wymiar. Wysokość kształtu jako wartość wymiaru lub zasób wymiaru.
android:width
- Wymiar. Szerokość kształtu jako wartość wymiaru lub zasób wymiaru.
Uwaga: domyślnie kształt jest skalowany do rozmiaru kontenera.
wyświetlane proporcjonalnie do zdefiniowanych tutaj wymiarów. Gdy używasz kształtu w elemencie ImageView
, możesz ograniczyć skalowanie przez ustawienie atrybutu android:scaleType
na "center"
.
<solid>
- Jednolity kolor wypełnienia kształtu.
Atrybuty:
android:color
- Kolor. Kolor, który zostanie zastosowany do kształtu w formacie szesnastkowym.
lub zasób koloru.
<stroke>
- Linia przerywana kształtu.
Atrybuty:
android:width
- Wymiar. Grubość linii jako wartość wymiaru lub zasób wymiaru.
android:color
- Kolor. Kolor linii,
wartość szesnastkową lub zasób koloru.
android:dashGap
- Wymiar. Odległość między myślnikami wiersza w formie wartości wymiaru lub zasobu wymiaru. Tej formuły można użyć tylko wtedy, gdy skonfigurowano ustawienie
android:dashWidth
.
android:dashWidth
- Wymiar. Rozmiar każdej linii przerywanej jako wartość wymiaru lub zasób wymiaru. Tej formuły można użyć tylko wtedy, gdy skonfigurowano ustawienie
android:dashGap
.
- przykład:
- Plik XML zapisany o
res/drawable/gradient_box.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
Ten kod XML układu stosuje kształt rysowalny do widoku:
<TextView
android:background="@drawable/gradient_box"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
Ten kod aplikacji pobiera kształt i stosuje go do widoku:
Kotlin
val shape: Drawable? = getDrawable
(resources
, R.drawable.gradient_box, getTheme()
)
val tv: TextView = findViewById(R.id.textview)
tv.background = shape
Java
Resources res = getResources()
;
Drawable shape = ResourcesCompat.getDrawable
(res, R.drawable.gradient_box, getTheme()
);
TextView tv = (TextView)findViewById(R.id.textview);
tv.setBackground(shape);
- zobacz też:
-