Alert Dialogs

Atunci când dezvolţi o aplicaţie Android, ultimul lucru pe care ţi-l doreşti să îl vezi este următoarea fereastră de notificare:

Cu toate acestea afişarea unei ferestre de notificare este nesesară de foarte multe ori. Aceasta asigură o bună  comunicare între user şi aplicaţie.  Acest tip de fereastră poartă numele de Alert Dialog şi poate fi creată în cadrul oricărei activităţi (Activity).

Scopul acestui tutorial este de a exemplifica modalităţile de utilizare a unui AlertDialog, precum şi implementarea unei ferestre custom.

Pentru a atinge primul obiectiv al acestui tutorial, si anume modul de utilizare a unui AlertDialog, am folosit layout-ul creat în tutorialul anterior, iar activitatea în care vom declara Alert Dialog-ul se numeşte TestUI:

package org.ex.ap;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
public class TestUI extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final AlertDialog alertDialog = new AlertDialog.Builder(TestUI.this).create();
alertDialog.setTitle("Titlu Alert Dialog");
alertDialog.setMessage("Veti utiliza un AlertDialog?");
alertDialog.setButton("DA", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.cancel();
}
});
alertDialog.setButton2("NU", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.setIcon(R.drawable.icon);
alertDialog.show();
}
}

Se va afişa:

În cadrul unui AlertDialog pot fi introduse şi alte tipuri de controale, de exemplu RadioButton.

package org.ex.ap;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.Toast;
public class TestUI extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final CharSequence[] SOModels = {"Eclair", "FroYo", "Gingerbread"};
AlertDialog.Builder alertBuilder1 = new AlertDialog.Builder(this);
alertBuilder1.setIcon(R.drawable.icon);
alertBuilder1.setTitle("Selectati versiunea preferata");
alertBuilder1.setSingleChoiceItems(SOModels, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(),
"Ati ales "+SOModels[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = alertBuilder1.create();
alert.show();
}
}

Fereastra creată va arăta astfel:

Pentru a înştiinţa utilizatorul cu privire la alegerea făcută am utilizat Toast, o clasă utlizată pentru a afişa un pop-up  care conţine un mesaj.

Platforma oferă posibilitatea realizării unei ferestre de notificare custom. Pentru a creea o componentă de acest tip vom declara un layout custom_dialog.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/bg_android"
android:orientation="vertical"
android:gravity="center"
android:layout_width="200dip">
<TextView android:id="@+id/TextView01"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textStyle="bold"
android:layout_width="wrap_content"
android:text=" Exemplu ">
</TextView>
<TextView android:id="@+id/TextView02"
android:layout_height="wrap_content"
android:textColor="#fff"
android:layout_width="wrap_content"
android:layout_margin="7dip"
android:text="Custom Dialog "
android:gravity="center">
</TextView>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK"
android:id="@+id/OkButton">
</Button>
</LinearLayout>

 

Codul Java aferent este următorul:

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.view.View.OnClickListener;
public class TestUI extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**afisare Custom Dialog */
CustomizeDialog customizeDialog = new CustomizeDialog(this);
customizeDialog.show();
}
class CustomizeDialog extends Dialog implements OnClickListener {
Button okButton;
public CustomizeDialog(Context context) {
super(context);
//ascundere titlu
requestWindowFeature(Window.FEATURE_NO_TITLE);
//obtinem design-ul ferestrei
setContentView(R.layout.main);
okButton = (Button) findViewById(R.id.OkButton);
okButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
/** cand butonul este apasat dispare fereastra*/
if (v == okButton)
dismiss();
}
}
}

Iar rezultatul grafic…

Spor la notificări! 😉

Advertisements
Alert Dialogs

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s