نمایش یک پیام به کاربر، به صورت یک پنجره جدید، با استفاده از 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 در فولدربندی پروژه اندروید، کپی می کنیم :
همچنین می خواهیم که یک متن فارسی نیز در پیام نمایش داده شود. بنابراین، این متن فارسی را باید در فایل strings.xml تعریف کنیم :
فایل strings.xml را که باز می کنیم، دارای کدهای زیر است :
<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 را به صورت زیر کامل می کنیم :
<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 می سازیم :
من فایل xml زیر را طراحی کرده ام که شامل یک TextView و یک ImageView می باشد (شما می توانید پیام دلخواه خود را بسازید، به هر شکل دلخواه) :
بنابراین کدهای فایل dialog.xml به صورت زیر خواهد بود :
<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 اصلی است را باز می کنیم :
سپس کدهای زیر را در آن می نویسیم (برای ساخت یک دکمه) :
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>
بنابراین ظاهر گرافیکی آن، به صورت زیر خواهد بود :
حالا فایل MainActivity.java که همان فایل activity اصلی می باشد را باز می کنیم :
در ابتدا، کدهای آن به صورت زیر می باشد :
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 را به صورت زیر تغییر می دهیم :
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;
}
}
پروژه اندروید، آماده است و اکنون می توانید آن را به روش دلخواه خود، تست کنید.
من برنامه اندروید را بر روی یک گوشی نصب کرده ام، اولین صفحه آن به صورت زیر می باشد :
با کلیک بر روی دکمه (button)، پیام زیر نمایش داده می شود :
فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :