آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

حتما در برنامه های اندروید مختلف مشاهده کرده اید که در برخی مواقع، با زدن یک دکمه و یا پیش آمدن یک وضعیت، یک پیام به کاربر نمایش داده می شود. در این حالت، یک پنجره باز شده و اطلاعاتی را به کاربر نمایش می دهد. در این آموزش قصد داریم که چگونگی نمایش یک پیام به کاربر را شرح بدهیم.

در ادامه، یک برنامه اندروید می سازیم که در آن، activity اصلی، دارای یک دکمه (button) می باشد که اگر کاربر بر روی آن اشاره کند، یک پنجره باز شده و پیامی به وی نمایش داده می شود.

در برنامه eclipse ، ابتدا یک پروژه اندروید با نام Kelidestan.com_Dialogs می سازیم (نام package را برابر com.kelidestan.dialogs انتخاب می کنیم. نام activity اصلی را برابر MainActivity انتخاب می کنیم و فایل xml متناظر آن را هم برابر activity_main قرار می دهیم).

مهمترین نکته ای که در همین ابتدا باید بدانید، این است که ما برای نمایش یک پیام، نیازی به ساختن یک activity جدید نداریم، بلکه تنها باید یک فایل xml شامل محتویات پیام بسازیم و سپس کدهای لازم برای نمایش آن فایل xml به صورت یک پیام را در هر activity دلخواه، می توانیم قرار بدهیم (در آن activity ، پیام نمایش داده خواهد شد).

قصد داریم که پیام، شامل یک عکس نیز باشد. بنابراین، عکسی با نام dialog.jpg را در فولدر drawable-hdpi در فولدربندی پروژه اندروید، کپی می کنیم :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

همچنین می خواهیم که یک متن فارسی نیز در پیام نمایش داده شود. بنابراین، این متن فارسی را باید در فایل strings.xml تعریف کنیم :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

فایل strings.xml را که باز می کنیم، دارای کدهای زیر است :


<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Kelidestan.com_Dialogs</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>

</resources>

باید یک رشته (string) جدید با نام dialog تعریف کنیم که حاوی متن پیام است، علاوه بر این، یک رشته با نام dialog_title نیز تعریف می کنیم که در بالای پنجره حاوی پیام (به صورت عنوان پیام) نمایش داده می شود. بنابراین کدهای فایل strings.xml را به صورت زیر کامل می کنیم :


<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Kelidestan.com_Dialogs</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="dialog">پیام شما در اینجا نمایش داده می شود.</string>
    <string name="dialog_title">عنوان پیام</string>

</resources>

اکنون یک فایل xml ، با نام dialog.xml می سازیم :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

من فایل xml زیر را طراحی کرده ام که شامل یک TextView و یک ImageView می باشد (شما می توانید پیام دلخواه خود را بسازید، به هر شکل دلخواه) :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

بنابراین کدهای فایل dialog.xml به صورت زیر خواهد بود :


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:src="@drawable/dialog" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:gravity="center"
        android:text="@string/dialog"
        android:textSize="20dp" />

</LinearLayout>

توصیه من به شما این است که در فایل dialog.xml، هر عنصری که ساختید، مقداری حاشیه (margin) برای آن تعریف کنید تا بعدا که پنجره حاوی پیام، نمایش داده می شود، آن عنصر، به کناره های پنجره، نچسبیده باشد (در کدهای بالا، ما این نکته را رعایت کرده ایم).

خوب، تاکنون، پیام مورد نظر خود را ساختیم، اکنون وقت آن رسیده که در activity اصلی، یک دکمه (button) بسازیم که اگر کاربر بر روی آن اشاره کند، پیام ساخته شده توسط ما، به وی نمایش داده شود. ابتدا فایل activity_main.xml که مربوط به activity اصلی است را باز می کنیم :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

سپس کدهای زیر را در آن می نویسیم (برای ساخت یک دکمه) :


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

بنابراین ظاهر گرافیکی آن، به صورت زیر خواهد بود :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

حالا فایل MainActivity.java که همان فایل activity اصلی می باشد را باز می کنیم :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

در ابتدا، کدهای آن به صورت زیر می باشد :


package com.kelidestan.dialogs;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }

}

کدهای فایل MainActivity.java را به صورت زیر تغییر می دهیم :


package com.kelidestan.dialogs;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                Button b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {
               
                @Override
                public void onClick(View v) {
                        Dialog d = new Dialog(MainActivity.this);
                        d.setContentView(R.layout.dialog);
                        String title = getResources().getString(R.string.dialog_title);
                        d.setTitle(title);
                        d.show();
                }
        });
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }

}

پروژه اندروید، آماده است و اکنون می توانید آن را به روش دلخواه خود، تست کنید.

من برنامه اندروید را بر روی یک گوشی نصب کرده ام، اولین صفحه آن به صورت زیر می باشد :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

با کلیک بر روی دکمه (button)، پیام زیر نمایش داده می شود :

نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از Dialog ، در برنامه اندروید

فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :