Çekilebilir kaynaklar

Çekilebilir kaynak, ekrana çizilebilen ve getDrawable(int) gibi API'lerle alabileceğiniz veya android:drawable ve android:icon gibi özelliklere sahip başka bir XML kaynağına uygulayabileceğiniz bir grafik için genel bir kavramdır. Birkaç çekilebilir öğe türü vardır:

Bitmap dosyası
Bit eşlem grafik dosyası (PNG, WEBP, JPG veya GIF). BitmapDrawable oluşturur.
Dokuz yama dosyası
Resimlerin içeriğe göre yeniden boyutlandırılması için uzatılabilir bölgelere sahip bir PNG dosyası (.9.png). NinePatchDrawable oluşturur.
Katman listesi
Diğer çekilebilir öğeleri yöneten bir çekilebilir programdır. Bunlar dizi sırasına göre çizildiğinden, en büyük dizine sahip öğe yukarıya çizilir. LayerDrawable oluşturur.
Eyalet listesi
Farklı durumlar için farklı bit eşlem grafiklerine referans veren XML dosyası (örneğin, bir düğmeye dokunulduğunda farklı bir resim kullanmak için). StateListDrawable oluşturur.
Seviye listesi
Her birine maksimum sayısal değer atanan çeşitli alternatif çekilebilir öğeleri yöneten bir çekilebilir dosyasını tanımlayan XML dosyası. LevelListDrawable oluşturur.
Çekilebilir geçiş özelliği
İki çekilebilir kaynak arasında geçiş yapabilen bir çekilebilir dosyasını tanımlayan XML dosyası. TransitionDrawable oluşturur.
İçeri çekilebilir
Belirtilen mesafeye göre başka bir çekilebilir öğe yerleştiren bir çekilebilir dosyayı tanımlayan XML dosyası. Bu, bir görünüm için görünümün gerçek sınırlarından daha küçük bir arka plan çekilebilir öğesine ihtiyaç duyulduğunda yararlı olur.
Klip çekilebilir
Bir çekilebilir öğenin geçerli seviye değerine göre başka bir çekilebilir öğesini kesen bir çekilebilir öğe tanımlayan XML dosyası. ClipDrawable oluşturur.
Çekilebilir ölçekleme
Başka bir çekilebilir öğenin boyutunu geçerli düzey değerine göre değiştiren bir çekilebilir öğe tanımlayan XML dosyası. ScaleDrawable oluşturur
Şekil çizilebilir.
Renkler ve renk geçişleri de dahil olmak üzere geometrik bir şekli tanımlayan XML dosyası. GradientDrawable oluşturur.

AnimationDrawable oluşturma hakkında bilgi için Animasyon kaynakları dokümanına bakın.

Not: Renk kaynağı, XML'de çekilebilir bir kaynak olarak da kullanılabilir. Örneğin, eyalet listesi çizimi oluştururken android:drawable özelliği (android:drawable="@color/green") için bir renk kaynağına başvurabilirsiniz.

Bit eşlem

Bit eşlem resmi. Android şu biçimlerdeki bit eşlem dosyalarını destekler: PNG (tercih edilen), WEBP (tercih edilen, API düzeyi 17 veya sonraki sürümleri gerekir), JPG (kabul edilebilir), GIF (önerilmez).

Kaynak kimliği olarak dosya adını kullanarak bir bit eşlem dosyasına doğrudan referans verebilir veya XML'de bir takma ad kaynak kimliği oluşturabilirsiniz.

Not: Bit eşlem dosyaları, derleme işlemi sırasında aapt aracı tarafından kayıpsız resim sıkıştırma ile otomatik olarak optimize edilebilir. Örneğin, 256'dan fazla renk gerektirmeyen gerçek renkli bir PNG, renk paletine sahip 8 bitlik bir PNG'ye dönüştürülebilir. Böylece, daha az bellek gerektiren, eşit kalitede bir görüntü elde edilir.

Bu nedenle, bu dizine yerleştirilen resim ikili programlarının derleme sırasında değişebileceğini unutmayın. Bir görüntüyü bit eşlem olarak dönüştürmek için bit akışı olarak okumayı planlıyorsanız resimlerinizi bunun yerine optimize edilmediği res/raw/ klasörüne yerleştirin.

Bit eşlem dosyası

Bit eşlem dosyası PNG, WEBP, JPG veya GIF dosyasıdır. Android, bu dosyaları res/drawable/ dizinine kaydettiğinizde bu dosyalardan herhangi biri için bir Drawable kaynağı oluşturur.

dosya konumu:
res/drawable/filename.png (.png, .webp, .jpg veya .gif)
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
BitmapDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
örnek:
res/drawable/myimage.png konumuna kaydedilen bir resimle birlikte bu düzen XML'si, resmi bir görünüme uygular:
<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/myimage" />

Aşağıdaki uygulama kodu bu resmi Drawable olarak alır:

Kotlin

val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.myimage, null)

Java

Resources res = getResources();
Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.myimage, null);
ayrıca bakın:

XML bit eşlemi

XML bit eşlemi, XML'de tanımlanan ve bit eşlem dosyasını işaret eden bir kaynaktır. Efekt, ham bit eşlem dosyasının bir takma adı gibidir. XML, bit eşlem için karartma ve döşeme gibi ek özellikler belirtebilir.

