9. Android dialog oynasi
Download 328.36 Kb. Pdf ko'rish
|
1 2
Bog'liq1-9
1 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. 2 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(); } 3 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) : 4 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
ma'muriyatiga murojaat qiling