6. Андроид иловасида ресурслар билан ишлаш, ресурслар синфи
Download 0.52 Mb. Pdf ko'rish
|
1-6
- Bu sahifa navigatsiya:
- Kotovskiy bilan boglaning
1 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. 2 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 3 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 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. 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 4 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 elementdan keyin 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и 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. 5 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: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- 6 quvvatlamaydi. Ushbu vaziyatdan chiqish uchun quyidagi HTML teglaridan qoching: 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
ma'muriyatiga murojaat qiling