Not: <bitmap> öğesini, <item> öğesinin alt öğesi olarak kullanabilirsiniz. Örneğin, bir eyalet listesi veya katman listesi oluştururken android:drawable özelliğini bir <item> öğesinden hariç tutabilir ve içine çekilebilir öğeyi tanımlayan bir <bitmap> yerleştirebilirsiniz.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
BitmapDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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"] />
öğeler:
<bitmap>
Zorunlu. Bit eşlem kaynağını ve özelliklerini tanımlar.

Özellikler:

xmlns:android
Dize. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır. Bu işlem, yalnızca <bitmap> kök öğeyse gereklidir. <bitmap>, <item> içine iç içe yerleştirildiğinde gerekli değildir.
android:src
Çekilebilir kaynak. Zorunludur. Çekilebilir bir kaynağa referans verin.
android:antialias
Boole. Kenar yumuşatmayı etkinleştirir veya devre dışı bırakır.
android:dither
Boole. Bit eşlem, RGB 565 ekranında ARGB 8888 bit eşlem gibi ekranla aynı piksel yapılandırmasına sahip değilse bit eşlemin titremesini etkinleştirir veya devre dışı bırakır.
android:filter
Boole. Bit eşlem filtrelemeyi etkinleştirir veya devre dışı bırakır. Filtreleme, bit eşlem, görünümünü yumuşatmak için küçültüldüğünde veya genişletildiğinde kullanılır.
android:gravity
Anahtar kelime. Bit eşlemin yerçekimini tanımlar. Yer çekimi, bit eşlem container'dan küçükse çekilebilir öğenin kapsayıcısında nereye konumlanacağını gösterir.

| ile ayrılmış aşağıdaki sabit değerlerden biri veya daha fazlası olmalıdır:

DeğerAçıklama
top Nesneyi, boyutunu değiştirmeden, kapsayıcısının en üstüne yerleştirin.
bottom Nesneyi, boyutunu değiştirmeden, kapsayıcısının en altına yerleştirin.
left Nesneyi, boyutunu değiştirmeden, kapsayıcısının sol kenarına yerleştirin.
right Nesneyi, boyutunu değiştirmeden, kapsayıcısının sağ kenarına yerleştirin.
center_vertical Nesneyi, boyutunu değiştirmeden kapsayıcının dikey merkezine yerleştirin.
fill_vertical Gerekirse nesnenin kapsayıcısını tamamen doldurması için dikey boyutunu büyütün.
center_horizontal Nesneyi, boyutunu değiştirmeden kapsayıcının yatay merkezine yerleştirin.
fill_horizontal Gerekirse nesnenin kabını tamamen doldurması için yatay boyutunu büyütün.
center Nesneyi, boyutunu değiştirmeyecek şekilde hem dikey hem de yatay eksende kapsayıcısının ortasına yerleştirin.
fill Gerekiyorsa nesnenin kapsayıcısını tamamen doldurması için nesnenin yatay ve dikey boyutunu büyütün. Bu varsayılan seçenektir.
clip_vertical Alt öğenin üst ve/veya alt kenarlarının kapsayıcının sınırlarına kırpılması için ayarlanabilen ek seçenek. Klip, dikey yer çekimine dayalıdır: Üst yer çekimi alt kenarı, alt yerçekimi üst kenarı kırpar ve her iki kenar da klipslemez.
clip_horizontal Alt öğenin sol ve/veya sağ kenarlarının kapsayıcının sınırlarına kırpılması için ayarlanabilen ek seçenek. Klip, yatay yer çekimine dayanır: Sol yer çekimi sağ kenardan, sağ yer çekimi sol kenardan kırpar ve her iki kenardan da klip oluşturmaz.
android:mipMap
Boole. Mipmap ipucunu etkinleştirir veya devre dışı bırakır. Daha fazla bilgi için setHasMipMap() belgesine göz atın. False varsayılan değerdir.
android:tileMode
Anahtar kelime. Döşeme modunu tanımlar. Karo modu etkinleştirildiğinde bit eşlem tekrarlanır. Döşeme modu etkinleştirildiğinde yerçekimi göz ardı edilir.

Aşağıdaki sabit değerlerden biri olmalıdır:

DeğerAçıklama
disabled Bit eşlemi döşemeyin. Bu, varsayılan değerdir.
clamp Gölgelendirici orijinal sınırlarının dışına çizim yapıyorsa kenar rengini çoğaltın
repeat Gölgelendiricinin görüntüsünü yatay ve dikey olarak tekrarlayın.
mirror Gölgelendiricinin görüntüsünü yatay ve dikey yönde tekrar edin. Bitişik resimlerin her zaman birbirine denk gelmesi için sırasıyla ayna görüntüleri kullanın.
örnek:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/icon"
    android:tileMode="repeat" />
ayrıca bakın:

Dokuz Bant

NinePatch, görünümdeki içerik normal resim sınırlarını aştığında Android'in ölçeklendirebileceği uzatılabilir bölgeler tanımlayabileceğiniz bir PNG resmidir. Bu resim türünü genellikle en az bir boyutu "wrap_content" olarak ayarlanmış bir görünümün arka planı olarak atarsınız.

Görünüm, içeriği barındıracak şekilde büyüdüğünde, dokuz yama resmi de görünümün boyutuna uyacak şekilde ölçeklendirilir. Dokuz yamalı resmin kullanımına örnek olarak Android'in standart Button widget'ı tarafından kullanılan arka plan, düğmenin içindeki metni (veya resmi) kapsayacak şekilde genişletilmesi gerekir.

