6. Андроид иловасида ресурслар билан ишлаш, ресурслар синфи


Download 0.52 Mb.
Pdf ko'rish
Sana23.03.2023
Hajmi0.52 Mb.
#1289969
Bog'liq
1-6




6.Андроид иловасида ресурслар билан ишлаш, ресурслар синфи 
Asoslar 
 
Diagramma resurslarning faqat bir qismini ko'rsatadi. Tizim doimiy ravishda yangilanadi va 
yangi turlar qo'shiladi. 
Resurslar - bu siz tez-tez ishlashingiz kerak bo'lgan asosiy komponentlardan biridir. Android-da 
ba'zi ob'ektlar - tasvirlar, satr konstantalari, ranglar, animatsiyalar, uslublar va boshqalarni 
saqlash odatiy holdir. manba kodidan tashqari. Tizim resurslarni alohida fayllarda saqlashni 
qo'llab-quvvatlaydi. Resurslarni saqlash, yangilash, tahrirlash osonroq. 
Har bir Android ilovasida manbalar uchun katalog va aktivlar uchun katalog mavjud. Resurslar 
va aktivlar o'rtasidagi haqiqiy farq quyidagicha: 
• resurs katalogidagi ma'lumotlar dasturda ishlab chiqish muhiti tomonidan avtomatik ravishda 
yaratiladigan R sinfi orqali mavjud bo'ladi. Ya'ni, fayllar va ma'lumotlarni resurslarda (res 
katalogida) saqlash ularni dastur kodida foydalanish uchun qulay qiladi; 
• Aktivlar katalogiga (xom fayl formati) joylashtirilgan ma'lumotlarni o'qish uchun faylni 
baytlar oqimi sifatida o'qish uchun AssetManager dasturidan foydalanishingiz kerak. 
Android turli konfiguratsiyalar, tillar va mintaqalar uchun turli qiymatlarni o'z ichiga olgan 
manbalar daraxtidan ma'lumotlarni dinamik ravishda tanlashi mumkin. Ishga tushganda, 
Android bitta kod qatorini talab qilmasdan avtomatik ravishda kerakli resursni yuklaydi. 
Android-dagi manbalar deklarativdir. Resurslar asosan XML fayllari sifatida res katalogida 
quyi katalog qiymatlari, drawable-ldpi, drawable-mdpi, drawable-hdpi, layout bilan saqlanadi, 
lekin boshqa turdagi resurslar ham mavjud. 



