Mobil ilovalarni yaratish texnologiyalari fanidan (Maruza) mashgʻulot Mavzu: 14. Resurslar bilan ishlash. Qarshiboyev Akmal


Download 109.11 Kb.
Sana04.04.2023
Hajmi109.11 Kb.
#1326217
Bog'liq
mobil maruza


Mobil ilovalarni yaratish texnologiyalari fanidan (Maruza) mashgʻulot
Mavzu: 14. Resurslar bilan ishlash.
Qarshiboyev Akmal
Android ilovasidagi resurs interfeys belgilash fayli kabi fayl yoki oddiy satr kabi ba'zi qiymatdir. Ya'ni, manbalar belgilash fayllari va alohida qatorlar, ovozli fayllar, tasvir fayllari va boshqalar. Barcha resurslar loyihada res katalogida joylashgan. Loyihada belgilangan resurslarning har xil turlari uchun res katalogida pastki kataloglar yaratiladi. Qo'llab-quvvatlanadigan pastki kataloglar:
animator/: xususiyat animatsiyalarini belgilaydigan xml fayllari

anim/: o'zaro animatsiyani belgilovchi xml fayllari

rang/: ranglar ro'yxatini belgilaydigan xml fayllari

chizilgan/: Grafik fayllar (.png, .jpg, .gif)

mipmap/: Turli ekran oʻlchamlari uchun dastur piktogrammalarida ishlatiladigan tasvir fayllari

layout/: ilovaning foydalanuvchi interfeysini belgilaydigan xml fayllari

menyu/: ilova menyusini belgilaydigan xml fayllari

raw/: xom holatda saqlangan turli fayllar

qadriyatlar/: dasturda ishlatiladigan turli qiymatlarni o'z ichiga olgan xml fayllari, masalan, string resurslari

xml/: ixtiyoriy xml fayllari

font/: shrift taʼriflari va kengaytmalari .ttf, .otf yoki .ttc boʻlgan fayllar yoki elementini oʻz ichiga olgan XML fayllar

Umuman olganda, biz quyidagi manba turlarini aniqlashimiz mumkin:




Misol uchun, agar biz sukut bo'yicha yaratilgan standart Android Studio loyihasini olsak, res katalogida turli xil resurslar uchun bir nechta papkalar mavjudligini ko'rishimiz mumkin:

Odatiy bo'lib, Android-da foydalaniladigan barcha turdagi resurslar uchun kataloglar mavjud emas, ammo agar kerak bo'lsa, biz kerakli katalogni res papkasiga qo'shishimiz va keyin unga resursni joylashtirishimiz mumkin.

Loyiha kompilyatsiya qilinganda, barcha resurslar haqidagi ma'lumotlar maxsus R.jar fayliga qo'shiladi va undan keyin resurslar bilan ishlashda foydalaniladi.


Resurslarni qo'llash
Resurslarga kirishning ikki yo'li mavjud: manba kodi faylida va xml faylida.

Koddagi manbalarga havola


Ushbu yozuvdagi resurs turi R.java faylida belgilangan bo'shliqlardan (ichki sinflar) biriga tegishli bo'lib, ular xml da mos turlarga ega:

R.drawable (uning xml chizilgan turi)

R.id (id)

R.layout (tartib)

R.string (string)

R.attr(attr)

R.koʻplik (koʻplik)

R.array (string-massiv)

Masalan, onCreate() usulidagi MainActivity kodida active_main.xml resursini GUI sifatida o'rnatish uchun quyidagi qator mavjud:

1
setContentView(R.layout.activity_main);


R.layout.activity_main ifodasi orqali biz activity_main.xml resursiga murojaat qilamiz, bu erda layout resurs turi, active_main esa resurs nomidir.

Xuddi shunday, biz boshqa resurslarni olishimiz mumkin. Masalan, app_name resursi res/values/strings.xml faylida aniqlanadi:




ViewApp

Bu resurs satrga ishora qiladi. Java kodida berilgan resursga havola olish uchun biz R.string.app_name ifodasidan foydalanishimiz mumkin.
xml faylida kirish
Ko'pincha xml faylidagi manbaga murojaat qilish kerak bo'ladi, masalan, faollik_main.xml kabi vizual interfeysni belgilaydigan faylda. Xml fayllaridagi manba havolalari quyidagi rasmiylashtirilgan shaklga ega: @[paket_nomi:]resurs_turi/resurs_nomi

package_name resurs joylashgan paket nomini bildiradi (agar resurs bir xil paketda bo'lsa, ixtiyoriy)

resource_type resurs turi uchun R sinfida belgilangan kichik sinfni ifodalaydi

resource_name - kengaytmasiz resurs fayl nomi yoki XML elementidagi android:name atributining qiymati (oddiy qiymatlar uchun).

Masalan, biz strings.xml faylida resurs sifatida belgilangan TextView elementida satrni ko'rsatmoqchimiz:

android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" />
getResources usuli
Faoliyat sinfidagi resurslarni olish uchun android.content.res.Resources obyektini qaytaradigan getResources() usulidan foydalanishimiz mumkin. Ammo resursning o'zini olish uchun biz qabul qilingan Resurs ob'ektidagi usullardan birini chaqirishimiz kerak. Uning ba'zi usullari:
getString(): strings.xml faylidan qatorni raqamli identifikator bo'yicha qaytaradi

getDimension(): raqamli qiymatni qaytaradi - o'lchov resursi

getDrawable(): grafik faylni Drawable obyekti sifatida qaytaradi

getBoolean(): mantiqiy qiymatni qaytaradi

getColor(): rang taʼrifini qaytaradi

getColorStateList(): ColorStateList ob'ektini - ranglar to'plamini qaytaradi

getFont(): Shrift taʼrifini Shrift obyekti sifatida qaytaradi

getFloat(): float qiymatini qaytaradi



getLayout(): tartib fayli bilan bogʻlangan XmlResourceParser obyektini qaytaradi
Bu usullarning faqat bir qismi. Lekin ularning barchasi parametr sifatida olinadigan resurs identifikatorini oladi. Keling, ularning qo'llanilishini qisqacha ko'rib chiqaylik. Resurs manbai sifatida bir xil res/values/strings.xml faylini olaylik, mening holimda u quyidagicha ko'rinadi:

ViewApp

Va MainActivity kodini o'zgartiring:
package com.example.viewapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
// получение ресурсов из файла values/strings.xml
String app_name = getResources().getString(R.string.app_name);
TextView textView = new TextView(this);
textView.setTextSize(30);
textView.setText(app_name);
setContentView(textView);
}
}
Bu erda getResources() usulidan foydalanib, biz barcha resurslarni olamiz va keyin ularni grafik elementlarning xossa qiymatlarini o'rnatish uchun foydalanamiz. Ilova boshlanganda biz olingan resurslarning ilovasini ko'ramiz:

Xuddi shunday, biz dasturli ravishda boshqa resurslarni olishimiz va ularni ilovada ishlatishimiz mumkin. Ammo shuni ta'kidlash kerakki, bu holda biz getResources() usulidan foydalanishimiz va umuman resursni olish uchun har qanday aniq amallarni bajarishimiz shart emas, chunki TextView sinfining setText() usuli manba identifikatori bo'yicha to'g'ridan-to'g'ri matn sozlamalarini qo'llab-quvvatlaydi:
textView.setText(R.string.app_name);
Download 109.11 Kb.

Do'stlaringiz bilan baham:




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