برنامه نویسی اندروید - دانشگاه صنعتی قم

این وبلاگ کانال ارتباطی با دانشجویان درس«برنامه نویسی موبایل» دانشگاه صنعتی قم می باشد.

برنامه نویسی اندروید - دانشگاه صنعتی قم

این وبلاگ کانال ارتباطی با دانشجویان درس«برنامه نویسی موبایل» دانشگاه صنعتی قم می باشد.

محتویات این وبلاگ با هدف آموزش اندروید در دوره درسی "برنامه نویسی موبایل" در دانشگاه صنعتی قم توسط اینجانب گردآوری شده است.
تعداد زیادی از مطالب ترجمه شده در این وبلاگ توسط دانشجویان دانشگاه صنعتی قم به عنوان پروژه های این درس ترجمه شده است.
در صورتی که تصمیم به تماس با من دارید، می توانید از طریق آدرس ایمیل qut دات android در جی میل دات کام با من تماس بگیرید.
-------------------
اگر بتوانم به شما کمکی در زمینه برنامه نویسی اندروید بکنم، خوشحال خواهم شد با این حال اگر پرسشی را ارسال کردید و بنده نیز به دلیل مشکلات و مشغله نتوانستم پاسخگو باشم، پوزش بنده را پیشاپیش پذیرا باشید.
-------------------
چون افراد زیادی از من درخواست می کنند تا برنامه نویسان اندروید به خصوص در شهر قم را به آنها معرفی کنند، اگر تمایل دارید رزومه و یا مشخصات خود را برایم ارسال کنید تا در صورت وجود درخواستهایی از این دست به شما اطلاع دهم.
از نظر من محدویتی به شهر قم وجود ندارد، لذا اگر برنامه نویس اندروید در شهرهایی دیگر هستید و یا به دنبال نیروی برنامه نویس اندروید هستید با من در تماس باشید، شاید بتوانم در این زمینه به شما کمکی بکنم :)
ناگفته نماند از آنجایی که در فضای مجازی من شناختی از هیچ شخص یا شرکتی ندارم، اگر شخصی به دنبال نیروی کار باشد، به افرادی که با مشخصات درخواستی ایشان تطابق داشته باشند، اطلاع خواهم داد و توصیه می شود برنامه نویسان محترم نیز قبل از شروع به همکاری، ملاحظات لازم در این زمینه را به عمل آورند چون من نیز شناختی از طرف مقابل ندارم.

طبقه بندی موضوعی

24- طراحی رابط کاربری اندروید: کار با دیالوگ ها

سه شنبه, ۱۳ خرداد ۱۳۹۳، ۰۴:۵۸ ب.ظ


مترجم: مرجان فراهانی - زهرا حسنی

آدرس مطلب اصلی: http://code.tutsplus.com/tutorials/android-user-interface-design-working-with-dialogs--mobile-7297

های اندروید معمولا به زمینه های کاربردی که سطح پایین تر هرکدام با یک activty رابطه دارد شکسته میشود . که هرکدام نمایش و رفتار صحنه خاصی را دستور میدهد. گاهی اوقات شما می خواهید که یک چیزی یا ورودی خاصی را سریعا به کاربر اطلاع دهید اما نمیخواهید که آن اطلاعات را روی خود صفحه نمایش دهید . اینجا دو تا انتخاب اساسی دارید. 1.می توانید یک activity class کوچک برای یک نتیجه خاص مشخص کنید و سپس به فعالیت اصلی خود برگردید یا 2. کار شما می تواند یک دسترسی کوچک دستی به activity class داشته باشید و ان dialog است .

امروز می خواهیم راجع به dialog صحبت کنیم اینکه dialog ها چگونه استفاده و ساخته شوند . سپس وارد مراحل ایجاد یک dialog پایه به وسیله activityclass از ابتدا تا انتها میشویم . ما این روش را با روشهای سریعی که ازانواع مختلفی از dialog هایی که به دستمان رسیده (ممکن است شما بخواهید ازآنها درانواع android app هااستفاده کنید) پیگیری می کنیم. اما در مرحله ئ اول شما باید چرخه زندگی activity dialog را درک کنید.

یک dialog چیست ؟

یک dialog چیست ؟ کلاس dialog اندروید یک کلاس پایه ای برای تمام نمونه های کنترلی dialog است که میتوانید از آن در class activity استفاده کنید. Dialogy هایی در چرخه زندگی android app activity شما است . انها به بخش جلویی برای بلوکه کردن صفحه activity و برای جلب توجه کاربر و کسب نتایج مختلف و متنوع برده میشوند .

نکته درباره اینده شما و ساخت تکه های مرتبط با applicationها: این نوع اموزش از یک روش قدیمی برای مدیریت dialog پایه با activity های کوچک استفاده میکرد که اخیرا مقداری از این روشها بد شناخته شده اند. اسناد جمع اوری شده ازandroid sdk توصیه میکنداگر شما میخواهید از dialog ها استفاده کنید باید کتابخانه ی سازگاری را نصب و از تکه های باقیمانده کلاسdialog استفاده کنید . وقتی که شما در چرخه دیالوگ ها ماهر شدید، شما همچنین به چک کردن درست قطعات خارجی dialogFregment classنیز نیازمندید. اگرچه ان روش دورتر از حوزه ی بحث در باره dialog پایه است که نیازمند نصب و استفاده از کتابخانه سازگار کننده برای راهنمایی و حمایت dialog ها در ورژن های anoired sdk است. در حالی که متدهایی که در اینجا درحال مطرح کردن و بحث هستند بد دانسته شده اند، روش جدید استفاده از dialog ها تا زمان HoneyComb معرفی نشدند ، بنابراین این راه حل روی همه ی دستگاه ها به خوبی کار خواهد کرد.

dialog به چه درد میخورد ؟

Dilog وقتی مفید است که شما میخواهید: • به کاربر در باره بعضی اتفاقات و یا پروسه ها اطلاع دهید. • کاربر را به confirm یک حالت مجبور کنید. • اماده کردن و اطلاع به کاربر در باره اطلاعات دور از دسترس و جمع اوری کردن آنها.

نکته در باره Toast Messages : بعضی از توسعه دهندگان از Toast Messages برای ارسال اخطار یا پیام به کاربر استفاده می کند. Toast Messages برای چندلحظه در Activity Screen شما نشان داده می شود و سپس به صورت اتوماتیک ناپدید می شود کاربر شانسی برای عکس العمل در مقابل Toast Messages ندارد. ما دوست داریم فکر کنیم که خط جدا کننده مابین(-) در زمان استفاده از tast over dialog این چنین است: وقتی که کاربر در حال مطلع شدن در باره یک پیغام ضروریست از toast استفاده شود.اما زمانی که اطلاعات ارائه شده حیاتی است از dialog استفاده شود.ما از toast ها به عنوان پیغام های سبک و اطلاعاتی استفاده میکنیم. هر اطلاعاتی که می خواهید کاربر عکس العملی با استفاده ازdialog ها نمایش دهد نیازمند استفاده از دکمه dismiss است.

یک مثال Toast Messages در پایین نشان داده شده است:

ساختمان dialog چگونه است؟

هر dialog اجرا های مختلفی دارد بعضی از انها اختیاری است. یک dialog پایه ای دارای: • یک تیتر. • یک پیام. • دکمه هایی جهت جمع اوری پاسخ و واکنش کاربر است.

یک dialog پیش پا افتاده و معمولی در پایین نشان داده شده است:

همچنین شما می توانید کنترل های dialog طرح بندی را بسازید.، جایی که شما layout را در حوزه ی dialog کنترل میکنید. شما از این طریق یک dialog سطح بالا و مشکل را طراحی کرده اید. شامل اینکه ورودی توسط کاربر با استفاده ازکنترل گرهای android ایی شامل ویرایش متن , spinner و ....... گرفته میشود .

یک روش پیگیری diolog :

چرخه ی حیات dialog چیست؟

حالا بیایید در مورد اینکه یک dialog چگونه با activityClass مدیریت میشود صحبت کنیم ما از واقعیتهای پایه ای شروع میکنیم.

• یک dialog متعلق به یک activity است و توسط همان activity مدیریت می شود. • یک activity می تواند یک یا تعداد بیشتری dialog داشته باشد و هرdialog مختصه مخصوص به خود دارد . • هر activity یک گروه ازdialog ها را دارد. • بصورت پیش فرض هر dialog در صورتیکه جهت نمایش مجدد در خواست شود دوباره نمایش داده میشود. • هر activity میتواند یک dialog خاص به وسیله مشخصه اش توسط showDialog() نمایش داده شود. • هر activity می تواند نمایش یک dialog را متوقف کند که به وسیله استفاده از مشخصه متد disMissDialog(). این dialog در activity's pool باقی خواهد ماند تا در مواقع ضروری دوباره استفاده شود. • هر activity میتواند dialog یی که در activity pool است را از طریق مشخصه ی متد removeDialog() پاک کند.اگر لازم باشد این dialog دوباره نمایش داده شود باید از ابتدا ساخته شود.

حالا چگونه یک dialog پایه را از خود activity class بسازیم؟ شما به سادگی این را به عنوان قسمتی از فعالیتتان تعریف میکنید و میسازید وبه وجود می آورید. بیایید به مثال ساده ای نگاه کنیم:

Step 0 با dialog های پایه ای شروع میکنیم

با ساختن یک application اندرویدی ساده که با دکمه های کنترلی کار میکنئ شروع میکنیم. ما این نمونه از app را جهت ساخت یک دکمه ی کلیک برای نمایش یک dialog که مستقیما در صفحه نمایش داده شود تغییر میدهیم. میتوانید این app را از اول بسازید و یا اینکه میتوانید این نمونه از کد را که ما برای مشاهده آماده کرده ایم دنبال کنید.

Step 1 تعریفDialog های تازه ای در activity class شما

حالا بیاییید این 3 dialog را به activity class خود اضافه کنید activityclss را که بر اساس java است را ویرایش کنید و اعضای زیر را به ان اضافه کنید.

private static final int MY_SUPER_SIMPLE_DIALOG_ID = 0;
private static final int MY_SIMPLE_DIALOG_ID = 1;
private static final int MY_DIALOG_ID = 2;

این 3 مشخصه واحد برای dialog ، activity class تعریف می کند. این مقادیر اختیاری و دلخواه است ولی باید به عنوان یک مشخصه واحد در activity باشد.

Step 2 ساخت dialog ها:

برای ساخت نمونه dialog باید در activityclass خود متد ancreatdialog() را اجرا کنید . وقتی که متد show dialog فراخوانی می شود این متد راه اندازی میشود که باید نمونه اختصاصی dialog را باز گرداند. از وقتی که ما این 3 تا dialog را در کلاس داریم باید مشخصه dialog ورودی را بررسی کنیم و از یک switch استفاده کنیم برای باز گرداندن dialog به نوع اختصاصی ان .

یک مکالمه ساده کنترلی در شکل4 نشان شده است به عنوان یک تیتر متن است و هیچ دکمه ای ندارد. و تنها راه dismiss کردن و فشردن دکمه back است. از زمانیکه دکمه ok به عنوان dismiss استفاده می شود این نوع dialog خیلی کارامد نیست و دیده نمیشود. این dialog به وسیله کلاس dialog معرفی میشود و تنظیمات title با settitel است.

یک dialog کنترل معمولی که در زیر نشان داده شده است یک متن را با icon و پیامها نشان میدهد و یک کلمه انفرادی ok دارد. این یک پیغام هشدار است که به سادگی جهت استفاده در alert dialog ساخت یک کلاس تولید میشود. توی این موقعیت برای ساخت دکمه به عنوان” تمایل داشتن” desire از titer و setTitleو setlco.c set pojlxbox می توان استفاده کرد.

دیکر کنترل کننده my – dialog –td)) است که در شکل بعدی نشان داده شده است . که یک متن را با icon و پیغام خاص نشان داده شده است. 2دکمه ok cancel دارد این پیغام هوشیار دیگریست که برای استفاده در alert dialog builder می تواند استفاده شود در این موقعیت از setTitle(), setMessage(), setIcon, setPositiveButton(), and setNegativeButton() l برای ساخت دکمه به عنوان disire استفاده می شود.

اجرای کامل onCreat dialog که در ساخت همه 3 نوع dialog که در بالابحث شد در اینجا نشان داده شده است

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case MY_SUPER_SIMPLE_DIALOG_ID:
        Dialog superSimpleDlg = new Dialog(this);
        superSimpleDlg.setTitle(R.string.dialog_title);
        return superSimpleDlg;
 
    case MY_SIMPLE_DIALOG_ID:
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(R.string.dialog_title);
        builder.setMessage(R.string.dialog_message);
        builder.setIcon(android.R.drawable.btn_star);
builder.setPositiveButton(android.R.string.ok, new
DialogInterface.OnClickListener() {  
                  public void onClick(DialogInterface dialog, int which) {  
                        Toast.makeText(getApplicationContext(),
"Clicked OK!", Toast.LENGTH_SHORT).show();
                      return;  
                } }); 
        return builder.create();
 
    case MY_DIALOG_ID:
        AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
        builder2.setTitle(R.string.dialog_title);
        builder2.setIcon(android.R.drawable.btn_star);
        builder2.setMessage("");
        builder2.setPositiveButton(android.R.string.ok, new
DialogInterface.OnClickListener() {  
                  public void onClick(DialogInterface dialog, int which) {  
                        Toast.makeText(getApplicationContext(),
"Clicked OK!", Toast.LENGTH_SHORT).show();
                      return;  
                } });   
 
        builder2.setNegativeButton(android.R.string.cancel, new
DialogInterface.OnClickListener() {  
                  public void onClick(DialogInterface dialog, int which) {  
                        Toast.makeText(getApplicationContext(),
"Clicked Cancel!", Toast.LENGTH_SHORT).show();
                      return;  
                } });   
             
        return builder2.create();
    }
    return null;
}