Normal bir bit eşlemede olduğu gibi, dokuz yama dosyasına doğrudan veya XML tarafından tanımlanan bir kaynaktan başvurabilirsiniz.

Uzatılabilir bölgeler içeren dokuz yama dosyasının nasıl oluşturulacağıyla ilgili kapsamlı bir açıklama için Yeniden boyutlandırılabilir bit eşlemler oluşturma (9 yama dosyaları) konusuna bakın.

Dokuz yama dosyası

dosya konumu:
res/drawable/filename.9.png
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
NinePatchDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
örnek:
res/drawable/myninepatch.9.png konumuna kaydedilen bir resimle birlikte, bu düzen XML'i bir görünüme dokuz yama uygular:
<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/myninepatch" />
ayrıca bakın:

XML dokuz yaması

XML dokuz yaması, XML'de tanımlanan ve bir dokuz yama dosyasına işaret eden bir kaynaktır. XML, resim için dalgalanmaları belirtebilir.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
NinePatchDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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"] />
öğeler:
<nine-patch>
Zorunlu. Dokuz yama kaynağını ve özelliklerini tanımlar.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
android:src
Çekilebilir kaynak. Zorunludur. Dokuz yama dosyasına başvuruda bulunun.
android:dither
Boole. Bit eşlem, RGB 565 ekranında ARGB 8888 bit eşlem gibi ekranla aynı piksel yapılandırmasına sahip değilse bit eşlemin titremesini etkinleştirir veya devre dışı bırakır.
örnek:
<?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" />

Katman listesi

LayerDrawable, diğer çekilebilir öğeleri yöneten çekilebilir bir nesnedir. Listedeki her çizim, listenin sırasına göre çizilir. Listedeki son çizim en üste çizilir.

Her çizim tek bir <layer-list> öğesi içinde bir <item> öğesiyle temsil edilir.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
LayerDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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>
öğeler:
<layer-list>
Zorunlu. Bu, kök öğe olmalıdır. Bir veya daha fazla <item> öğesi içerir.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
<item>
Çekilebilir katmanına, özelliklerine göre belirlenen bir konuma yerleştirilebilecek bir çekilebilir öğe tanımlar. Bir <layer-list> öğesinin alt öğesi olmalıdır. Alt <bitmap> öğelerini kabul eder.

Özellikler:

android:drawable
Çekilebilir kaynak. Zorunludur. Çekilebilir bir kaynağa referans verin.
android:id
Kaynak Kimliği. Bu çekilebilir malzeme için benzersiz bir kaynak kimliği. Bu öğe için yeni bir kaynak kimliği oluşturmak üzere şu formu kullanın: "@+id/name". Artı simgesi, yeni bir kimlik olarak oluşturulduğunu gösterir. Bu tanımlayıcıyı, View.findViewById() veya Activity.findViewById() ile çekilebilirliği almak ve değiştirmek için kullanabilirsiniz.
android:top
Boyut. Boyut değeri veya boyut kaynağı olarak üst ofset.
android:right
Boyut. Boyut değeri veya boyut kaynağı olarak sağ ofset.
android:bottom
Boyut. Boyut değeri veya boyut kaynağı olarak alt ofset.
android:left
Boyut. Boyut değeri veya boyut kaynağı olarak sol ofset.

Çekilebilir tüm öğeler, varsayılan olarak kapsayıcı görünümünün boyutuna sığacak şekilde ölçeklendirilir. Dolayısıyla, resimlerinizi farklı konumlardaki bir katman listesine yerleştirmek görünümün boyutunu artırabilir ve bazı resimler uygun şekilde ölçeklendirilebilir.

Listedeki öğelerin ölçeklendirilmesini önlemek amacıyla, çizimi belirtmek ve "center" gibi ölçeklenmeyen bir öğeye yerçekimi tanımlamak için <item> öğesi içinde bir <bitmap> öğesi kullanın. Örneğin, aşağıdaki <item>, kapsayıcı görünümüne sığacak şekilde ölçeklendirilen bir öğeyi tanımlar:

<item android:drawable="@drawable/image" />

Ölçeklendirmeyi önlemek için aşağıdaki örnekte yer çekimi ortalanmış <bitmap> öğesi kullanılmaktadır:

<item>
  <bitmap android:src="@drawable/image"
          android:gravity="center" />
</item>
örnek:
XML dosyasının res/drawable/layers.xml konumuna kaydedildi:
<?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>

Bu örnekte, yer çekimi "center" olan her bir öğe için çekilebilir kaynağı tanımlamak amacıyla iç içe yerleştirilmiş bir <bitmap> öğesi kullanılmaktadır. Bu, ofset görüntülerinin neden olduğu yeniden boyutlandırma nedeniyle, hiçbir görüntünün kapsayıcının boyutuna sığmayacak şekilde ölçeklendirilmemesini sağlar.

Bu düzen XML'si, çizilebilir öğeyi bir görünüme uygular:

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />

Sonuçta, gittikçe ofseti giderek artan resimlerden oluşur:

ayrıca bakın:

Eyalet listesi

