Làm quen với layout và widget cơ bản trong Android (tiếp)

0

3.2 Toast Notification và Dialog

3.2.1 Toast Notification

            Toast là một loại thông báo (message) ngắn. Hiển thị trong một khoảng thời gian nhất định và tự động mất dần.

Nó giúp người lập trình gỡ rối (debugging) cho chương trình khi cần thiết .Trong lúc hiển thị, không ảnh hưởng đến activity khác và không bắt các sự kiện của người dùng.

a). Tạo Giao diện trong tập tin XML

Mở tập tin res/layout/activity_main.xml và thêm đoạn mã sau:

Code:

<LinearLayout xmlns:Android=”http://schemas.Android.com/apk/res/Android”

Android:id=”@+id/LinearLayout1″

Android:layout_width=”fill_parent”

Android:layout_height=”fill_parent”

Android:orientation=”vertical”

Android:layout_gravity=”center”

Android:gravity=”center”>

 

<Button

Android:id=”@+id/button1″

Android:layout_width=”wrap_content”

Android:layout_height=”wrap_content”

Android:text=”Toast ”

Android:gravity=”center”

/>

</LinearLayout>

  1. b) Viết code cho chương trình

Thêm sự kiện OnClickListener cho Button “Hiển thị [Normal Toast]”. Khi người dùng click vào Button, một thông báo xuất hiện.

Mở tập tin AndroidNormalToastMainActivity.java và thêm đoạn mã sau:

Code:

package apps1pro.com;

import Android.support.v7.app.ActionBarActivity;

import Android.app.Activity;

import Android.os.Bundle;

import Android.view.Menu;

import Android.view.MenuItem;

import Android.view.View;

import Android.view.View.OnClickListener;

import Android.widget.Button;

import Android.widget.Toast;

public class MainActivity extends Activity {

Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

Toast.makeText(getApplicationContext(), “Bạn vừa Click vào button Toast!!!”,

Toast.LENGTH_LONG).show();

}

});

}

}

Ví dụ : Dùng tablelayout tạo các button số từ 1 đến 9 khi click vào button sẽ hiện lên thông báo các số vừa chọn

Mở tập tin res/layout/activity_main.xml và ta làm như sau:

Code trong Mainactivity.java

public class MainActivity extends Activity implements OnClickListener {

Button so1,so2,so3,so4,so5,so6,so7,so8,so9;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

so1=(Button) findViewById(R.id.btn1);

so2=(Button) findViewById(R.id.btn2);

so3=(Button) findViewById(R.id.btn3);

so4=(Button) findViewById(R.id.btn4);

so5=(Button) findViewById(R.id.btn5);

so6=(Button) findViewById(R.id.btn6);

so7=(Button) findViewById(R.id.btn7);

so8=(Button) findViewById(R.id.btn8);

so9=(Button) findViewById(R.id.btn9);

so1.setOnClickListener(this);

so2.setOnClickListener(this);

so3.setOnClickListener(this);

so4.setOnClickListener(this);

so5.setOnClickListener(this);

so6.setOnClickListener(this);

so7.setOnClickListener(this);

so8.setOnClickListener(this);

so9.setOnClickListener(this);

}

void toast(String i)

{

Toast.makeText(getApplicationContext(), “ban vua click so “+i+” “, Toast.LENGTH_LONG).show();

 

}

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

switch (arg0.getId()){

case R.id.btn1:

toast(“1”);

break;

case R.id.btn2:

toast(“2”);

break;

case R.id.btn3:

toast(“3”);

break;

case R.id.btn4:

toast(“4”);

break;

case R.id.btn5:

toast(“5”);

break;

case R.id.btn6:

toast(“6”);

break;

case R.id.btn7:

toast(“7”);

break;

case R.id.btn8:

toast(“8”);

break;

case R.id.btn9:

toast(“9”);

break;

}

 

}

 

}

3.2.2 Dialog

Một hộp thoại thường là một màn hình nhỏ mà xuất hiện đè lên các Activity hiện tại. Activity nằm dưới sẽ không tương tác được với người dùng mà thay vào đó là hộp thoại sẽ đóng vai trò đó. Hộp thoại thông thường dùng để thông báo hay đại loại vậy. Thông thường có các loại hộp thoại sau:

Tên dialog Miêu tả
AlertDialog là dạng hộp thoại có nhiều nhất 3 nút nhấn hoặc có thêm danh sách các mục lựa chọn có thêm checkbox hay radio button. AlertDialog thích hợp   làm hộp thoại   trong các chương   trình Android và   được khuyến khích dùng.
ProgressDialog là hộp thoại có   vòng xoay hay   thanh thể hiện   tiến trình đang chạy. Bởi vì nó là dạng AlertDialog mở rộng cho nên nó cũng có nút nhấn.
DatePickerDialog là hộp thoại cho phép người dùng chọn ngày.
TimePickerDialog là hộp thoại cho phép người dùng chọn giờ.

Trong hoàn cảnh, muốn thiết kế lại các hộp thoại thì có thể viết lại lớpDialog hay định nghĩa lại giao diện cho các lớp hộp thoại trên.

3.2.2.1 Tạo AlertDialog

Giao diện hiển thị của nó gồm nhiều thành phần như sau:

  • Tiêu đề.
  • Thông điệp thông báo.
  • Danh sách chứa các CheckBox hay Radio Button

hinh3.7

Hình 3.7

 

File activity_main:

<LinearLayout xmlns:Android=”http://schemas.Android.com/apk/res/Android”

Android:id=”@+id/LinearLayout1″