Qulaylik uchun tizim resurs identifikatorlarini yaratadi va ularni R.java faylida (barcha loyiha 
resurslariga havolalarni o'z ichiga olgan R klassi) ishlatadi, bu esa dastur kodidagi resurslarga 
murojaat qilish imkonini beradi. Statik R klassi berilgan resurslar asosida yaratilgan va loyihani 
tuzish vaqtida yaratilgan. Sinf yaratilganda, u kamida bitta nusxasi e'lon qilingan barcha resurs 
turlari uchun statik pastki sinflarni o'z ichiga oladi. R klassi quyida batafsilroq tavsiflanadi. 
R fayli avtomatik ravishda yaratilganligi sababli, uni qo'lda tahrirlashning ma'nosi yo'q, chunki 
barcha o'zgarishlar qayta tiklanganda yo'qoladi. 
Umuman olganda, manbalar yaratilayotgan ilova bilan bog'liq bo'lgan fayl (masalan, rasm) yoki 
qiymat (dastur nomi kabi) hisoblanadi. Resurslardan foydalanishning qulayligi shundaki, ularni 
dasturni qayta kompilyatsiya qilmasdan yoki qayta loyihalashsiz o'zgartirish mumkin. Resurslar 
uchun fayl nomlari faqat kichik harflar, raqamlar va pastki chiziqdan iborat bo'lishi kerak. 
Eng keng tarqalgan manbalar, ehtimol, satrlar (string), ranglar (rang) va grafik chizmalar 
(bitmap). Ilovada qattiq kodlangan kod satrlaridan foydalanish tavsiya etilmaydi - buning 
o'rniga tegishli identifikatorlardan foydalanish kerak, bu esa manba kodini o'zgartirmasdan 
string resurs matnini o'zgartirish imkonini beradi. 
Boshlang'ich dasturchilar har doim ham resurslarni yaratish jarayonini to'liq tushuna olmaydi. 
Android ikkita yondashuvdan foydalanadi - birinchi yondashuv, resurslar faylda ko'rsatilgan va 
fayl nomi muhim emas. Ikkinchi yondashuv - resurs faylning o'zi shaklida ko'rsatilgan va keyin 
fayl nomi allaqachon ahamiyatga ega (bu holda ma'lum nuanslarni hisobga olish kerak). 
Resurslarni o'z ichiga olgan kataloglarning umumiy tuzilishi quyidagicha: 
/res/values/strings.xml 
/colors.xml 
/dimens.xml 
/attrs.xml 
/styles.xml 
/drawable/*.png 
/*.jpg 
/*.gif 
/*.9.png 
/anim/*.xml 
/layout/*.xml 
/raw/*.* 
/xml/*.xml 
/assets/*.*/*.* 
Faqat aktivlar har xil joylashtirishdagi har qanday pastki kataloglarni o'z ichiga olishi mumkin. 
Boshqa har qanday katalogda joylashgan fayllar aynan shu katalog darajasida joylashgan va 
undan chuqurroq emas. 
Identifikatorlar 
Ushbu turdagi resurs, qoida tariqasida, avtomatik ravishda yaratiladi va dasturchilar bunga 
e'tibor ham bermaydilar. Dasturda o'zaro aloqada bo'ladigan shaklga yangi elementni 
joylashtirganingizda, unga ID belgilashingiz kerak. Odatda, bu @+id/editText shaklida sodir 



bo'ladi (ko'pincha bu avtomatik ravishda sodir bo'ladi). Plyus belgisi agar id mavjud bo'lmasa, u 
R sinfida yaratilishi kerakligini bildiradi.Dasturda siz R.id.editText elementiga murojaat 
qilishingiz mumkin. 
Lekin biron bir maxsus resurs bilan bog'lanmagan identifikatorni belgilash uchun element 
turidagi resursni oldindan yaratishingiz mumkin: 


 
Здесь type описывает тип ресурса, в данном случае id. Когда id будет установлен, будет 
работать и следующее определение View


Обычно идентификаторы размещают в отдельном файле res/values/ids.xml
String resurslari 
String resurslari mahalliylashtirilgan versiyalarni yaratish jarayonini soddalashtirishga yordam 
beradi. String resurslari  tegi bilan aniqlanadi., 
Birinchi ilovangizni ishlab chiqqaningizda, tizim dastur sarlavhasi va ko'rsatiladigan xabar 
uchun satrlarni saqlaydigan strings.xml faylini yaratganini ko'rdingiz. Yangi string resurslarini 
qo'shish uchun ushbu faylni tahrirlashingiz mumkin. Shuningdek, strings2.xml, catnames.xml 
va boshqalar kabi qator resurslarini o'z ichiga olgan yangi fayllarni yaratishingiz mumkin. 
Ushbu fayllarning barchasi /res/values pastki katalogida bo'lishi kerak. Esda tutingki, 
fayllarning nomlari va ularning soni muhim emas. Lekin ko'p hollarda dasturchilar string 
resurslari uchun strings.xml standart nomidan foydalanadilar. Oddiy fayl shunday ko'rinadi.
 
 
Здравствуй, Мир!
 
Hello, World 
 

String resurslari bilan faylni yaratganingizda yoki yangilaganingizda, ishlab chiqish 
muhiti avtomatik ravishda R.java sinfini yaratadi yoki yangilaydi, bu faylda belgilangan 
string resurslari uchun noyob identifikatorlarni taqdim etadi (Resurs fayllari sonidan qat'i 
nazar, loyiha faqat bitta R ni o'z ichiga oladi. .java fayli). Agar siz ushbu faylni 
ochsangiz, bizning resurslarimizni u erda quyidagi shaklda topishingiz mumkin: 

ommaviy statik final int salom = 0x7f040000; 

umumiy statik final int app_name = 0x7f040001; 

Asosan, R.java string resurslarining identifikatorlarini o'z ichiga olgan nomlar maydoni 
sifatida ichki statik sinfni yaratishini eslash kifoya. Hello va app_name o'zgaruvchilarida 
ishlatiladigan ikkita statik yakuniy ints resurs identifikatorlari bo'lib, tegishli qator 



resurslariga mos keladi. Siz ushbu identifikatorlardan quyidagi formatdan foydalanib 
manba kodingizda foydalanishingiz mumkin - R.string.hello. 

Esda tutingki, yaratilgan identifikatorlar String emas, balki int ga ishora qiladi. Android, 
agar kerak bo'lsa, int o'rniga mustaqil ravishda kerakli satrlarni almashtiradi. 

String resurslarini strings.xml faylida saqlash odatiy holdir, lekin siz bir nechta 
fayllardan foydalanishingiz mumkin. Asosiysi, XML fayli kerakli tuzilishga ega va 
res/values kichik katalogida joylashgan. 

String resurslari uchun fayl tuzilishi juda oddiy. Bir yoki bir nechta  asosiy 
elementdan keyin  ildiz tugunlari mavjud. Har bir  elementi oʻz 
navbatida nom xossasiga ega boʻlib, R.java da bu xususiyat id atributidir. 

Agar siz bir nechta resurs fayllarini yaratayotgan bo'lsangiz, yaratgan nomlaringiz noyob 
ekanligiga ishonch hosil qiling. Agar ikkita fayl bir xil app_name o'zgaruvchisiga ega 
bo'lsa, hech qanday yaxshi narsa bo'lmaydi. 

E'tibor bering, satrlarning boshida va oxiridagi bo'shliqlar kesilgan. Agar sizga haqiqatan 
ham bo'sh joy kerak bo'lsa, satrni qo'shtirnoq ichiga qo'ying va satr avvalgidek 
ko'rsatiladi. Boʻsh joy oʻrniga \u0020 kodini ishlatib koʻrishingiz mumkin. 

Satrdagi bir nechta bo'shliqlar bilan bir xil muammo - faqat bitta bo'sh joy chiqariladi 
(html hujjatidagi xatti-harakatlarga o'xshash). 

Kengaytirilgan String Resurs Texnikalari 

String resurslaridan standart foydalanishdan tashqari, murakkabroq fokuslardan 
foydalanish mumkin. Keling, HTML-da yozilgan satrlarni qanday aniqlash va ishlatishni 
ko'rib chiqaylik va o'zgaruvchilarni almashtirish string resurslarida qanday ishlashini 
bilib olaylik. 

XML resurs fayllarida quyidagi turdagi qatorlarni qanday aniqlashni boshlaylik: 

• muntazam qatorlar 

• tirnoqli qatorlar 

• HTML satrlari 

• o'rinbosar qatorlarи 
 
Простая строка 
"Строка в кавычках"
\"Строка в двойных кавычках\"
Привет %2$s. Здравствуй %1$s
Рыжик - мой любимый кот
 
Ushbu XML string resurs fayli res/values pastki katalogida bo'lishi kerak. Fayl nomi 
o'zboshimchalik bilan tanlanadi. 
Esda tutingki, kotirovka qilingan satrlar o'tkazib yuborilishi yoki qo'shimcha tirnoqlarga 
qo'yilishi kerak. Satrlarni belgilashda siz standart Java string formatlash ketma-ketliklaridan 
ham foydalanishingiz mumkin. 
'&', '<' belgilaridan foydalanib bo'lmaydi. Siz bu belgilarni maxsus ketma-ketlik yordamida 
o'rnatishingiz mumkin < - < yoki & - &. Agar matn html teglarini o'z ichiga olsa va 
unda uzilmaydigan bo'sh joy   bo'lsa, u   bilan almashtirilishi kerak. 
 (qalin),  (kursiv),  (tagi chizilgan) teglari yordamida formatlash uchun 
mo'ljallangan oddiy HTML elementlaridan ham foydalanishingiz mumkin. Matnni ekranda 
ko'rsatishdan oldin matnni bezash uchun bunday HTML qatoridan foydalanishingiz mumkin. 



Har bir foydalanish misoli Java kodidan foydalangan holda ro'yxatda tasvirlangan. 
// Oddiy satrni o'qish va uni matn ko'rinishiga qo'yish
String simpleString = activity.getString (R.string.simple_string);
textView.setText(simpleString); 
//
Iqtibosli satrni o'qish va uni matn ko'rinishiga qo'yish 
String quotedString = activity.getString(R.string.quotedstring); 
textView.setText(quotedString); 
// Iqtibosli satrni o'qish va uni matn ko'rinishiga qo'yish 
String doubleQuotedString = activity.getString(R.string.double_quoted_string);
textView.setText(doubleQuotedString); 
// Java formati satrini o'qish 
String javaFormatString = activity.getString(R.string.java_format_string); 
// Formatlangan satrni ma'lumotlar bilan aylantirish
// передаваемых в аргументах 
String substitutedString = String.format(javaFormatString,
"
Zanjabil ", "
Barsik " );
//
chiqishni matn ko'rinishiga qo'yish
textView.setText(substitutedString); 
// Resursdan html_stringni o'qish va uni matn ko'rinishiga qo'yish 
String htmlTaggedString = activity.getString(R.string.tagged_string); 
// Satrni matn qismiga aylantirish, 
// matn shaklida joylashtirilishi mumkin 
// Класс android.text.Html допускает рисование строк "html" (не все теги) 
Spanned textSpan = Html.fromHtml(htmlTaggedString); // Устарело в API 24 
Spanned textSpan = Html.fromHtml(htmlTaggedString, 
Html.FROM_HTML_MODE_LEGACY); // начиная с API 24 
// Ma'lumotni matn ko'rinishiga joylashtiring
textView.setText(textSpan); 
После того, как вы определите строки в виде ресурсов, вы можете вставить их прямо в 
вид. Например, воспользуемся строкой на HTML в элементе TextView
android:layout_width="match_ parent" 
... 
android:text="@string/tagged string" />
TextView avtomatik ravishda ushbu satr HTMLda ekanligini aniqlaydi va shunga mos ravishda 
ushbu qatorni formatlashni boshqaradi. Ushbu misol yangi oyna yaratish bo'yicha maqolada 
ishlatilgan. 
String.format usuli uchun kirish parametrlari sifatida satr resurslaridan foydalanishingiz 
mumkin. Biroq, bu usul  teglari orqali matnni shakllantirishni qo'llab-



quvvatlamaydi. Ushbu vaziyatdan chiqish uchun quyidagi HTML teglaridan qoching: 
<b>
Semiz kotln;/b> 
Va kodda qatorni kerakli shaklga aylantirish uchun Html.fromHtml usulidan foydalaning: 
String rString = getString(R.string.my_message); 
String fString = String.format(rString, "Bla-bla-bla"); 
CharSequence styledString = Html.fromHtml(fString); 
Muammoli belgilar bilan murakkab matnni veb-ustalar uchun tanish bo'lgan maxsus CDATA 
konteyneriga qo'yish mumkin. 
 
 
 

Котик: {{birthDate}}

 
Bu erda mushuklar haqida matn:
{{message}}
Agar siz bu haqda gaplashmoqchi bo'lsangiz, u holda Kotovskiy bilan bog'laning 
.

Download 0.52 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling