Aracılığıyla paylaş


Alternatif Kaynaklar

Alternatif kaynaklar, belirli bir cihazı veya geçerli dil, belirli ekran boyutu veya piksel yoğunluğu gibi çalışma zamanı yapılandırmasını hedefleyen kaynaklardır. Android, belirli bir cihaz veya yapılandırma için varsayılan kaynaktan daha özel bir kaynakla eşleşebiliyorsa, bunun yerine bu kaynak kullanılır. Geçerli yapılandırmayla eşleşen alternatif bir kaynak bulamazsa, varsayılan kaynaklar yüklenir. Android'in bir uygulama tarafından hangi kaynakların kullanılacağına nasıl karar verdiği aşağıda Kaynak Konumu bölümünde daha ayrıntılı olarak ele alınacaktır

Alternatif kaynaklar, varsayılan kaynaklar gibi kaynak türüne göre Kaynaklar klasörünün içinde bir alt dizin olarak düzenlenir. Alternatif kaynak alt dizininin adı şu biçimdedir: ResourceType-Niteleyicisi

Niteleyici , belirli bir cihaz yapılandırmasını tanımlayan bir addır. Bir adda, her biri tireyle ayrılmış birden fazla niteleyici olabilir. Örneğin, aşağıdaki ekran görüntüsünde yerel ayar, ekran yoğunluğu, ekran boyutu ve yönlendirme gibi çeşitli yapılandırmalar için alternatif kaynaklara sahip basit bir proje gösterilmektedir:

Bir kaynak türüne niteleyiciler eklenirken aşağıdaki kurallar geçerlidir:

  1. Her bir niteleyici bir tireyle ayrılmış birden fazla niteleyici olabilir.

  2. Niteleyiciler yalnızca bir kez belirtilebilir.

  3. Niteleyiciler aşağıdaki tabloda göründükleri sırayla olmalıdır.