Android:layout_width=”fill_parent”

Android:layout_height=”fill_parent”

Android:orientation=”vertical”

Android:layout_gravity=”center”

Android:gravity=”center”>

<Button

Android:id=”@+id/button1″

Android:layout_width=”wrap_content”

Android:layout_height=”wrap_content”

Android:text=”Dialog ”

Android:gravity=”center”

/>

</LinearLayout>

File MainActivity :

public class MainActivity extends Activity {

final Context context = this;

Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View arg0) {

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context );

// gán tiêu đề cho dialog

alertDialogBuilder.setTitle(“Lập trình Android Studio với apps1pro”);

// hiển thị Thông điệp (thông báo) lên dialog

alertDialogBuilder .setMessage(“Bạn có muốn thoát không ?”)

.setCancelable(false)

.setPositiveButton(“Có”,new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,int id) {

MainActivity.this.finish();

}

})

.setNegativeButton(“Không”,new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,int id) {

dialog.cancel();

}

});

// Tạo alert dialog

AlertDialog alertDialog = alertDialogBuilder.create();

// Hiển thị dialog

alertDialog.show();

}

});

}

Để khởi tạo AlertDialog, ta phải sử dụng lớp con là  AlertDialog.Builder:

 AlertDialog.Builder build = new AlertDialog.Builder(context)

Sau khi build xong, thì gọi create để tạo object của AlertDialog từ builder đó:

AlertDialog ad = build.create()

 

Mục đích Phương thức/Đối tượng
Tạo đốitượng để xây dựng AlertDialog AlertDialog.Builder builder = new AlertDialog.Builder(this);
Thiết lập tiêu đề setTitle(CharSequence title) hoặc setTitle(int titleId)
Thiết lập thông điệp setMessage(CharSequence message) hoặc setMessage(int

messageId)

Thiết lập icon setIcon(Drawable icon) hoặc setIcon(int iconId)
Thiết lập danh sách setItems(CharSequence[] items,

DialogInterface.OnClickListener listener) hoặc setItem(int

itemsId, DialogInterface.OnClickListener listener)

Thiết lập danh sách chứa Radio Buttons setSingleChoiceItems(CharSequence[] items, int

checkedItem, DialogInterface.OnClickListener listener) hoặc

setSingleChoiceItems(int itemsId, int checkedItem,DialogInterface.OnClickListener listener)

Thiết lập danh sách chứa CheckBox setMultiChoiceItems(CharSequence[] items, boolean[]

checkedItems, DialogInterface.OnClickListener listener) hoặc

setMultiChoiceItems(int itemsId, boolean checkedItems,DialogInterface.OnClickListener listener)

Thiết lập Positive Button setPositiveButton(CharSequence text,

DialogInterface.OnClickListener listener) hoặc

setPositiveButton(int textId, DialogInterface.OnClickListenerlistener)

 

Thiết lập Negative Button

 

setNegativeButton(CharSequence text,

DialogInterface.OnClickListener listener) hoặc

setNegativeButton (int textId,DialogInterface.OnClickListener listener)

Thiết lập Neutral Button setNeutralButton(CharSequence text,

DialogInterface.OnClickListener listener) hoặc

setNeutralButton (int textId, DialogInterface.OnClickListenerlistener)

 

3.2.2.2 PROGRESSDIALOG

ProgressDialog là loại Dialog dùng để hiển thị tiến độ thực hiện một công việc nào đó . Dạng Dialog này được tạo ra từ lớp cha là AlertDialog. Ngoài những tính chất riêng, nó cũng kế thừa nhiều thuộc tính từ lớp cha AlertDialog như : Tiêu đề, Thông điệp, Buttons.

hinh3.8

Hình 3.8

Code :

public class MainActivity extends Activity {

final Context context = this;

Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button1);

// add button listener

button.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

ProgressDialog pd =

new ProgressDialog(MainActivity.this);

pd.setTitle(“Vui Lòng chờ……”);

pd.setMessage(“loading “);

pd.show();

}

});

}

}

3.2.2.3 DATEPICKERDIALOG

DatePickerDialog dùng để chọn ngày tháng.

hinh3.9

Hình 3.9

Phương thức khởi tạo DatePickerDialog như sau:

DatePickerDialog(Contextcontext,DatePickerDialog.OnDateSetListenercallback , intyear,intmonthOfYear, intdayOfMonth)

Trong đó:

  • context: là ngữ cảnh hiển thị Dialog. Trong trườnghợp này là Activity hiện hành.
  • callback: dùng để thiết lập sự kiện khi người dùngthay đổi ngày trên Dialog.
  • year: thiết lập năm trên Dialog.
  • monthOfYear: thiết lập tháng trên Dialog.
  • dayOfMonth: thiết lập ngày trên Dialog.

3.2.2.4 TIMEPICKERDIALOG

TimePickerDialog dùng để chọn giờ

hinh3.10Hình 3.10

Phương thức khởi tạo DatePickerDialog như sau:

TimePickerDialog(Contextcontext,DatePickerDialog.OnDateSetListenercallback , inthourOfDay,intminute, booleanis24HourView)
Trong đó:

  • context: là ngữ cảnh hiển thị Dialog. Trong trường hợp nàylà Activity hiện hành.
  • callback: dùng để thiết lập sự kiện khi người dùng thay đổigiờ phút trên Dialog.
  • hourOfDay: thiết lập giờ trên Dialog.
  • minute: thiết lập phút trên Dialog.

is24HourView: chỉ định giờ hiển thị theo dạng 24h hay 12h

Share.

About Author

Leave A Reply