Step 3 دیالوگهای اغازین

فراخواندن یک عملی است که دیالوگ را در گوشه ای نگه می دارد تا دوباره از انها استفاده و انها را نشان دهد . بعضی از dialog ها مثل 2 مثال ابتدایی ما dialog id (MY_SUPER_SIMPLE_DIALOG_ID and MY _SIMPLE_DIALOG_ID) که محتوای ثابتی دارد و نشان دادن چندین و چند باره ان نتییجه بخش نیست . هم عملیات پیکربندی دیالوگ را می توانید با متد oncreate dialog انجام دهید. اگرچه مثال سوم my dialog) dialog)یک پیغام پیکربندی دارد و هرجند یکبار باید update شود dialogi ای که برای نشان دادن در تاریخ فعلی اورده شده همان دیالوگی است که درخواست شده است. اگر پیغام را برای dialog در متد oncreate dialog پیکربندی کنیددر همان تاریخ نشان دادهخواهد شد.

هر وقت یک درخواست dialogn داده میشود شما این شانس را دارید که متن را با متد onprepar dialog اپدیت کنید. می توانیم از این فرصت برای update پیغامهای dialog مان به متن جدید استفاده کنیم.


@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    super.onPrepareDialog(id, dialog);
    switch (id) {
    case MY_SUPER_SIMPLE_DIALOG_ID:
        // Static dialog contents. No initialization needed
        break;
    case MY_SIMPLE_DIALOG_ID:
        // Static dialog contents. No initialization needed
        break;
    case MY_DIALOG_ID:
        // Some initialization needed.
            AlertDialog myDialog = (AlertDialog) dialog;
                SimpleDateFormat dFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss",
            Locale.getDefault());
                myDialog.setMessage("This dialog was launched at " +
            dFormat.format(mCurrentTime));
        break;
    }
    return;
}

نکته mcurrentTime() یک عضو تغییرپذیر که هر کدام را تنظیم می کنیم و هر وقت که dialog راه انداخته شود. که منبع کامل را برای تمام مثالها و چگونگی کارکرد دیده می شود.

Step۴ فعالسازی دیالوگ ها برای نمایش

در اخر شما حاضرید که کنترلهای dialog خود را برای نمایش دادن نشان دهید برای آزمودن ساده app از یک دکمه برای tap جهت راه انداختن یکی 3 روش dialog که همین الان ساختیم بر اساس ساعت درست استفاده می کنیم. کنترل کننده ی کلیک برای دکمه ی کنترل همان طور که در activity class تعریف کردیم این چنین است:

public void onDialogButtonClick(View v) {
 
    Date dt = new Date(); // Gets the current date/time
    if (dt.getSeconds() % 3 == 0) {
        showDialog(MY_SUPER_SIMPLE_DIALOG_ID);
    } else if (dt.getSeconds() % 3 == 1) {
        showDialog(MY_SIMPLE_DIALOG_ID);
    } else {
        mCurrentTime = dt;
        showDialog(MY_DIALOG_ID);
    }
}

این تمام چیزی بود که برای براه انداختن activity dialog احتیاج داریم . دو پشت هم بر دکمه کلیک کنید تا انواع مختلف کنترلهای dialog را که تعریف کرده اید ببندید .

نتیجه

dialoge ها یک ابزار قدرتمند لرای رابط کاربری هستند که به شما کمک میکنند که برنامهی رابط کاربری خود را انعطاف پذیرو منظم میکند.شما میتوانید کنترل های دیالوگ ها در راه های متعدد برای اطلاع دادن و اعلان و جمع آوری بیشتر ورودی به کاربرها سفارش دهید. فهمیدن چرخه ی حیات دیالوگ ها مهم است طوری که آنهابه وسیله ی فعالیت اجدادشان مخلوط میشودن و دوباره استفاده میشوند .

  • وهاب صمدی بخارایی

نظرات  (۱)

ممنون از ترجمه ی خوبتون

ارسال نظر

کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی