Kaynaklar, kodunuzun kullandığı ek dosyalar ve statik içeriktir (ör. bit eşlemler, düzen tanımları, kullanıcı arayüzü dizeleri, animasyon talimatları ve daha fazlası).
Kodunuzdaki resim ve dize gibi uygulama kaynaklarını her zaman harici hale getirerek bunları bağımsız şekilde saklayabilirsiniz. Ayrıca, belirli cihaz yapılandırmalarını özel olarak adlandırılmış kaynak dizinlerinde gruplandırarak bu yapılandırmalar için alternatif kaynaklar da sağlayabilirsiniz. Android, çalışma zamanında mevcut yapılandırmaya göre uygun kaynağı kullanır. Örneğin, ekran boyutuna göre farklı bir kullanıcı arayüzü düzeni veya dil ayarına bağlı olarak farklı dizeler sağlamak isteyebilirsiniz.
Uygulama kaynaklarınızı harici hale getirdikten sonra, projenizin R
sınıfında oluşturulan kaynak kimliklerini kullanarak bunlara erişebilirsiniz.
Bu dokümanda, Android projenizdeki kaynakları nasıl gruplandıracağınız gösterilmektedir. Ayrıca, belirli cihaz yapılandırmaları için nasıl alternatif kaynaklar sağlayacağınızı ve ardından bu kaynaklara uygulama kodunuzdan veya diğer XML dosyalarından nasıl erişebileceğinizi de gösterir.
Grup kaynak türleri
Her bir kaynak türünü projenizin res/
dizininin belirli bir alt dizinine yerleştirin. Örneğin, basit bir projenin dosya hiyerarşisini burada görebilirsiniz:
MyProject/ src/ MyActivity.java res/ drawable/ graphic.png layout/ main.xml info.xml mipmap/ icon.png values/ strings.xml
res/
dizini, alt dizinlerindeki tüm kaynakları içerir: bir resim kaynağı, iki düzen kaynağı, başlatıcı simgeleri için bir mipmap/
dizini ve bir dize kaynak dosyası. Kaynak dizini adları önemlidir ve 1. tabloda açıklanmıştır.
Not: Mipmap klasörlerini kullanma hakkında daha fazla bilgi için Uygulama simgelerini mipmap dizinlerine yerleştirme konusuna bakın.
Tablo 1. Kaynak dizinleri, res/
projesinin dizininde desteklenir.
Dizin | Kaynak Türü |
---|---|
animator/ |
Özellik animasyonlarını tanımlayan XML dosyaları. |
anim/ |
Tween animasyonlarını tanımlayan XML dosyaları. Mülk animasyonları da bu dizine kaydedilebilir. Ancak iki türü birbirinden ayırt edebilmek için mülk animasyonlarında animator/ dizini tercih edilir. |
color/ |
Renklerin durum listesini tanımlayan XML dosyaları. Daha fazla bilgi için Renk durumu listesi kaynağı bölümüne bakın. |
drawable/ |
Aşağıdaki çekilebilir kaynak alt türlerinde derlenen bit eşlem dosyaları (PNG,
Daha fazla bilgi için Çekilebilir kaynaklar bölümünü inceleyin. |
mipmap/ |
Farklı başlatıcı simgesi yoğunlukları için çekilebilir dosyalar. mipmap/ klasörleriyle başlatıcı simgelerini yönetme hakkında daha fazla bilgi için
Uygulama simgelerini harita dizinlerine yerleştirme konusuna bakın. |
layout/ |
Kullanıcı arayüzü düzenini tanımlayan XML dosyaları. Daha fazla bilgi için Düzen kaynağı konusuna bakın. |
menu/ |
Seçenekler menüsü, içerik menüsü veya alt menü gibi uygulama menülerini tanımlayan XML dosyaları. Daha fazla bilgi için Menü kaynağı bölümüne bakın. |
raw/ |
Ham biçiminde kaydedilecek rastgele dosyalar. Bu kaynakları ham Ancak orijinal dosya adlarına ve dosya hiyerarşisine erişmeniz gerekirse kaynakları |
values/ |
Dizeler, tam sayılar ve renkler gibi basit değerler içeren XML dosyaları. Diğer Her kaynak kendi XML öğesiyle tanımlandığından dosyayı istediğiniz gibi adlandırabilir ve farklı kaynak türlerini bir dosyaya yerleştirebilirsiniz. Ancak, netlik açısından benzersiz kaynak türlerini farklı dosyalara yerleştirmek isteyebilirsiniz. Örneğin, bu dizinde oluşturabileceğiniz kaynaklar için bazı dosya adı kurallarını aşağıda bulabilirsiniz:
Daha fazla bilgi için Dize kaynakları, Stil kaynağı ve Diğer kaynak türleri bölümlerine bakın. |
xml/ |
Resources.getXML() çağrısı yapılarak çalışma zamanında okunabilen rastgele XML dosyaları. Arama yapılandırması gibi çeşitli XML yapılandırma dosyalarının buraya kaydedilmesi gerekir.
|
font/ |
TTF, OTF veya TTC gibi uzantılara sahip yazı tipi dosyaları ya da <font-family> öğesi içeren XML dosyaları. Yazı tiplerini kaynak olarak kullanma hakkında daha fazla bilgi için Yazı tipini XML kaynağı olarak ekleme bölümüne bakın.
|
Dikkat: Kaynak dosyalarını hiçbir zaman doğrudan res/
dizinine kaydetmeyin. Derleyici hatasına neden olur.
Tek tek kaynak türleri hakkında daha fazla bilgi için Kaynak türlerine genel bakış başlıklı makaleyi inceleyin.
Tablo 1'de tanımlanan alt dizinlere kaydettiğiniz kaynaklar, varsayılan kaynaklarınızdır. Yani bu kaynaklar, uygulamanızın varsayılan tasarımını ve içeriğini tanımlar. Bununla birlikte, Android destekli farklı cihaz türleri farklı kaynak türleri gerektirebilir.
Örneğin, ekstra ekran alanından faydalanmak amacıyla normalden daha büyük ekranlara sahip cihazlar için farklı düzen kaynakları sağlayabilirsiniz. Cihazın dil ayarına bağlı olarak kullanıcı arayüzünüzdeki metni çeviren farklı dize kaynakları da sağlayabilirsiniz. Farklı cihaz yapılandırmalarında bu farklı kaynakları sağlamak için varsayılan kaynaklarınızın yanı sıra alternatif kaynaklar da sağlamanız gerekir.
Alternatif kaynaklar sağlama
Çoğu uygulama, belirli cihaz yapılandırmalarını desteklemek için alternatif kaynaklar sağlar. Örneğin, farklı ekran yoğunlukları için alternatif çekilebilir kaynaklar ve farklı diller için alternatif dize kaynakları ekleyin. Android, çalışma zamanında mevcut cihaz yapılandırmasını algılar ve uygulamanız için uygun kaynakları yükler.

Şekil 1. Ekran boyutuna göre farklı düzen kaynakları kullanan iki cihaz.
Bir kaynak grubu için yapılandırmaya özel alternatifler belirtmek üzere aşağıdakileri yapın:
res/
bölgesinde<resources_name>-<qualifier>
biçiminde yeni bir dizin oluşturun.<resources_name>
, ilgili varsayılan kaynakların dizin adıdır (tablo 1'de tanımlanmıştır).<qualifier>
, bu kaynakların kullanılacağı bağımsız bir yapılandırmayı belirten addır (Tablo 2'de tanımlanmıştır).
Birden fazla
<qualifier>
ekleyebilirsiniz. Her birini bir kısa çizgiyle ayırın.Dikkat: Birden fazla niteleyici eklerken bunları tablo 2'de listelendikleri sırayla yerleştirmeniz gerekir. Niteleyiciler yanlış sıralanırsa kaynaklar göz ardı edilir.
- İlgili alternatif kaynakları bu yeni dizine kaydedin. Kaynak dosyaları, varsayılan kaynak dosyalarıyla tam olarak aynı şekilde adlandırılmalıdır.
Örneğin, bazı varsayılan ve alternatif kaynaklar aşağıda verilmiştir:
res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png
hdpi
niteleyicisi, bu dizindeki kaynakların yüksek yoğunluklu ekrana sahip cihazlar için olduğunu belirtir. Bu çekilebilir dizinlerdeki resimler, belirli ekran yoğunlukları için boyutlandırılır, ancak dosya adları tamamen aynıdır. Bu şekilde, icon.png
veya background.png
görüntüsüne referans vermek için kullandığınız kaynak kimliği her zaman aynı olur. Android, cihaz yapılandırma bilgilerini kaynak dizini adındaki niteleyicilerle karşılaştırarak her kaynağın mevcut cihazla en iyi eşleşen sürümünü seçer.
Dikkat: Alternatif bir kaynak tanımlarken kaynağı da varsayılan yapılandırmada tanımladığınızdan emin olun. Aksi takdirde, cihaz bir yapılandırmayı değiştirdiğinde uygulamanız çalışma zamanı istisnalarıyla karşılaşabilir. Örneğin, values
yerine yalnızca values-en
öğesine bir dize eklerseniz kullanıcı varsayılan sistem dilini değiştirdiğinde uygulamanız bir Resource Not Found
istisnasıyla karşılaşabilir.
Tablo 2'de geçerli yapılandırma niteleyicileri öncelik sırasına göre listelenmiştir. Her niteleyiciyi kısa çizgiyle ayırarak bir dizin adına birden fazla niteleyici ekleyebilirsiniz. Bir kaynak dizini için birden fazla niteleyici kullanıyorsanız bunları tabloda listelendikleri sırayla dizin adına eklemeniz gerekir.
Tablo 2. Yapılandırma niteleyici adlarıdır.
Yapılandırma | Niteleyici değerleri | Açıklama |
---|---|---|
MM ve MNC | Örnekler:mcc310
mcc208-mnc00
|
Mobil ülke kodu (MM) ve isteğe bağlı olarak ardından cihazdaki SIM kartta bulunan mobil ağ kodu (MNC). Örneğin, Cihaz radyo bağlantısı kullanıyorsa (yani bir GSM telefonuysa), MM ve MNC değerleri SIM karttan gelir. Örneğin, uygulamanıza ülkeye özgü yasal kaynaklar eklemek için MM'yi tek başına da kullanabilirsiniz. Bunu yalnızca dile göre belirtmeniz gerekiyorsa bunun yerine dil, komut dosyası (isteğe bağlı) ve bölge (isteğe bağlı) niteleyicisini kullanın. MM ve MNC niteleyicisini kullanıyorsanız bunu dikkatli bir şekilde yapın ve beklendiği gibi çalışıp çalışmadığını test edin. Ayrıca, sırasıyla geçerli mobil ülke kodunu ve mobil ağ kodunu belirten |
Dil, alfabe (isteğe bağlı) ve bölge (isteğe bağlı) | Örnekler:en fr en-rUS fr-rFR fr-rCA b+en b+en+US b+es+419 b+zh+Hant b+sr+Latn+RS |
Dil, iki harfli ISO 639-1 dil koduyla ve isteğe bağlı olarak ardından iki harfli ISO 3166-1-alpha-2 bölge koduyla (öncesinde küçük harf Kodlar büyük/küçük harfe duyarlı değildir. Android 7.0 (API düzeyi 24), dile ve bölgeye özgü kaynakları nitelemek için kullanabileceğiniz BCP 47 dil etiketleri desteğini kullanıma sundu. Dil etiketi, bir veya daha fazla alt etiket dizisinden oluşur. Bu alt etiketlerin her biri, genel etiket tarafından tanımlanan dil aralığını hassaslaştırır veya daraltır. Dil etiketleri hakkında daha fazla bilgi için Dilleri Tanımlama Etiketleri konusuna bakın. BCP 47 dil etiketi kullanmak için
Kullanıcılar sistem ayarlarında dillerini değiştirirse dil etiketi, uygulamanızın ömrü boyunca değişebilir. Bu durumun çalışma zamanında uygulamanızı nasıl etkileyebileceği hakkında bilgi edinmek için Yapılandırma değişikliklerini işleme bölümüne bakın. Uygulamanızı diğer dillerde yerelleştirmeye ilişkin eksiksiz bir kılavuz için Uygulamanızı yerelleştirme konusuna bakın. Ayrıca, tanımlanmış yerel ayarların listesini sağlayan |
Düzen yönü | ldrtl ldltr |
Uygulamanızın düzen yönü. Bu; düzenler, çekilebilir öğeler veya değerler gibi herhangi bir kaynak için geçerli olabilir. Örneğin, Arapça için belirli bir düzen ve Farsça ya da İbranice gibi diğer "sağdan sola" diller için de genel bir düzen sağlamak istiyorsanız aşağıdaki gibi dizinleri kullanabilirsiniz:
Not: Uygulamanızda sağdan sola düzen özelliklerini etkinleştirmek için API düzeyi 17'de eklendi. |
En küçük genişlik | sw<N>dp Örnekler: sw320dp sw600dp sw720dp vb. |
Bir uygulama tarafından kullanılabilen ekran alanının en kısa boyutudur. Özellikle, uygulama penceresinin
Örneğin düzeniniz, ekran alanının en küçük boyutunun her zaman en az 600 dp olmasını gerektiriyorsa bu niteleyiciyi kullanarak bir Genel ekran boyutunu belirlemek için en küçük genişliği kullanmak yararlıdır. Bunun nedeni, genişliğin genellikle bir düzeni tasarlarken belirleyici faktör olmasıdır. Kullanıcı arayüzü genellikle dikey olarak kaydırılır ancak yatay olarak ihtiyaç duyduğu minimum alanla ilgili oldukça zor kısıtlamalar vardır. Kullanılabilir genişlik de cep telefonları için tek bölmeli düzenin mi yoksa tabletler için çok bölmeli düzenin mi kullanılacağını belirlemede önemli bir faktördür. Bu nedenle, muhtemelen her cihazda mümkün olan en küçük genişliğin ne olduğuna muhtemelen en çok önem verirsiniz. Bir cihazın en küçük genişliğinde ekran süslemeleri ve sistem kullanıcı arayüzü dikkate alınır. Örneğin, cihazın ekranda en küçük genişlik ekseni boyunca alanı temsil eden kalıcı kullanıcı arayüzü öğeleri varsa sistem, en küçük genişliğin gerçek ekran boyutundan daha küçük olduğunu bildirir. Bunun nedeni, bu öğelerin kullanıcı arayüzünüz için kullanılamayan ekran pikselleri olmasıdır. Sık kullanılan ekran boyutları için burada kullanabileceğiniz bazı değerler:
Uygulamanız API düzeyi 13'te eklendi. Ayrıca, uygulamanızın uyumlu olduğu minimum Bu niteleyiciyi kullanarak farklı ekranlar için tasarım yapma hakkında daha fazla bilgi için Farklı ekran boyutlarını destekleme bölümüne bakın. |
Kullanılabilir genişlik ve yükseklik | w<N>dp h<N>dp Örnekler: w720dp w1024dp h720dp h1024dp vb. |
Kaynağın kullanıldığı minimum ekran genişliğini veya yüksekliğini ( Kullanılabilen genişlik ve yükseklik, genellikle çok bölmeli düzenin kullanılıp kullanılmayacağını belirlerken kullanışlıdır. Çünkü bir tablet cihazda bile, dikey yön için genellikle yatay yön için kullandığınız çoklu bölmeli düzeni genellikle yatay yönde kullanmakla istemezsiniz. Böylece, hem ekran boyutu hem de yön niteleyicilerini birlikte kullanmak yerine, düzen için gereken minimum genişliği ve/veya yüksekliği belirtmek amacıyla bunları kullanabilirsiniz. Uygulamanız bu yapılandırmalar için farklı değerlere sahip birden fazla kaynak dizini sağladığında sistem, cihazın geçerli ekran genişliğine en yakın olanı (aşmadan) kullanır. En yakın değeri, gerçek ekran genişliği ve belirtilen genişlik arasındaki farkın, gerçek ekran yüksekliği ile belirtilen yükseklik arasındaki fark eklenerek belirlenir. Belirtilmemiş yükseklik ve genişlik değeri 0 değerine sahiptir. Değerler, Pencere eklerinin kapladığı alanı hariç tutar. Bu nedenle, cihazın ekranın kenarlarında kalıcı kullanıcı arayüzü öğeleri varsa genişlik ve yükseklik değerleri, uygulama
Sabit olmayan bazı dikey ekran süslemeleri (ör. tam ekran olduğunda gizlenebilen telefon durum çubuğu) burada hesaba katılmaz. Başlık çubuğu veya işlem çubuğu gibi pencere süslemeleri de söz konusu değildir. Bu nedenle, uygulamaların belirttiğinden biraz daha küçük bir alanı kullanmaya hazırlıklı olması gerekir. Not: Sistem, hem genişlik hem de yükseklik bakımından eşleşen kaynağı seçer. Bu nedenle, her ikisinin de belirtildiği bir kaynak, yalnızca birini belirten bir kaynak yerine kesinlikle tercih edilir. Örneğin, gerçek ekran 720 dp genişliğinde ve 1.280 dp yüksekliğindeyse ve bir kaynak w720dp ve bir diğeri w700dp-h1200dp olarak nitelendiriliyorsa ilki belirtilenle tam olarak eşleşiyor olsa bile ikincisi seçilir. API düzeyi 13'te eklendi. Mevcut ekran genişliğini ve yüksekliğini barındıran Bu niteleyiciyi kullanarak farklı ekranlar için tasarım yapma hakkında daha fazla bilgi için Farklı ekran boyutlarını destekleme bölümüne bakın. |
Ekran boyutu |
small normal large xlarge
|
Not: Boyut niteleyici kullanmak, kaynakların yalnızca bu boyuttaki ekranlar için olduğu anlamına gelmez. Mevcut cihaz yapılandırmasına daha uygun niteleyicilerle alternatif kaynaklar sağlamazsanız sistem, en uygun kaynakları kullanabilir. Dikkat: Tüm kaynaklarınızda mevcut ekrandan daha büyük bir boyut niteleyici kullanılıyorsa sistem bu niteleyicileri kullanmaz ve uygulamanız çalışma zamanında kilitlenir. Örneğin, tüm düzen kaynakları API düzeyi 4'te eklendi. Ayrıca ekranın küçük, normal veya büyük olduğunu belirten Daha fazla bilgi için Ekran uyumluluğuna genel bakış konusuna bakın. |
Ekran en boy oranı |
long notlong
|
API düzeyi 4'te eklendi. Bu özellik sadece ekranın en boy oranına bağlıdır ( Ayrıca, ekranın uzun olup olmadığını belirten |
Yuvarlak ekran |
round notround
|
API düzeyi 23'te eklendi. Ekranın yuvarlak olup olmadığını belirten |
Geniş Renk Gamı |
widecg nowidecg
|
API düzeyi 26'da eklendi. Ekranın geniş bir renk gamına sahip olup olmadığını belirten |
Yüksek Dinamik Aralık (HDR) |
highdr lowdr
|
API düzeyi 26'da eklendi. Ekranın HDR özelliklerinin olup olmadığını belirten |
Ekran yönü |
port land
|
Kullanıcı ekranı döndürürse uygulamanızın kullanım ömrü boyunca bu değer değişebilir. Bu durumun çalışma zamanında uygulamanızı nasıl etkileyeceği hakkında bilgi edinmek için Yapılandırma değişikliklerini işleme bölümüne bakın. Mevcut cihaz yönünü belirten |
kullanıcı arayüzü modu |
car desk television appliance watch vrheadset
|
API düzeyi 8'de eklendi; API 13'te televizyon eklendi; izleme API 20'de eklendi. Cihaz bir yuvaya eklendiğinde veya yuvadan kaldırıldığında uygulamanızın nasıl yanıt verebileceği hakkında bilgi edinmek için Yuvaya yerleştirme durumunu ve türünü belirleme ve izleme başlıklı makaleyi inceleyin. Kullanıcı cihazı bir yuvaya yerleştirirse bu durum uygulamanızın kullanım ömrü boyunca değişebilir. |
Gece modu |
night notnight
|
API düzeyi 8'de eklendi. Gece modu otomatik modda (varsayılan) bırakılırsa bu durum uygulamanızın ömrü boyunca değişebilir. Bu durumda mod, günün saatine göre değişir. Bu modu |
Ekran piksel yoğunluğu (dpi) |
ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi nodpi tvdpi anydpi nnndpi
|
Altı birincil yoğunluk arasında 3:4:6:8:12:16 ölçeklendirme oranı vardır (tvdpi yoğunluğu göz ardı edilir). Yani ldpi'de 9x9 bit eşlem, mdpi'de 12x12, hdpi'de 18x18, xhdpi'de 24x24 vb. Not: Yoğunluk niteleyici kullanmak, kaynakların yalnızca bu yoğunluktaki ekranlar için olduğu anlamına gelmez. Mevcut cihaz yapılandırmasıyla daha iyi eşleşen niteleyicilerle alternatif kaynaklar sağlamazsanız sistem, en uygun kaynakları kullanır. Farklı ekran yoğunluklarının nasıl yönetileceği ve Android'in bit eşlemlerinizi geçerli yoğunluğa uyacak şekilde nasıl ölçeklendirebileceği hakkında daha fazla bilgi edinmek için Ekran uyumluluğuna genel bakış bölümünü inceleyin. |
Dokunmatik ekran türü |
notouch finger
|
Ayrıca, cihazdaki dokunmatik ekranın türünü belirten |
Klavye kullanılabilirliği |
keysexposed keyshidden keyssoft
|
Kullanıcı bir donanım klavyesini açarsa bu ayar uygulamanızın kullanım ömrü boyunca değişebilir. Bu durumun çalışma zamanında uygulamanızı nasıl etkileyeceği hakkında bilgi edinmek için Yapılandırma değişikliklerini işleme bölümüne bakın. Ayrıca, sırasıyla donanım klavyesinin ve her tür klavyenin (yazılım dahil) görünürlüğünü belirten |
Birincil metin giriş yöntemi |
nokeys qwerty 12key
|
Kullanılabilir birincil metin giriş yöntemini gösteren |
Gezinme tuşunun kullanılabilirliği |
navexposed navhidden
|
Kullanıcı gezinme tuşlarını gösterirse bu durum uygulamanızın kullanım ömrü boyunca değişebilir. Bu durumun çalışma zamanında uygulamanızı nasıl etkileyeceği hakkında bilgi edinmek için Yapılandırma değişikliklerini işleme bölümüne bakın. Ayrıca, gezinme tuşlarının gizlenmiş olup olmadığını belirten |
Birincil dokunmatik olmayan gezinme yöntemi |
nonav dpad trackball wheel
|
Kullanılabilir gezinme yöntemi türünü gösteren |
Platform sürümü (API düzeyi) | Örnekler:v3 v4 v7 vb. |
Cihazın desteklediği API düzeyi. Örneğin, API düzeyi 1 (Android 1.0 veya sonraki sürümlere sahip cihazlar) için |
Not: Android'in tüm sürümleri tüm niteleyicileri desteklemez. Yeni bir niteleyici kullanmak, eski cihazların bunu görmezden gelmesi için dolaylı yoldan platform sürümü niteleyicisi ekler. Örneğin, kullanılabilir genişlik niteleyicisi API düzeyi 13'te yeni olduğundan w600dp
niteleyici kullanıldığında v13
niteleyici otomatik olarak dahil edilir. Herhangi bir sorun yaşamamak için her zaman bir dizi varsayılan kaynak (niteleyici içermeyen bir kaynak grubu) ekleyin. Daha fazla bilgi için Kaynaklarla en iyi cihaz uyumluluğunu sağlama bölümüne bakın.
Niteleyici adı kuralları
Yapılandırma niteleyici adlarını kullanmayla ilgili bazı kuralları burada bulabilirsiniz:
- Tek bir kaynak grubu için kısa çizgilerle ayrılmış birden çok niteleyici belirtebilirsiniz. Örneğin
drawable-en-rUS-land
, yatay yönlü ABD İngilizcesi cihazlar için geçerlidir. - Niteleyiciler, tablo 2'de listelenen sırada olmalıdır.
- Yanlış:
drawable-hdpi-port/
- Doğru:
drawable-port-hdpi/
- Yanlış:
- Alternatif kaynak dizinleri iç içe yerleştirilemez. Örneğin,
res/drawable/drawable-en/
kullanamazsınız. - Değerler büyük/küçük harfe duyarlı değildir. Kaynak derleyici, büyük/küçük harfe duyarlı olmayan dosya sistemlerinde sorun yaşamamak için işlemden önce dizin adlarını küçük harfe dönüştürür. Adlardaki büyük harf kullanımı, yalnızca okunabilirlik açısından yararlıdır.
- Her niteleyici türü için yalnızca bir değer desteklenir. Örneğin, İspanya ve Fransa için aynı çekilebilir dosyaları kullanmak isterseniz
drawable-es-fr/
adlı bir dizininiz bulunamaz. Bunun yerine, uygun dosyaları içerendrawable-es/
vedrawable-fr/
gibi iki kaynak dizinine ihtiyacınız vardır. Ancak, dosyaları her iki konumda da çoğaltmanız gerekmez. Bunun yerine Takma ad kaynakları oluşturma bölümünde açıklandığı gibi kaynak için takma ad oluşturabilirsiniz.
Alternatif kaynakları bu niteleyicilerle adlandırılmış dizinlere kaydettikten sonra Android, mevcut cihaz yapılandırmasına göre uygulamanızdaki kaynakları otomatik olarak uygular. Android, her kaynak isteğinde bulunulduğunda, istenen kaynak dosyasını içeren alternatif kaynak dizinlerini kontrol eder, ardından en uygun kaynağı bulur.
Belirli bir cihaz yapılandırmasıyla eşleşen alternatif kaynaklar yoksa Android, karşılık gelen varsayılan kaynakları (belirli bir kaynak türü için yapılandırma niteleyicisi içermeyen kaynak grubunu) kullanır.
Takma ad kaynakları oluşturun
Birden fazla cihaz yapılandırması için kullanmak istediğiniz bir kaynağınız varsa ancak bu kaynağı varsayılan kaynak olarak sağlamak istemiyorsanız aynı kaynağı birden fazla alternatif kaynak dizinine yerleştirmeniz gerekmez. Bunun yerine, varsayılan kaynak dizininizde kayıtlı bir kaynak için takma ad işlevi gören alternatif bir kaynak oluşturabilirsiniz.
Not: Tüm kaynaklar, başka bir kaynak için takma ad oluşturmanızı sağlayan bir mekanizma sunmaz. Özellikle xml/
dizinindeki animasyon, menü, ham ve belirtilmemiş diğer kaynaklar bu özelliği sunmaz.
Örneğin, icon.png
adlı bir uygulama simgenizin olduğunu ve farklı yerel ayarlar için bunun benzersiz bir sürümüne ihtiyacınız olduğunu düşünün. Ancak iki dil için (İngilizce-Kanada ve Fransızca-Kanada) aynı sürüm
kullanılmalıdır. Hem İngilizce-Kanada hem de Fransızca-Kanada dili için aynı resmi kaynak dizinine kopyalamanız gerekmez.
Bunun yerine, her ikisi için de kullanılan resmi, icon.png
dışında herhangi bir adla (ör. icon_ca.png
) kaydedebilir ve bunu varsayılan res/drawable/
dizinine ekleyebilirsiniz. Ardından, <bitmap>
öğesini kullanarak res/drawable-en-rCA/
ve res/drawable-fr-rCA/
öğelerinde icon_ca.png
kaynağına referans veren bir icon.xml
dosyası oluşturun. Bu, PNG dosyasının yalnızca bir sürümünü ve ona işaret eden
iki küçük XML dosyasını depolamanıza olanak tanır. Ayrıntılar için aşağıdaki bölümlerde yer alan örneklere bakın.
Çekilebilir
Mevcut bir çekilebilir öğenin takma adını oluşturmak için <drawable>
öğesini kullanın:
<?xml version="1.0" encoding="utf-8"?> <resources> <drawable name="icon">@drawable/icon_ca</drawable> </resources>
Bu dosyayı res/values-en-rCA/
gibi alternatif bir kaynak dizininde icon.xml
olarak kaydederseniz dosya, R.drawable.icon
olarak başvurabileceğiniz bir kaynakta derlenir ancak aslında res/drawable/
içine kaydedilen R.drawable.icon_ca
kaynağının takma adı olur.
Düzen
Mevcut bir düzenin takma adını oluşturmak için <merge>
içine sarmalanmış <include>
öğesini kullanın:
<?xml version="1.0" encoding="utf-8"?> <merge> <include layout="@layout/main_ltr"/> </merge>
Bu dosya main.xml
olarak kaydederseniz R.layout.main
olarak başvurabileceğiniz bir kaynakta derlenir ancak aslında R.layout.main_ltr
kaynağının takma adıdır.
Dizeler ve diğer basit değerler
Mevcut bir dizenin takma adını oluşturmak için yeni dizenin değeri olarak istediğiniz dizenin kaynak kimliğini kullanın:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello</string> <string name="hi">@string/hello</string> </resources>
R.string.hi
kaynağı artık R.string.hello
için takma addır.
Diğer basit değerler de aynı şekilde çalışır (ör. renkler):
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="red">#f00</color> <color name="highlight">@color/red</color> </resources>
Uygulama kaynaklarınıza erişme
Uygulamanızda bir kaynak sağladığınızda, ilgili kaynağı kaynak kimliğine bakarak uygulayabilirsiniz. Tüm kaynak kimlikleri, projenizin aapt
aracının otomatik olarak oluşturduğu R
sınıfında tanımlanır.
Uygulamanız derlendiğinde aapt
, res/
dizininizdeki tüm kaynakların kaynak kimliklerini içeren R
sınıfını oluşturur. Her kaynak türünde bir R
alt sınıfı bulunur (ör. tüm çekilebilir kaynaklar için R.drawable
). Bu türdeki her kaynak için statik bir tam sayı bulunur. Örneğin, R.drawable.icon
. Bu tam sayı, kaynağınızı almak için kullanabileceğiniz kaynak kimliğidir.
Kaynak kimliklerinin belirtildiği yerde R
sınıfı olsa da, bir kaynak kimliğini bulmak için bu sınıfa bakmanız gerekmez. Kaynak kimliği her zaman aşağıdakilerden oluşur:
- Kaynak türü: Her kaynak
string
,drawable
velayout
gibi bir "tür" altında gruplandırılır. Farklı türler hakkında daha fazla bilgi için Kaynak türlerine genel bakış başlıklı makaleyi inceleyin. - Kaynak adı. Uzantı hariç dosya adı veya kaynak, dize gibi basit bir değerse XML
android:name
özelliğindeki değerdir.
Bir kaynağa iki şekilde erişebilirsiniz:
- Kodda:
R
sınıfınızın alt sınıfından statik bir tam sayı kullanarak. Örneğin:R.string.hello
string
kaynak türü,hello
ise kaynak adıdır. Bu biçimde bir kaynak kimliği sağladığınızda kaynaklarınıza erişebilecek birçok Android API vardır. Daha fazla bilgi için Koddaki kaynaklara erişim bölümünü inceleyin. - XML'de:
R
sınıfınızda tanımlanan kaynak kimliğine karşılık gelen özel bir XML söz dizimi kullanın. Örneğin:@string/hello
string
kaynak türü,hello
ise kaynak adıdır. Bu söz dizimini XML kaynağında, kaynakta sağlamanız beklenen bir değer olan herhangi bir yerde kullanabilirsiniz. Daha fazla bilgi için XML'den kaynaklara erişim bölümüne bakın.
Koddaki kaynaklara erişim
Kaynak kimliğini yöntem parametresi olarak ileterek kod içinde bir kaynak kullanabilirsiniz. Örneğin, setImageResource()
ile res/drawable/myimage.png
kaynağını kullanacak şekilde bir ImageView
ayarlayabilirsiniz:
Kotlin
val imageView = findViewById(R.id.myimageview) as ImageView imageView.setImageResource(R.drawable.myimage)
Java
ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage);
Resources
içindeki yöntemleri kullanarak kaynakları da tek tek alabilirsiniz. getResources()
ile bu yöntemin bir örneğini alabilirsiniz.
Sözdizimi
Koddaki bir kaynağa referansta bulunmak için kullanılacak söz dizimini burada bulabilirsiniz:
[<package_name>.]R.<resource_type>.<resource_name>
<package_name>
, kaynağın bulunduğu paketin adıdır (kendi paketinizdeki kaynaklara başvururken gerekli değildir).<resource_type>
, kaynak türü içinR
alt sınıfıdır.<resource_name>
, uzantısı olmayan kaynak dosya adıdır veya basit değerler için XML öğesindekiandroid:name
özellik değeridir.
Kaynak türleri ve bunlara nasıl referans verileceği hakkında daha fazla bilgi için Kaynak türlerine genel bakış bölümüne bakın.
Kullanım örnekleri
Kaynak kimliği parametrelerini kabul eden birçok yöntem vardır. Ayrıca Resources
içindeki yöntemleri kullanarak kaynakları alabilirsiniz. Context.getResources()
kullanarak Resources
örneğini alabilirsiniz.
Aşağıda, kod kullanarak kaynaklara erişme hakkında bazı örnekler verilmiştir:
Kotlin
// Load a background for the current screen from a drawable resource. window.setBackgroundDrawableResource(R.drawable.my_background_image) // Set the Activity title by getting a string from the Resources object, because // this method requires a CharSequence rather than a resource ID. window.setTitle(resources.getText(R.string.main_title)) // Load a custom layout for the current screen. setContentView(R.layout.main_screen) // Set a slide in animation by getting an Animation from the Resources object. flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.hyperspace_in)) // Set the text on a TextView object using a resource ID. val msgTextView = findViewById(R.id.msg) as TextView msgTextView.setText(R.string.hello_message)
Java
// Load a background for the current screen from a drawable resource. getWindow().setBackgroundDrawableResource(R.drawable.my_background_image) ; // Set the Activity title by getting a string from the Resources object, because // this method requires a CharSequence rather than a resource ID. getWindow().setTitle(getResources().getText(R.string.main_title)); // Load a custom layout for the current screen. setContentView(R.layout.main_screen); // Set a slide in animation by getting an Animation from the Resources object. flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.hyperspace_in)); // Set the text on a TextView object using a resource ID. TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello_message);
Dikkat: R.java
dosyasını elle değiştirmeyin. Projeniz derlendiğinde aapt
aracı tarafından oluşturulur. Bir sonraki derlemenizde değişiklikler geçersiz kılınır.
XML'den kaynaklara erişim
Mevcut bir kaynağa yapılan referansı kullanarak bazı XML özellikleri ve öğeleri için değerler tanımlayabilirsiniz. Bunu genellikle düzen dosyaları oluştururken, widget'larınız için dizeler ve resimler sağlamak amacıyla yaparsınız.
Örneğin, düzeninize bir Button
eklerseniz düğme metni için bir dize kaynağı kullanın:
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/submit" />
Sözdizimi
XML kaynağındaki bir kaynağa referans vermek için kullanılacak söz dizimini burada görebilirsiniz:
@[<package_name>:]<resource_type>/<resource_name>
<package_name>
, kaynağın bulunduğu paketin adıdır (aynı paketteki kaynaklara başvururken gerekli değildir).<resource_type>
, kaynak türününR
alt sınıfıdır.<resource_name>
, uzantısı olmayan kaynak dosya adıdır veya basit değerler için XML öğesindekiandroid:name
özellik değeridir.
Kaynak türleri ve bunlara nasıl referans verileceği hakkında daha fazla bilgi için Kaynak türlerine genel bakış bölümüne bakın.
Kullanım örnekleri
Bazı durumlarda, bir widget'a çekilebilir resim uygulamak gibi XML'de bir değer için kaynak kullanmanız gerekir. Ancak XML'de, basit bir değeri kabul eden her yerde bir kaynak da kullanabilirsiniz. Örneğin, bir renk kaynağı ve dize kaynağı içeren aşağıdaki kaynak dosyanız varsa:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources>
Metin rengini ve metin dizesini ayarlamak için aşağıdaki düzen dosyasında bu kaynakları kullanabilirsiniz:
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@color/opaque_red" android:text="@string/hello" />
Bu durumda, kaynaklar kendi paketinizden geldiğinden kaynak referansında paket adını belirtmeniz gerekmez. Bir sistem kaynağına referans vermek için, aşağıdaki örnekte gösterildiği gibi paket adını eklemeniz gerekir:
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@android:color/secondary_text_dark" android:text="@string/hello" />
Not: Uygulamanızın diğer diller için yerelleştirilebilmesi amacıyla her zaman dize kaynaklarını kullanın. Alternatif kaynaklar (yerelleştirilmiş dizeler gibi) oluşturma hakkında bilgi için Alternatif kaynaklar sağlama bölümüne bakın. Uygulamanızı diğer dillerde yerelleştirme hakkında eksiksiz bir kılavuz için Uygulamanızı yerelleştirme bölümüne bakın.
Takma ad oluşturmak için XML'deki kaynakları bile kullanabilirsiniz. Örneğin, başka bir çekilebilir kaynağın takma adı olan bir çekilebilir kaynak oluşturabilirsiniz:
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/other_drawable" />
Bu yöntem gereksiz görünse de alternatif kaynak kullanırken çok faydalı olabilir. Daha fazla bilgi edinmek için takma ad kaynakları oluşturma hakkındaki bölüme bakın.
Referans stili özellikleri
Stil özelliği kaynağı, halihazırda uygulanan temadaki bir özelliğin değerine referans vermenizi sağlar. Stil özelliğine referans vermek, sabit kodlu bir değer sağlamak yerine, kullanıcı arayüzü öğelerinin görünümünü mevcut temanın sağladığı standart varyasyonlarla eşleşecek şekilde biçimlendirerek özelleştirmenize olanak tanır. Bir stil özelliğine referansta bulunulduğunda "Bu özellik tarafından tanımlanan stili mevcut temada kullan" anlamına gelir.
Bir stil özelliğine referans vermek için ad söz dizimi, normal kaynak biçimiyle neredeyse aynıdır, ancak "at" simgesi (@
) yerine soru işareti (?
) kullanın. Kaynak türü bölümü isteğe bağlıdır. Referans söz dizimi aşağıdaki gibidir:
?[<package_name>:][<resource_type>/]<resource_name>
Örneğin, metin rengini sistem temasının ikincil metin rengiyle eşleşecek şekilde ayarlamak için bir özelliğe şu şekilde başvurabilirsiniz:
<EditText id="text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="?android:textColorSecondary" android:text="@string/hello_world" />
Buradaki android:textColor
özelliği, geçerli temadaki bir stil özelliğinin adını belirtir. Android artık bu widget'ta android:textColor
değeri olarak android:textColorSecondary
stili özelliğine uygulanan değeri kullanıyor. Sistem kaynağı aracı bu bağlamda bir özellik kaynağının beklendiğini bildiğinden türü (?android:attr/textColorSecondary
) açıkça belirtmeniz gerekmez. attr
türünü hariç tutabilirsiniz.
Orijinal dosyalara erişme
Çok sık karşılaşılmasa da orijinal dosya ve dizinlerinize erişmeniz gerekebilir. Bu durumda dosyalarınızı res/
hizmetine kaydetmeniz işe yaramaz. Çünkü res/
ürününden kaynak okumanın tek yolu kaynak kimliğiyledir. Bunun yerine kaynaklarınızı assets/
dizinine kaydedebilirsiniz.
assets/
dizinine kaydedilen dosyalara kaynak kimliği verilmediğinden R
sınıfı veya XML kaynakları aracılığıyla bu dosyalara başvuruda bulunamazsınız. Bunun yerine, assets/
dizinindeki dosyaları normal bir dosya sistemi gibi sorgulayabilir ve ham verileri AssetManager
kullanarak okuyabilirsiniz.
Ancak tüm ihtiyacınız olan ham verileri (video veya ses dosyası gibi) okuyabilmekse, dosyayı res/raw/
dizinine kaydedin ve openRawResource()
kullanarak baytlardan oluşan bir akışı okuyun.
Platform kaynaklarına erişim
Android'de stiller, temalar ve düzenler gibi çeşitli standart kaynaklar bulunur. Bu kaynaklara erişmek için kaynak referansınızı android
paket adıyla niteleyin. Örneğin, Android, ListAdapter
içindeki liste öğeleri için kullanabileceğiniz bir düzen kaynağı sağlar:
Kotlin
listAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, myarray)
Java
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));
Bu örnekte simple_list_item_1
, ListView
içindeki öğeler için platform tarafından tanımlanan düzen kaynağıdır. Liste öğeleri için kendi düzeninizi oluşturmak yerine bunu kullanabilirsiniz.
Kaynaklarla en iyi cihaz uyumluluğunu sağlayın
Uygulamanızın birden fazla cihaz yapılandırmalarını desteklemesi açısından, uygulamanızın kullandığı her kaynak türü için her zaman varsayılan kaynaklar sağlamanız çok önemlidir.
Örneğin, uygulamanız birden fazla dili destekliyorsa dil ve bölge niteleyicisi olmadan her zaman bir values/
dizini ekleyin (dizelerinizin kaydedildiği yer). Bunun yerine, tüm dize dosyalarınızı dil ve bölge niteleyicisi olan dizinlere yerleştirirseniz uygulamanız, dizelerinizin desteklemediği bir dile ayarlanmış bir cihazda çalıştırıldığında kilitlenir.
Varsayılan values/
kaynaklarını sağladığınız sürece, kullanıcılar sunulan dili anlamasa bile uygulamanız düzgün şekilde çalışır. Kilitlenmekten iyidir.
Benzer şekilde, ekran yönüne göre farklı düzen kaynakları sağlarsanız varsayılan olarak bir yön seçin. Örneğin, yatay için layout-land/
ve dikey için layout-port/
düzen kaynaklarını sağlamak yerine, birini varsayılan değer (ör. yatay için layout/
ve dikey için layout-port/
) bırakın.
Varsayılan kaynaklar sağlamak yalnızca uygulamanızın beklemediğiniz bir yapılandırmada çalışabileceği için değil, aynı zamanda Android'in yeni sürümlerinin bazen eski sürümlerin desteklemediği yapılandırma niteleyicileri eklediği için de önemlidir. Yeni bir kaynak niteleyici kullanıyor ancak Android'in eski sürümleriyle kod uyumluluğunu sürdürüyorsanız Android'in eski bir sürümü uygulamanızı çalıştırdığında, varsayılan kaynakları sağlamazsanız uygulamanız kilitlenir. Bunun nedeni, yeni niteleyicinin adını taşıyan kaynakları kullanamamasıdır.
Örneğin, minSdkVersion
4 olarak ayarlanırsa ve tüm çekilebilir kaynaklarınızı gece modunu (API düzeyi 8'de eklenmiş olan night
veya notnight
) kullanarak gerekli kılarsanız API düzeyi 4 cihaz, çekilebilir kaynaklarınıza ve kilitlenmelerinize erişemez. Bu durumda, muhtemelen notnight
kaynağının varsayılan kaynaklarınız olmasını istersiniz. Dolayısıyla bu niteleyiciyi hariç tutun ve çekilebilir kaynaklarınızı drawable/
veya drawable-night/
içine yerleştirin.
Kısacası, en iyi cihaz uyumluluğunu sağlamak amacıyla uygulamanızın düzgün çalışması için gereken kaynaklar için her zaman varsayılan kaynaklar sağlayın. Ardından, yapılandırma niteleyicilerini kullanarak belirli cihaz yapılandırmaları için alternatif kaynaklar oluşturun.
Bu kuralın bir istisnası vardır: Uygulamanızın minSdkVersion
değeri 4 veya daha büyükse ekran yoğunluğu niteleyicisiyle alternatif çekilebilir kaynaklar sağladığınızda varsayılan çekilebilir kaynaklara ihtiyacınız yoktur. Varsayılan çekilebilir kaynaklar olmasa bile Android, alternatif ekran yoğunlukları arasında en iyi eşleşmeyi bulabilir ve bit eşlemleri gerektiği şekilde ölçeklendirebilir. Ancak her tür cihazda en iyi deneyimi sunabilmek için üç yoğunluk türü için de alternatif çekilebilir kaynaklar sağlayın.
Android en iyi eşleşen kaynağı nasıl bulur?
Alternatifler sağladığınız bir kaynak isteğinde bulunduğunuzda Android, geçerli cihaz yapılandırmasına bağlı olarak çalışma zamanında hangi alternatif kaynağın kullanılacağını seçer. Android'in alternatif bir kaynağı nasıl seçtiğini göstermek için aşağıdaki çekilebilir dizinlerin her birinin aynı resimlerin farklı sürümlerini içerdiğini varsayalım:
drawable/ drawable-en/ drawable-fr-rCA/ drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/
Cihaz yapılandırmasının aşağıdaki gibi olduğunu varsayın:
Yerel ayar = en-GB
Ekran yönü = port
Ekran piksel yoğunluğu = hdpi
Dokunmatik ekran türü = notouch
Birincil metin giriş yöntemi = 12key
Android, cihaz yapılandırmasını mevcut alternatif kaynaklarla karşılaştırarak drawable-en-port
kaynağından çekilebilir kaynakları seçer.
Sistem, aşağıdaki mantıkla hangi kaynakların kullanılacağına karar verir:

2. Şekil. Android'in en iyi eşleşen kaynağı nasıl bulduğunu gösteren akış şeması.
- Cihaz yapılandırmasıyla çelişen kaynak dosyaları kaldırın.
drawable-fr-rCA/
dizini,en-GB
yerel ayarıyla çeliştiği için çıkarılır.drawable/ drawable-en/
drawable-fr-rCA/drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/İstisna: Ekran piksel yoğunluğu, bir çelişki nedeniyle devre dışı bırakılamayan tek niteleyicidir. Cihazın ekran yoğunluğu hdpi olsa bile
drawable-port-ldpi/
, bu noktada her ekran yoğunluğunun eşleşme olarak kabul edildiği için çıkarılmaz. Daha fazla bilgi için Ekran uyumluluğuna genel bakış başlıklı makaleye bakın. - Listede sonraki en yüksek öncelik niteleyicisini bulun (tablo 2). (MM ile başlayın.)
- Kaynak dizinlerinden herhangi biri bu niteleyiciyi içeriyor mu?
- Hayır ise ikinci adıma dönün ve bir sonraki niteleyiciye bakın. Bu örnekte, dil niteleyicisine ulaşılana kadar yanıt "hayır"dır.
- Yanıtınız evet ise dördüncü adıma geçin.
- Bu niteleyiciyi içermeyen kaynak dizinlerini kaldırın. Bu örnekte sistem daha sonra dil niteleyicisi içermeyen tüm dizinleri eler:
drawable/drawable-en/ drawable-en-port/ drawable-en-notouch-12key/drawable-port-ldpi/drawable-port-notouch-12key/İstisna: Söz konusu niteleyici ekran piksel yoğunluğu ise Android, cihazın ekran yoğunluğuna en yakın seçeneği belirler. Genel olarak Android, daha küçük bir orijinal resmin ölçeğini küçültmeyi tercih eder. Daha fazla bilgi için Ekran uyumluluğuna genel bakış konusuna bakın.
- Yalnızca bir dizin kalana kadar ikinci, üçüncü ve dördüncü adımı tekrarlayın. Bu örnekte, ekran yönü eşleşmelerin bulunduğu bir sonraki niteleyicidir.
Bu nedenle, ekran yönü belirtmeyen kaynaklar elenir:
drawable-en/drawable-en-port/drawable-en-notouch-12key/Kalan dizin:
drawable-en-port
.
Bu prosedür, istenen her kaynak için yürütülse de sistem, bunun bazı yönlerini optimize eder. Bu optimizasyonlardan biri, cihaz yapılandırması öğrenildiğinde, hiçbir zaman eşleşmeyen alternatif kaynakların ortadan kaldırılmasıdır. Örneğin, yapılandırma dili İngilizceyse dil niteleyicisi İngilizce dışında bir değere ayarlanmış herhangi bir kaynak dizin, işaretlenen kaynak havuzuna hiçbir zaman dahil edilmez (bununla birlikte, dil niteleyicisi olmayan bir kaynak dizin yine de dahil edilir).
Kaynakları ekran boyutu niteleyicilerine göre seçerken sistem, daha iyi eşleşen kaynak yoksa mevcut ekrandan daha küçük bir ekran için tasarlanmış kaynakları kullanır. Örneğin, büyük boyutlu bir ekran, gerekirse normal boyutlu ekran kaynaklarını kullanır.
Ancak mevcut kaynaklardan büyük olan kaynaklar sistem tarafından kullanılmaz ve cihaz yapılandırmasıyla eşleşen başka kaynak yoksa uygulamanız kilitlenir. Örneğin, tüm düzen kaynakları xlarge
niteleyicisiyle etiketlenmişse ancak cihaz normal boyutta bir ekransa bu durum gerçekleşir.
Not: Niteleyicinin önceliği (2. tabloda), cihazla tam olarak eşleşen niteleyici sayısından daha önemlidir. Yukarıdaki örnekte, dördüncü adımda, listedeki son seçenekte cihazla tam olarak eşleşen üç niteleyici bulunur (yön, dokunmatik ekran türü ve giriş yöntemi), drawable-en
ise (dil) ile eşleşen yalnızca bir parametreye sahiptir. Bununla birlikte, dil bu diğer niteleyicilerden daha yüksek önceliğe sahiptir, bu nedenle drawable-port-notouch-12key
elenir.