StateListDrawable, XML'de tanımlanan ve nesnenin durumuna bağlı olarak aynı grafiği temsil etmek için birden fazla resim kullanan çekilebilir bir nesnedir. Örneğin, bir Button widget'ının durumuna dokunulabilir, odaklanılabilir veya her ikisi de olmayabilir. Bir durum listesi çekilebilirliğini kullanarak her durum için farklı bir arka plan resmi sağlayabilirsiniz.

Eyalet listesini bir XML dosyasında açıklarsınız. Her grafik, tek bir <selector> öğesi içinde bir <item> öğesiyle temsil edilir. Her <item>, çizim için grafik olarak kullanıldığı durumu tanımlamak için çeşitli özellikler kullanır.

Her bir durum değişikliği sırasında, durum listesi yukarıdan aşağıya doğru gezilir ve geçerli durumla eşleşen ilk öğe kullanılır. Seçim,"en iyi eşleşmeye" dayalı değildir. Bunun yerine eyaletin minimum ölçütlerini karşılayan ilk öğeye dayanır.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
StateListDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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>
öğeler:
<selector>
Zorunlu. Bu, kök öğe olmalıdır. Bir veya daha fazla <item> öğesi içerir.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
android:constantSize
Boole. Çekilebilir öğenin raporlanan dahili boyutu, durum değiştikçe sabit kalırsa (boyut, tüm durumların maksimumudur) doğru, boyut mevcut duruma göre değişiyorsa yanlış değerini alır. Varsayılan, false (yanlış) değeridir.
android:dither
Boole. Bit eşlem, RGB 565 ekranında ARGB 8888 bit eşlem gibi ekranla aynı piksel yapılandırmasına sahip değilse bit eşlemin titremesini etkinleştirmek için doğru değerini, renk titremesini devre dışı bırakmak için yanlış değerini alır. Varsayılan, doğru değeridir.
android:variablePadding
Boole. Çekilebilir öğenin dolgusu, seçili geçerli duruma göre değişirse doğru değerini, tüm durumların maksimum dolgusuna göre dolgunun aynı kalması gerekiyorsa yanlış değerini alır. Bu özelliği etkinleştirmek için durum değiştiğinde performans düzeniyle ilgilenmeniz gerekir. Bu genellikle desteklenmez. Varsayılan, false (yanlış) değeridir.
<item>
Özelliklerinde açıklandığı şekilde, belirli durumlarda kullanılmak üzere bir çekilebilir öğe tanımlar. Bir <selector> öğesinin alt öğesi olmalıdır.

Özellikler:

android:drawable
Çekilebilir kaynak. Zorunludur. Çekilebilir bir kaynağa referans.
android:state_pressed
Boole. Bu öğe, nesneye dokunulduğunda (ör. bir düğmeye dokunulduğunda) kullanılıyorsa doğru, dokunulmamış öğe varsayılan durumda kullanılıyorsa yanlış değerini alır.
android:state_focused
Boole. Bu öğe, nesne giriş odağına sahip olduğunda (örneğin, kullanıcı bir metin girişi seçtiğinde) kullanılıyorsa doğru, bu öğe varsayılan, odaklanmamış durumda kullanılıyorsa yanlış değerini alır.
android:state_hovered
Boole. İmleç nesnenin üzerine geldiğinde bu öğe kullanılıyorsa "true" değerini, üzerine gelindiğinde varsayılan olarak kullanılıyorsa "false" değerini alır. Genellikle bu çizim, "odaklanmış" durum için kullanılan çizimle aynı olabilir.

API düzeyi 14'te kullanıma sunulmuştur.