Olası niteleyiciler başvuru için aşağıda listelenmiştir:

  • MCC ve MNC – Mobil ülke kodu (MCC) ve isteğe bağlı olarak mobil ağ kodu (MNC). SIM kart MCC'yi sağlarken, cihazın bağlı olduğu ağ MNC'yi sağlar. Mobil ülke kodunu kullanarak yerel ayarları hedeflemek mümkün olsa da, önerilen yaklaşım aşağıda belirtilen Dil niteleyicisini kullanmaktır. Örneğin, kaynakları Almanya'ya hedeflemek için niteleyici olacaktır mcc262. ABD'de T-Mobile kaynaklarını hedeflemek için niteleyici olur mcc310-mnc026. Mobil ülke kodlarının ve mobil ağ kodlarının tam listesi için bkz http://mcc-mnc.com/. .

  • Dil – İki harfli ISO 639-1 dil kodu ve isteğe bağlı olarak iki harfli ISO-3166-alfa-2 bölge kodu takip edin. Her iki niteleyici de sağlanırsa, bir -rile ayrılırlar. Örneğin, Fransızca konuşulan yerel ayarları hedeflemek için öğesinin niteleyicisi fr kullanılır. Fransız-Kanada yerel ayarlarını hedeflemek için fr-rCA kullanılır. Dil kodlarının ve bölge kodlarının tam listesi için bkz. Dil adlarının ve Ülke adlarının ve kod öğelerinin Temsili için kodlar.

  • En Küçük Genişlik – Uygulamanın üzerinde yürütülecek en küçük ekran genişliğini belirtir. Değişen Ekranlar için Kaynak Oluşturma bölümünde daha ayrıntılı olarak ele alınmıştır. API düzeyi 13 (Android 3.2) ve üzeri sürümlerde kullanılabilir. Örneğin, niteleyici sw320dp , yüksekliği ve genişliği en az 320dp olan cihazları hedeflemek için kullanılır.

  • Kullanılabilir Genişlik – Ekranın Ndp biçimindekiminimum genişliği; burada N, yoğunluk bağımsız piksel cinsinden genişliktir. Kullanıcı cihazı döndürdükçe bu değer değişebilir. Değişen Ekranlar için Kaynak Oluşturma bölümünde daha ayrıntılı olarak ele alınmıştır. API düzeyi 13 (Android 3.2) ve üzeri sürümlerde kullanılabilir. Örnek: w720dp niteleyicisi, genişliği en az 720dp olan cihazları hedeflemek için kullanılır.

  • Kullanılabilir Yükseklik – Ekranın en düşük yüksekliği hNdp biçimindedir; burada N , dp'deki yüksekliktir. Kullanıcı cihazı döndürdükçe bu değer değişebilir. Değişen Ekranlar için Kaynak Oluşturma bölümünde daha ayrıntılı olarak ele alınmıştır. API düzeyi 13 (Android 3.2) ve üzeri sürümlerde kullanılabilir. Örneğin, h720dp niteleyicisi en az 720dp yüksekliğe sahip cihazları hedeflemek için kullanılır

  • Ekran Boyutu – Bu niteleyici, bu kaynakların uygun olduğu ekran boyutunun genelleştirilmesidir. Farklı Ekranlar için Kaynak Oluşturma bölümünde daha ayrıntılı olarak ele alınmıştır. Olası değerler , , normallargeve xlargedeğerleridirsmall. API düzeyi 9'a eklendi (Android 2.3/Android 2.3.1/Android 2.3.2)

  • Ekran Yönü – Bu, ekran yönünü değil en boy oranını temel alır. Uzun bir ekran daha geniştir. API düzeyi 4'e (Android 1.6) eklendi. Olası değerler uzun ve uzun değildir.

  • Ekran Yönlendirmesi – Dikey veya yatay ekran yönü. Bu, bir uygulamanın kullanım ömrü boyunca değişebilir. Olası değerler ve landşeklindedirport.

  • Dock Modu – Bir araba takma birimi veya masa takma birimindeki cihazlar için. API düzeyi 8'e (Android 2.2.x) eklendi. Olası değerler ve deskşeklindedircar.

  • Gece Modu – Uygulamanın gece veya gündüz çalışıp çalışmadığı. Bu, bir uygulamanın ömrü boyunca değişebilir ve geliştiricilere geceleri bir arabirimin daha koyu sürümlerini kullanma fırsatı vermeyi amaçlır. API düzeyi 8'e (Android 2.2.x) eklendi. Olası değerler ve notnightşeklindedirnight.

  • Ekran Piksel Yoğunluğu (dpi): Fiziksel ekrandaki belirli bir alandaki piksel sayısı. Genellikle inç başına nokta (dpi) olarak ifade edilir. Olası değerler şunlardır:

    • ldpi – Düşük yoğunluklu ekranlar.

    • mdpi – Orta yoğunluklu ekranlar

    • hdpi – Yüksek yoğunluklu ekranlar

    • xhdpi – Ekstra yüksek yoğunluklu ekranlar

    • nodpi – Ölçeklendirilmeyecek kaynaklar

    • tvdpi – mdpi ile hdpi arasındaki ekranlar için API düzeyi 13'te (Android 3.2) kullanıma sunulmuştur.

  • Dokunmatik Ekran Türü – Bir cihazın sahip olabileceği dokunmatik ekran türünü belirtir. Olası değerler şunlardır notouch (dokunmatik ekran yok), stylus (ekran kalemi için uygun dayanıklı dokunmatik ekran) ve finger (dokunmatik ekran).

  • Klavye Kullanılabilirliği – Kullanılabilir klavye türünü belirtir. Bu, örneğin bir kullanıcı donanım klavyesi açtığında uygulamanın ömrü boyunca değişebilir. Olası değerler şunlardır:

    • keysexposed – Cihazda kullanılabilen bir klavye vardır. Etkinleştirilmiş yazılım klavyesi yoksa, bu yalnızca donanım klavyesi açıldığında kullanılır.

    • keyshidden – Cihazın donanım klavyesi var ama gizli ve yazılım klavyesi etkin değil.

    • keyssoft – cihazda yazılım klavyesi etkindir.

  • Birincil Metin Giriş Yöntemi – Giriş için kullanılabilir donanım anahtarı türlerini belirtmek için kullanın. Olası değerler şunlardır:

    • nokeys – Giriş için donanım anahtarı yoktur.

    • qwerty – Qwerty klavye mevcuttur.

    • 12key – 12 tuşlu donanım klavyesi vardır

  • Gezinti Tuşu Kullanılabilirliği – 5 yönlü veya d-pad (yön tuş takımı) gezinti kullanılabilir olduğunda için. Bu, uygulamanızın kullanım ömrü boyunca değişebilir. Olası değerler şunlardır:

    • navexposed – gezinti tuşları kullanıcının kullanımına sunulur

    • navhidden – gezinti tuşları kullanılamaz.

  • Birincil Dokunmatik Olmayan Gezinti Yöntemi – Cihazda kullanılabilen gezinti türü. Olası değerler şunlardır:

    • nonav – mevcut olan tek gezinti tesisi dokunmatik ekrandır

    • dpad – bir d-pad (yön-tuş takımı) gezinti için kullanılabilir

    • trackball – cihazın gezinti için bir trackball'una sahiptir

    • wheel – bir veya daha fazla yön tekerleği bulunan yaygın olmayan senaryo

  • Platform Sürümü (API düzeyi) – Cihaz tarafından vN biçiminde desteklenen API düzeyi; burada N hedeflenen API düzeyidir. Örneğin, v11 bir API düzeyi 11 (Android 3.0) cihazını hedefler.

Kaynak niteleyicileri hakkında daha fazla bilgi için Bkz . Android Geliştiricileri web sitesinde Kaynak Sağlama.

Android Hangi Kaynakların Kullanılacağını Nasıl Belirler?

Bir Android uygulamasının birçok kaynak içermesi çok olasıdır ve büyük olasılıkla. Android'in bir cihazda çalışırken uygulama için kaynakları nasıl seçeceğini anlamak önemlidir.

Android, aşağıdaki kural testini yineleyerek kaynak tabanını belirler:

  • Çelişkili niteleyicileri ortadan kaldırın; örneğin, cihaz yönü dikeyse, tüm yatay kaynak dizinleri reddedilir.

  • Desteklenmeyen niteleyicileri yoksay – Tüm niteleyiciler tüm API düzeylerinde kullanılamaz. Kaynak dizini, cihaz tarafından desteklenmeyen bir niteleyici içeriyorsa, bu kaynak dizini yoksayılır.

  • Bir sonraki en yüksek öncelikli niteleyiciyi belirleyin; yukarıdaki tabloya başvurarak bir sonraki en yüksek öncelikli niteleyiciyi seçin (yukarıdan aşağıya).

  • Tüm kaynak dizinlerini niteleyici için tutun: Niteleyiciyle yukarıdaki tabloyla eşleşen kaynak dizinleri varsa, bir sonraki en yüksek öncelikli niteleyiciyi (yukarıdan aşağıya) seçin.

Bu kurallar aşağıdaki akış çizelgesinde de gösterilmiştir:

Resources flowchart

Sistem yoğunluğa özgü kaynakları aradığında ve bu kaynakları bulamadıysa, diğer yoğunluğa özgü kaynakları bulmaya ve ölçeklendirmeye çalışır. Android varsayılan kaynakları kullanmak zorunda olmayabilir. Örneğin, düşük yoğunluklu bir kaynak ararken ve kullanılabilir olmadığında, Android varsayılan veya orta yoğunluklu kaynaklar üzerinden kaynağın yüksek yoğunluklu sürümünü seçebilir. Bunu yapar çünkü yüksek yoğunluklu kaynağın ölçeği 0,5 kat azaltılabilir ve bu da 0,75 faktörü gerektiren orta yoğunluklu bir kaynağın ölçeğini azaltmaya kıyasla daha az görünürlük sorununa neden olur.

Örnek olarak, aşağıdaki çizilebilir kaynak dizinlerine sahip bir uygulamayı düşünün:

drawable
drawable-en
drawable-fr-rCA
drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi
drawable-port-ldpi
drawable-port-notouch-12key

Ve şimdi uygulama aşağıdaki yapılandırmaya sahip bir cihazda çalıştırılır:

  • Yerel Ayar – en-GB
  • Yönlendirme – bağlantı noktası
  • Ekran yoğunluğu – hdpi
  • Dokunmatik ekran türü – dokunma
  • Birincil giriş yöntemi – 12key

İlk olarak, Fransız kaynakları yerel ayarıyla en-GBçakıştıkça ortadan kaldırılıyor ve bizi şu şekilde bırakıyor:

drawable
drawable-en
drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi
drawable-port-ldpi
drawable-port-notouch-12key

Ardından, yukarıdaki niteleyiciler tablosundan ilk niteleyici seçilir: MCC ve MNC. Bu niteleyiciyi içeren kaynak dizini olmadığından MCC/MNC kodu yoksayılır.

Sonraki niteleyici seçilidir ve bu da Dil'dir. Dil koduyla eşleşen kaynaklar vardır. Dil koduyla en eşleşmeyen tüm kaynak dizinleri reddedilir, böylece kaynak listesi şu anda:

drawable-en-port
drawable-en-notouch-12key
drawable-en-port-ldpi

Mevcut olan sonraki niteleyici ekran yönlendirme içindir, bu nedenle ekran yönlendirmesi port ile eşleşmeyen tüm kaynak dizinleri ortadan kalkar:

drawable-en-port
drawable-en-port-ldpi

Şimdi ekran yoğunluğu ldpiiçin niteleyicidir ve bu da bir kaynak dizininin daha dışlanmasına neden olur:

drawable-en-port-ldpi

Bu işlemin sonucunda Android, cihaz için kaynak dizinindeki drawable-en-port-ldpi çizilebilir kaynakları kullanır.

Not

Ekran boyutu niteleyicileri bu seçim işlemi için bir özel durum sağlar. Android'in geçerli cihazın sağladığından daha küçük bir ekran için tasarlanmış kaynakları seçmesi mümkündür. Örneğin, büyük bir ekran cihazı normal boyutlu bir ekran için sağlanan kaynakları kullanabilir. Ancak bunun tersi doğru değildir: aynı büyük ekran cihazı, xlarge ekranı için sağlanan kaynakları kullanmaz. Android belirli bir ekran boyutuyla eşleşen bir kaynak kümesi bulamazsa uygulama kilitlenir.