9. Android dialog oynasi


Download 328.36 Kb.
Pdf ko'rish
bet1/2
Sana24.03.2023
Hajmi328.36 Kb.
#1292805
  1   2
Bog'liq
1-9




9.Android dialog oynasi 
 
dialog oynalari 
umumiy ma'lumot 
Dialog sinfi 
AlertDialog dialog oynasi 
O'z dialog oynalarini yaratish 
Android 3.0 dan boshlab, dialog oynalari bilan ishlash biroz o'zgardi. O'shandan beri maqola 
qayta yozilmagan va eskirib qolishi mumkin. 
umumiy ma'lumot 
Ba'zi hollarda, foydalanuvchi qandaydir tanlashi yoki xato xabarini ko'rsatishi kerak bo'lgan 
dialog oynasini ko'rsatish talab qilinadi. Albatta, siz o'zingizning oynangizni yaratishingiz, unga 
kerakli tugmachalarni joylashtirishingiz va ularning bosishlarini qayta ishlashingiz mumkin. 
Biroq, Android allaqachon vazifalar uchun moslashuvchan tarzda sozlangan o'zining o'rnatilgan 
dialog oynalariga ega. Oddiy vazifalar uchun dialog oynalaridan foydalanish xotira resurslarini 
tejash, ilovadagi Faoliyatlar sonini kamaytirishi mumkin. Axir, siz manifestda faoliyatni 
ro'yxatdan o'tkazishingiz shart emas, ekrandagi elementlarning joylashuvi haqida o'ylang va 
hokazo. 
Android-dagi dialog oynalari yarim shaffof "suzuvchi" harakatlar bo'lib, ular chaqirilgan asosiy 
ekranni qisman qoplaydi. Odatda, ular dither yoki qorayish filtrlari yordamida ota-ona 
faoliyatini yashirishadi. Sarlavhani setTitle() usuli va tarkibni setContentView() usuli bilan 
o'rnatishingiz mumkin. 
Android quyidagi dialog oynalarini qo'llab-quvvatlaydi: 
• Dialog - barcha turdagi dialog oynalari uchun asosiy sinf; 
• AlertDialog - tugmalar, ro'yxat, belgilash katakchalari yoki radio tugmalari bo'lgan muloqot 
oynasi; 
• CharacterPickerDialog - asosiy belgi bilan bog'langan urg'uli belgini tanlash imkonini 
beruvchi dialog oynasi; 
• ProgressDiaiog - ProgressBar komponentidan foydalangan holda taraqqiyot indikatori dialog 
oynasi. API 26 eskirgan. 
• DatePickerDialog – DatePicker elementi bilan sana tanlash vositasi dialogi 
• TimePickerDialog - TimePicker elementi bilan vaqtni tanlovchi dialog oynasi 
Agar mavjud dialog turlarining hech biri sizga mos kelmasa, siz o'zingizning muloqot 
oynangizni yaratishingiz mumkin. 
Dialog sinfi 
Dialog klassi barcha dialog oynalari sinflari uchun asosiy sinfdir. ProgressDialog, 
TimePickerDialog va DatePickerDialog AlertDialog sinfining kengaytmasi bo'lgani uchun 
ularda buyruq tugmalari ham bo'lishi mumkin. 
Har bir dialog u ishlatiladigan faoliyat yoki fragment ichida aniqlanishi kerak. Muloqot oynasi 
bir yoki bir necha marta ochilishi mumkin. 
Muloqot oynasini ko'rsatish uchun showDialog() usulini chaqirish va uni ko'rsatmoqchi bo'lgan 
dialog oynasining identifikatori (dastur kodida e'lon qilinishi kerak bo'lgan doimiy) parametr 
sifatida o'tkazish kerak. 
dismissDialog() usuli dialogni ekranda ko'rsatmasdan yashiradi (lekin uni olib tashlamaydi). 
Oyna faoliyatning dialog oynasi hovuzida qoladi. showDialog() usuli yordamida qayta 
ko'rsatilganda oynaning keshlangan versiyasidan foydalaniladi. 



removeDialog() usuli dialog oynasini faoliyat oynasidan olib tashlaydi. Agar showDialog() 
usulini yana chaqirsangiz, dialog oynasi yana yaratilishi kerak bo'ladi. 
Dialog sinfi asosida dialog oynasini yaratishning asosiy misolini ko'rib chiqamiz. Muloqot 
oynasi uchun eng oddiy tartibni yarating - LinearLayout ichidagi matn maydoni. Asosiy 
faoliyatni belgilashda dialog oynasiga qo'ng'iroq qilish uchun tugmani qo'shing. Asosiy faoliyat 
uchun kodga yozing: 
Dialog dialog; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
dialog = new Dialog(MainActivity.this); 
// Установите заголовок 
dialog.setTitle("Заголовок диалога"); 
// Передайте ссылку на разметку 
dialog.setContentView(R.layout.dialog_view); 
// Найдите элемент TextView внутри вашей разметки 
// и установите ему соответствующий текст 
TextView text = (TextView) dialog.findViewById(R.id.dialogTextView); 
text.setText("Текст в диалоговом окне. Вы любите котов?"); 

public void onClick(View v) 

// Выводим диалоговое окно на экран 
dialog.show(); 




Odatiy bo'lib, dialog oynasi ko'rsatilganda, asosiy faoliyat xira bo'ladi. Hujjatlarda xiralashish 
darajasini nazorat qilish imkonini beruvchi konstantalar mavjud: 
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); 
lp.dimAmount = 0.6f; // уровень затемнения от 1.0 до 0.0 
dialog.getWindow().setAttributes(lp); 
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
// Установите заголовок 
dialog.setTitle("Заголовок диалога"); 
... 
Emulyatorda men farqni sezmadim. Android 2.3 ning eski versiyasida 
WindowManager.LayoutParams.FLAG_BLUR_BEHIND xiralashtirish effekti ham mavjud 
bo‘lib, endi u eskirgan. Agar siz bu effektni baribir o'jarlik bilan yozsangiz, siz loyqalik 
effektini emas, balki qora fonni olasiz. Kim biladi, ehtimol bu variant sizga mos keladi. 
onCreateDialog() va onPrepareDialog() usullari 
Oyna yaratilganda onCreateDialog() usuli bir marta chaqiriladi. Dastlabki yaratilishdan so'ng, 
showDialog() usuliga har bir qo'ng'iroq onPrepareDialog() ishlov beruvchisini ishga tushiradi. 
Ushbu usulni bekor qilish orqali siz dialog oynasini har safar ko'rsatilganda o'zgartirishingiz 
mumkin. Bu ko'rsatilgan qiymatlarning har qandayiga kontekst keltiradi. Agar siz dialog 
oynasiga har bir qo'ng'iroq qilishdan oldin uning xususiyatlarini o'zgartirmoqchi bo'lsangiz 
(masalan, matnli xabar yoki tugmalar soni), uni ushbu usul ichida amalga oshirishingiz 
mumkin. Ushbu usul dialog identifikatori va onCreateDialog() usulida yaratilgan Dialog 
ob'ektining o'zi orqali uzatiladi. 
@Override 
public void onPrepareDialog(int id, Dialog dialog) { 
switch(id) { 
case (TIME_DIALOG) : 



SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 
Date currentTime = new Date(java.lang.System.currentTimeMillis()); 
String dateString = sdf.format(currentTime); 
AlertDialog timeDialog = (AlertDialog)dialog; 
timeDialog.setMessage(dateString); 
break; 


Bitta ilovada bir nechta dialog oynalari bo'lishi mumkinligi sababli, faoliyatda ishlatiladigan 
dialog oynasini oldindan belgilash kerak. Buning uchun identifikator yaratiladi (butun sonli 
doimiy). showDialog() usulini chaqirganingizda, berilgan dialog oynasi identifikatorini 
parametr sifatida o'tkazasiz. Shundan so'ng, onCreateDialog() usuli chaqiriladi, u kerakli dialog 
oynasining namunasini qaytaradi. 
Muloqot oynasini onCreateDialog()siz yaratish mumkin, masalan, dialog oynasini chaqirish 
uchun tugmani bosish moslamasida, lekin keyin u joriy faoliyatga biriktirilmaydi. Uni 
faoliyatga qo'shish uchun siz joriy faoliyatni parametr sifatida o'tkazib, setOwnerActivity() 
usulini chaqirishingiz kerak. 
Keling, bir misolga o'tamiz. Agar faoliyatda bir nechta turli dialoglar chaqirilishi kerak bo'lsa, 
avvalo har bir dialog uchun butun son identifikatorini belgilashingiz kerak, masalan: 
static final int DIALOG_PAUSED_ID = 0; 
static final int DIALOG_GAMEOVER_ID = 1; 
Эти идентификаторы потом можно использовать в вызове метода 

Download 328.36 Kb.

Do'stlaringiz bilan baham:
  1   2




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