android:state_selected
Boole. Yönlü bir kontrolle gezinirken (ör. D-pad'le bir listede gezinirken) nesne geçerli kullanıcı seçimi olduğunda bu öğe kullanılıyorsa doğru değerini döndürür. Nesne seçilmediğinde bu öğe kullanılıyorsa yanlış değerini alır.

Seçilen durum, android:state_focused yeterli olmadığında (ör. liste görünümüne odaklanıldığında ve içindeki bir öğe D-pad ile seçildiğinde) kullanılır.

android:state_checkable
Boole. Nesne seçilebilir olduğunda bu öğe kullanılıyorsa doğru değerini, nesne seçilemezse bu öğe için yanlış değerini alır. Yalnızca, nesnenin seçilebilir ve seçilemeyen bir widget arasında geçiş yapabildiği durumlarda kullanışlıdır.
android:state_checked
Boole. Nesne seçildiğinde bu öğe kullanılıyorsa doğru, nesne seçilmediğinde kullanılıyorsa yanlış değerini alır.
android:state_enabled
Boole. Bu öğe, nesne etkinleştirildiğinde kullanılıyorsa doğru, yani dokunma veya tıklama etkinliklerini alabiliyorsa doğru, nesne devre dışıyken kullanılıyorsa yanlış değerini alır.
android:state_activated
Boole. Bu öğe, nesne kalıcı seçim olarak etkinleştirildiğinde kullanıldığında doğru değerini alır. Örneğin, daha önce seçilen liste öğesini kalıcı gezinme görünümünde "vurgulamak" için kullanabilirsiniz. Doğru değerine ayarlandığında nesne etkinleştirilmezse yanlış değerini alır.

API düzeyi 11'de kullanıma sunuldu.

android:state_window_focused
Boole. Bu öğe, uygulama penceresi odaklanıldığında kullanılıyorsa (yani uygulama ön plandaysa); yanlış; örneğin, bildirim gölgesi aşağı çekildiğinde veya iletişim kutusu göründüğünde bu öğe uygulama penceresinin odağı yoksa kullanılırsa doğru değerini döndürür.

Not: Android, durum listesindeki nesnenin mevcut durumuyla eşleşen ilk öğeyi uygular. Dolayısıyla, listedeki ilk öğe önceki durum özelliklerinin hiçbirini içermiyorsa her seferinde uygulanır. Bu nedenle, aşağıdaki örnekte gösterildiği gibi varsayılan değerinizin her zaman son değer olmasını istersiniz.

örnek:
XML dosyasının res/drawable/button.xml konumuna kaydedildi:
<?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>

Bu düzen XML'si, bir düğmeye çekilebilir durum listesini uygular:

<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />
ayrıca bakın:

Seviye listesi

Her birine maksimum sayısal değer atanmış bir dizi alternatif çekilebilir öğeyi yöneten çekilebilir reklam. Çekilebilir öğesinin setLevel() ile seviye değerinin ayarlanması, düzey listesinde yönteme iletilen değerden büyük veya bu değere eşit android:maxLevel değerine sahip çekilebilir kaynağı yükler.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
LevelListDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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>
öğeler:
<level-list>
Zorunlu. Bu, kök öğe olmalıdır. Bir veya daha fazla <item> öğesi içerir.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
<item>
Belirli bir seviyede kullanılacak bir çekici tanımlar.

Özellikler:

android:drawable
Çekilebilir kaynak. Zorunludur. Eklenecek çekilebilir bir kaynağa referans verin.
android:maxLevel
Tamsayı. Bu öğe için izin verilen maksimum seviye.
android:minLevel
Tamsayı. Bu öğe için izin verilen minimum seviye.
örnek:
<?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>

Bu seviye bir View için uygulandıktan sonra setLevel() veya setImageLevel() ile değiştirilebilir.

ayrıca bakın:

Çekilebilir geçişli

TransitionDrawable, diğer iki çekilebilir kaynak arasında geçiş yapabilen çekilebilir bir nesnedir.

Her çizim tek bir <transition> öğesi içinde bir <item> öğesiyle temsil edilir. En fazla iki öğe desteklenir. Geçişi ileriye taşımak için startTransition() numaralı telefonu arayın. Geriye geçiş için reverseTransition() numaralı telefonu arayın.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
TransitionDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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>
öğeler:
<transition>
Zorunlu. Bu, kök öğe olmalıdır. Bir veya daha fazla <item> öğesi içerir.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
<item>
Çekilebilir geçişin parçası olarak kullanılacak bir çekici tanımlar. Bir <transition> öğesinin alt öğesi olmalıdır. Alt <bitmap> öğelerini kabul eder.

Özellikler:

android:drawable
Çekilebilir kaynak. Zorunludur. Çekilebilir bir kaynağa referans verin.
android:id
Kaynak Kimliği. Bu çekilebilir malzeme için benzersiz bir kaynak kimliği. Bu öğe için yeni bir kaynak kimliği oluşturmak üzere şu formu kullanın: "@+id/name". Artı simgesi, yeni bir kimlik olarak oluşturulduğunu gösterir. Bu tanımlayıcıyı, View.findViewById() veya Activity.findViewById() ile çekilebilirliği almak ve değiştirmek için kullanabilirsiniz.
android:top
Tamsayı. Piksel cinsinden üst göreli konum.
android:right
Tamsayı. Piksel cinsinden sağ ofset.
android:bottom
Tamsayı. Piksel cinsinden alt ofset.
android:left
Tamsayı. Piksel cinsinden sol ofset.
örnek:
XML dosyasının res/drawable/transition.xml konumuna kaydedildi:
<?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>

Bu düzen XML'si, çizilebilir öğeyi bir görünüme uygular:

<ImageButton
    android:id="@+id/button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/transition" />

Aşağıdaki kod da ilk öğeden ikinciye 500 ms'lik bir geçiş gerçekleştirir:

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);
}
ayrıca bakın:

İçeri çekilebilir

XML'de tanımlanmış ve belirtilen bir uzaklığa göre başka bir çekilebilir öğe yerleştiren bir çekilebilir öğe. Bir görünüm, gerçek sınırlarından daha küçük bir arka plana ihtiyaç duyduğunda bu özellik faydalı olur.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
InsetDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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" />
öğeler:
<inset>
Zorunlu. İç çekilebilir öğesini tanımlar. Bu, kök öğe olmalıdır.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
android:drawable
Çekilebilir kaynak. Zorunludur. Eklenecek çekilebilir bir kaynağa referans verin.
android:insetTop
Boyut. Boyut değeri veya boyut kaynağı olarak üst ek.
android:insetRight
Boyut. Boyut değeri veya boyut kaynağı olarak sağ içe metin.
android:insetBottom
Boyut. Boyut değeri veya boyut kaynağı olarak alt küme.
android:insetLeft
Boyut. Boyut değeri veya boyut kaynağı olarak sol içe değer.
örnek:
<?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" />
ayrıca bakın:

Klip çekilebilir

Bu çekilebilir malzemenin geçerli düzeyine göre başka bir çekilebilir öğesini kesen, XML'de tanımlanmış bir çizim. Alt çekilebilir öğenin ne kadar genişlik ve yükseklikten kırpılacağını seviyeye göre denetleyebilirsiniz. Ayrıca, öğenin genel kapsayıcısında nereye yerleştirileceğini kontrol etmek için yer çekimini de kontrol edebilirsiniz. Genellikle ilerleme çubukları gibi şeyleri uygulamak için kullanılır.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
ClipDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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"] />
öğeler:
<clip>
Zorunlu. Klibi çekilebilir biçimde tanımlar. Bu, kök öğe olmalıdır.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
android:drawable
Çekilebilir kaynak. Zorunludur. Kırpılacak çekilebilir bir kaynağa referans.
android:clipOrientation
Anahtar kelime. Klibin yönü.

Aşağıdaki sabit değerlerden biri olmalıdır:

DeğerAçıklama
horizontal Çekilebilir dokümanı yatay olarak kırpın.
vertical Çekilebilir çizimi dikey olarak kırpın.
android:gravity
Anahtar kelime. Çekilebilir öğenin içinde nerede kırpılacağını belirtir.

| ile ayrılmış aşağıdaki sabit değerlerden biri veya daha fazlası olmalıdır:

DeğerAçıklama
top Nesneyi, boyutunu değiştirmeden, kapsayıcısının en üstüne yerleştirin. clipOrientation, "vertical" olduğunda kırpma işlemi, çekilebilir görüntünün en alt kısmında gerçekleşir.
bottom Nesneyi, boyutunu değiştirmeden, kapsayıcısının en altına yerleştirin. clipOrientation değeri "vertical" olduğunda kırpma işlemi, çekilebilir alanın üst kısmında gerçekleşir.
left Nesneyi, boyutunu değiştirmeden, kapsayıcısının sol kenarına yerleştirin. Bu varsayılan seçenektir. clipOrientation değeri "horizontal" olduğunda kırpma işlemi, çekilebilir görüntünün sağ tarafında gerçekleşir.
right Nesneyi, boyutunu değiştirmeden, kapsayıcısının sağ kenarına yerleştirin. clipOrientation, "horizontal" olduğunda kırpma işlemi, çekilebilir görüntünün sol tarafında gerçekleşir.
center_vertical Nesneyi, boyutunu değiştirmeden kapsayıcının dikey merkezine yerleştirin. Kırpma, yer çekiminin "center" olduğu zamanki gibi davranır.
fill_vertical Gerekirse nesnenin kapsayıcısını tamamen doldurması için dikey boyutunu büyütün. clipOrientation, "vertical" olduğunda, çekilebilir öğe dikey alanı doldurduğundan kırpma gerçekleşmez (çekilebilir düzey 0 olmadığı sürece, bu seviye görünmez).
center_horizontal Nesneyi, boyutunu değiştirmeden, kapsayıcısının yatay merkezine yerleştirin. Kırpma, yer çekiminin "center" olduğu zamanla aynı şekilde davranır.
fill_horizontal Gerekirse nesnenin kabını tamamen doldurması için yatay boyutunu büyütün. clipOrientation, "horizontal" olduğunda çekilebilir öğe yatay alanı doldurduğundan kırpma gerçekleşmez (çekilebilir düzey 0 olmadığı sürece, bu düzey görünmez).
center Nesneyi, boyutunu değiştirmeyecek şekilde hem dikey hem de yatay eksende kapsayıcısının ortasına yerleştirin. clipOrientation, "horizontal" olduğunda kırpma sol ve sağ tarafta gerçekleşir. clipOrientation değeri "vertical" olduğunda kırpma işlemi üstte ve altta gerçekleşir.
fill Gerekiyorsa nesnenin kapsayıcısını tamamen doldurması için nesnenin yatay ve dikey boyutunu büyütün. Çekilebilir öğe yatay ve dikey alanı doldurduğundan kırpma gerçekleşmez (çekilebilir düzey 0 olmadığı sürece, bu düzey görünmez).
clip_vertical Alt öğenin üst ve/veya alt kenarlarının kapsayıcının sınırlarına kırpılması için ayarlanabilen ek seçenek. Klip, dikey yer çekimine dayalıdır: Üst yer çekimi alt kenarı, alt yerçekimi üst kenarı kırpar ve her iki kenar da klipslemez.
clip_horizontal Alt öğenin sol ve/veya sağ kenarlarının kapsayıcının sınırlarına kırpılması için ayarlanabilen ek seçenek. Klip, yatay yer çekimine dayanır: Sol yer çekimi sağ kenardan, sağ yer çekimi sol kenardan kırpar ve her iki kenardan da klip oluşturmaz.
örnek:
XML dosyasının res/drawable/clip.xml konumuna kaydedildi:
<?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" />

Aşağıdaki düzen XML'si, çekilebilir klibi bir görünüme uygular:

<ImageView
    android:id="@+id/image"
    android:src="@drawable/clip"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

Aşağıdaki kod, çizimi alır ve görüntüyü kademeli olarak ortaya çıkarmak için kırpma miktarını artırır:

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

Düzeyi artırıldığında kırpma miktarı azalır ve resim yavaşça ortaya çıkar. Burada 7000 seviyesindedir:

Not: Varsayılan düzey 0'dır. Bu düzey, resmin görünmemesi için tamamen kırpılmıştır. Düzey 10.000 olduğunda resim kırpılmaz ve tamamen görünür.

ayrıca bakın:

Çekilebilir ölçekleme

Mevcut düzeyine göre başka bir çekilebilir öğenin boyutunu değiştiren, XML'de tanımlanmış bir çekilebilir öğe.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
ScaleDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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" />
öğeler:
<scale>
Zorunlu. Çekilebilir ölçeği tanımlar. Bu, kök öğe olmalıdır.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
android:drawable
Çekilebilir kaynak. Zorunludur. Çekilebilir bir kaynağa referans verin.
android:scaleGravity
Anahtar kelime. Ölçeklendirmeden sonraki yerçekimi konumunu belirtir.

| ile ayrılmış aşağıdaki sabit değerlerden biri veya daha fazlası olmalıdır:

DeğerAçıklama
top Nesneyi, boyutunu değiştirmeden, kapsayıcısının en üstüne yerleştirin.
bottom Nesneyi, boyutunu değiştirmeden, kapsayıcısının en altına yerleştirin.
left Nesneyi, boyutunu değiştirmeden, kapsayıcısının sol kenarına yerleştirin. Bu varsayılan seçenektir.
right Nesneyi, boyutunu değiştirmeden, kapsayıcısının sağ kenarına yerleştirin.
center_vertical Nesneyi, boyutunu değiştirmeden kapsayıcının dikey merkezine yerleştirin.
fill_vertical Gerekirse nesnenin kapsayıcısını tamamen doldurması için dikey boyutunu büyütün.
center_horizontal Nesneyi, boyutunu değiştirmeden, kapsayıcısının yatay merkezine yerleştirin.
fill_horizontal Gerekirse nesnenin kabını tamamen doldurması için yatay boyutunu büyütün.
center Nesneyi, boyutunu değiştirmeyecek şekilde hem dikey hem de yatay eksende kapsayıcısının ortasına yerleştirin.
fill Gerekiyorsa nesnenin kapsayıcısını tamamen doldurması için nesnenin yatay ve dikey boyutunu büyütün.
clip_vertical Alt öğenin üst ve/veya alt kenarlarının kapsayıcının sınırlarına kırpılması için ayarlanabilen ek seçenek. Klip, dikey yer çekimine dayalıdır: Üst yer çekimi alt kenarı, alt yerçekimi üst kenarı kırpar ve her iki kenar da klipslemez.
clip_horizontal Alt öğenin sol ve/veya sağ kenarlarının kapsayıcının sınırlarına kırpılması için ayarlanabilen ek seçenek. Klip, yatay yer çekimine dayanır: Sol yer çekimi sağ kenardan, sağ yer çekimi sol kenardan kırpar ve her iki kenardan da klip oluşturmaz.
android:scaleHeight
Yüzde. Çekilebilir öğe sınırının yüzdesi olarak ifade edilen ölçek yüksekliği. Değerin biçimi %XX şeklindedir (%100 veya %12,5 gibi).
android:scaleWidth
Yüzde. Çekilebilir öğe sınırının yüzdesi olarak ifade edilen ölçek genişliği. Değerin biçimi %XX şeklindedir (%100 veya %12,5 gibi).
örnek:
<?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%" />
ayrıca bakın:

Çekilebilir şekil

Bu, XML'de tanımlanan genel bir şekildir.

dosya konumu:
res/drawable/filename.xml
Dosya adı, kaynak kimliğidir
derlenmiş kaynak veri türü:
GradientDrawable öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.drawable.filename
XML'de: @[package:]drawable/filename
söz dizimi:
<?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>
öğeler:
<shape>
Zorunlu. Çekilebilir şekil. Bu, kök öğe olmalıdır.

Özellikler:

xmlns:android
Dize. Zorunludur. XML ad alanını tanımlar. Bu değer "http://schemas.android.com/apk/res/android" olmalıdır.
android:shape
Anahtar kelime. Şeklin türünü tanımlar. Valid values are:
DeğerAçıklama
"rectangle" kapsayıcı görünümünü dolduran bir dikdörtgen. Bu, varsayılan şekildir.
"oval" Kapsayıcı görünümünün boyutlarına uyan oval şekil.
"line" Kapsayıcı görünümün genişliğini kapsayan yatay bir çizgi. Bu şekilde, çizginin genişliğini tanımlamak için <stroke> öğesi gerekir.
"ring" Halka şekli.

Aşağıdaki özellikler yalnızca android:shape="ring" durumunda kullanılır:

android:innerRadius
Boyut. Boyut değeri veya boyut kaynağı olarak halkanın iç kısmının (ortadaki delik) yarıçapı.
android:innerRadiusRatio
Kayan değer. Halkanın iç parçasının yarıçapı. Halkanın genişliğinin oranı olarak ifade edilir. Örneğin, android:innerRadiusRatio="5" ise iç yarıçap, halkanın genişliğinin 5'e bölünmesiyle elde edilir. Bu değer android:innerRadius tarafından geçersiz kılındı. Varsayılan değer 9'dur.
android:thickness
Boyut. Boyut değeri veya boyut kaynağı olarak halkanın kalınlığı.
android:thicknessRatio
Kayan değer. Halkanın kalınlığının halka genişliğinin oranıdır. Örneğin, android:thicknessRatio="2" ise kalınlık, halka genişliğinin 2'ye bölünmesiyle elde edilir. Bu değer android:innerRadius tarafından geçersiz kılındı. Varsayılan değer 3'tür.
android:useLevel
Boole. Bu, LevelListDrawable olarak kullanılıyorsa doğru değerini alır. Bu genellikle yanlıştır, aksi takdirde şekliniz görünmeyebilir.
<corners>
Şekil için yuvarlatılmış köşeler oluşturur. Yalnızca şekil dikdörtgen olduğunda uygulanır.

Özellikler:

android:radius
Boyut. Boyut değeri veya boyut kaynağı olarak tüm köşelerin yarıçapı. Bu, aşağıdaki özellikler tarafından her köşe için geçersiz kılınır.
android:topLeftRadius
Boyut. Boyut değeri veya boyut kaynağı olarak sol üst köşenin yarıçapı.
android:topRightRadius
Boyut. Sağ üst köşenin boyut değeri veya boyut kaynağı olarak yarıçapı.
android:bottomLeftRadius
Boyut. Sol alt köşenin boyut değeri veya boyut kaynağı olarak yarıçapı.
android:bottomRightRadius
Boyut. Sağ alt köşenin boyut değeri veya boyut kaynağı olarak yarıçapı.

Not: Başlangıçta her köşenin 1'den büyük bir köşe yarıçapı sağlanmalıdır. Aksi takdirde, köşeler yuvarlanmaz. Belirli köşelerin yuvarlatılmasını istemiyorsanız geçici bir çözüm, varsayılan köşe yarıçapını 1'den büyük bir değer ayarlamak için android:radius kullanarak ve daha sonra, köşelerin yuvarlatılmasını istemediğiniz yerler için 0 ("0 dp") değeri sağlayarak her köşeyi gerçekten istediğiniz değerlerle geçersiz kılmaktır.

<gradient>
Şeklin gradyan rengini belirtir.

Özellikler:

android:angle
Tamsayı. Renk geçişinin derece cinsinden açısı. 0 soldan sağa, 90 ise alttan üste doğrudur. 45'in katı olmalıdır. Varsayılan değer 0'dır.
android:centerX
Kayan değer. Renk geçişinin merkezi için göreli X konumu (0 - 1,0).
android:centerY
Kayan değer. Renk geçişinin merkezi için göreli Y konumu (0 - 1,0).
android:centerColor
Renk. Başlangıç ve bitiş renkleri arasında onaltılık değer veya renk kaynağı olarak gelen isteğe bağlı renk.
android:endColor
Renk. Onaltılık değer veya renk kaynağı olarak bitiş rengi.
android:gradientRadius
Kayan değer. Renk geçişinin yarıçapı. Yalnızca android:type="radial" durumunda uygulanır.
android:startColor
Renk. Onaltılık değer veya renk kaynağı olarak başlangıç rengi.
android:type
Anahtar kelime. Uygulanacak gradyan deseninin türü. Valid values are:
DeğerAçıklama
"linear" Çizgisel gradyan. Bu varsayılan seçenektir.
"radial" Dairesel renk geçişi. Başlangıç rengi merkez rengidir.
"sweep" Süpürme çizgisi gradyanı.
android:useLevel
Boole. Bu, LevelListDrawable olarak kullanılıyorsa doğru değerini alır.
<padding>
Kapsayıcı görünüm öğesine uygulanacak dolgu. Bu, şeklin değil görüntüleme içeriğinin konumunu doldurur.

Özellikler:

android:left
Boyut. Boyut değeri veya boyut kaynağı olarak sol dolgu.
android:top
Boyut. Boyut değeri veya boyut kaynağı olarak üst dolgu.
android:right
Boyut. Boyut değeri veya boyut kaynağı olarak sağ dolgu.
android:bottom
Boyut. Boyut değeri veya boyut kaynağı olarak alt dolgu.
<size>
Şeklin boyutu.

Özellikler:

android:height
Boyut. Şeklin, boyut değeri veya boyut kaynağı olarak yüksekliği.
android:width
Boyut. Şeklin, boyut değeri veya boyut kaynağı olarak genişliği.

Not: Varsayılan olarak şekil, burada tanımlanan boyutlarla orantılı olarak kapsayıcı görünümünün boyutuna göre ölçeklenir. ImageView içindeki şekli kullanırken android:scaleType öğesini "center" değerine ayarlayarak ölçeklendirmeyi kısıtlayabilirsiniz.

<solid>
Şekli doldurmak için düz bir renk.

Özellikler:

android:color
Renk. Onaltılık değer veya renk kaynağı olarak şekle uygulanacak renk.
<stroke>
Şekil için bir çizgi çizgisi.

Özellikler:

android:width
Boyut. Çizginin, boyut değeri veya boyut kaynağı olarak kalınlığı.
android:color
Renk. Çizginin, onaltılık değer veya renk kaynağı olarak rengi.
android:dashGap
Boyut. Boyut değeri veya boyut kaynağı olarak çizgiler arasındaki mesafe. Yalnızca android:dashWidth ayarlandıysa geçerlidir.
android:dashWidth
Boyut. Boyut değeri veya boyut kaynağı olarak her bir kısa çizgi çizgisinin boyutu. Yalnızca android:dashGap ayarlandıysa geçerlidir.
örnek:
XML dosyasının res/drawable/gradient_box.xml konumuna kaydedildi:
<?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>

Bu düzen XML'si, çizilebilir şekli bir görünüme uygular:

<TextView
    android:background="@drawable/gradient_box"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />

Bu uygulama kodu, şekli çekilebilir hale getirir ve bir görünüme uygular:

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);
ayrıca bakın: