TUT ANDROID 028: DIALOG|NOTIFICATION|PICKER TRONG ANDROID

Trong bài này mình sẽ hướng dẫn các bạn thành phần để hiện thị thông báo trong android đó là dialog và notification và thành phần để  cài đặt thời gian và ngày là TimePickerDialog và DatePickerDialog.

Để các bạn hiểu rõ về các thành phần này mình sẽ làm một ứng dụng đơn giản với các button. khi click vào các button sẽ show các loại dialog tương ứng.

để làm được ví dụ này các bạn làm lần lượt theo các bước sau

Bước 1: mở file res->values->String.xml

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

<resources>

<string name="app_name">AlertDialogDemo</string>
 <string name="action_settings">Settings</string>
 <string name="hello_world">Hello world!</string>
 <string name="AlertDialog">Alert Dialog</string>
 <string name="ProgessDialog">Progess Dialog</string>
 <string name="TimePicker">Time Picker</string>
 <string name="DatePicker">Date Picker</string>
 <string name="ShowNotification">Show Notification!</string>

</resources>

Bước 2: mở file res->layout-> activity_main.xml

<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:orientation="vertical"
 android:paddingBottom="16dp"
 android:paddingLeft="16dp"
 android:paddingRight="16dp"
 android:paddingTop="16dp"
 tools:context=".MainActivity" >

<Button
 android:id="@+id/alertDialog"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:onClick="alertDialog"
 android:text="@string/AlertDialog" />

<Button
 android:id="@+id/progessDialog"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:onClick="progessDialog"
 android:text="@string/ProgessDialog" />

<Button
 android:id="@+id/timePicker"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:onClick="timePicker"
 android:text="@string/TimePicker" />

<Button
 android:id="@+id/datePicker"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:onClick="datePicker"
 android:text="@string/DatePicker" />

<Button
 android:id="@+id/showNotifi"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:onClick="showNotifi"
 android:text="@string/ShowNotification" />

</LinearLayout>

Bước 3: Mở file MainActivity.java

package truong.hut.com;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TimePicker;

public class MainActivity extends Activity {
 private static final String TAG = "MainActivity";

private Notification notification;
 private NotificationManager notificationManager;
 private int idNotification = 1;

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

}

public void alertDialog(View v) {
 // b1: khoi tao alertdialoe
 final AlertDialog.Builder builder = new AlertDialog.Builder(this);
 // b2: xay dung khung cho alertdialog
 // thiet lap icon
 builder.setIcon(this.getResources().getDrawable(R.drawable.ic_launcher));
 // builder.setIcon(R.drawable.ic_launcher);
 // thiet lap tieu de
 builder.setTitle("Alert Dialog");
 builder.setTitle(getResources().getString(R.string.action_settings));
 // thiet lap noi dung
 builder.setMessage("Are you sure you want to exit?");
 // thiet lap nut hien thi cho dialog
 builder.setPositiveButton("OK", new OnClickListener() {

@Override
 public void onClick(DialogInterface dialog, int which) {
 // TODO Auto-generated method stub
 Log.d(TAG, "onclick button OK");
 finish();
 }
 });

builder.setNeutralButton("AAA", new OnClickListener() {

@Override
 public void onClick(DialogInterface dialog, int which) {
 // TODO Auto-generated method stub
 Log.d(TAG, "onclick button AAA");
 dialog.dismiss();

}
 });

builder.setNegativeButton("BBB", new OnClickListener() {

@Override
 public void onClick(DialogInterface dialog, int which) {
 // TODO Auto-generated method stub
 Log.d(TAG, "onclick button BBB");
 }
 });

builder.show(); // hien thi len man hinh
 }

// tuong tu xay dung dialog voi progessDialog, timePicker, datePicker
 public void progessDialog(View v) {
 final ProgressDialog progessDialog = new ProgressDialog(this);
 progessDialog.setIcon(this.getResources().getDrawable(
 R.drawable.ic_launcher));
 progessDialog.setTitle("ProgessDialog");
 progessDialog.setMessage("Loading...");
 progessDialog.setCanceledOnTouchOutside(true);
 // cac ban co the add them cac button cho progressDialog theo src duoi day
 // thong thuong progressdialog se hien thi khi download nen se duoc dismiss khi download ket thuc
 // progessDialog.setButton("OK", new DialogInterface.OnClickListener() {
 //
 // @Override
 // public void onClick(DialogInterface dialog, int which) {
 // // TODO Auto-generated method stub
 // Log.d(TAG, "onclick button OK");
 // finish();
 // }
 // });
 //
 // progessDialog.setButton2("CANCEL",
 // new DialogInterface.OnClickListener() {
 //
 // @Override
 // public void onClick(DialogInterface dialog, int which) {
 // // TODO Auto-generated method stub
 // Log.d(TAG, "onclick button CANCELF");
 // dialog.dismiss();
 //
 // }
 // });

progessDialog.show();

}

public void timePicker(View v) {

// lay thoi gian cua dien thoai
 Calendar calerdar2 = Calendar.getInstance();
 int hourOfDay = calerdar2.get(Calendar.HOUR_OF_DAY);
 int minute = calerdar2.get(Calendar.MINUTE);

boolean is24HourView = true;

TimePickerDialog timepicker = new TimePickerDialog(MainActivity.this,
 new OnTimeSetListener() {

@Override
 public void onTimeSet(TimePicker view, int hourOfDay,
 int minute) {
 // TODO Auto-generated method stub
 Log.d(TAG, hourOfDay + ":" + minute);

}
 }, hourOfDay, minute, is24HourView);
 timepicker.show();

}

public void datePicker(View v) {

// lay ngay thang nam hien tai cua dien thoai
 Calendar calendar = Calendar.getInstance();
 int year = calendar.get(Calendar.YEAR);
 int monthOfYear = calendar.get(Calendar.MONTH);
 int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datepicker = new DatePickerDialog(MainActivity.this,
 new OnDateSetListener() {

@Override
 public void onDateSet(DatePicker view, int year,
 int monthOfYear, int dayOfMonth) {
 // TODO Auto-generated method stub
 Log.d(TAG, dayOfMonth + "-" + monthOfYear + "-" + year);

}
 }, year, monthOfYear, dayOfMonth);

datepicker.show();
 }

public void showNotifi(View v) {

// b1: khoi tao NotificationManager
 notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

// b2: dinh nghia notification gom co icon, time,massage
 CharSequence ticker = "New Message";
 int icon = R.drawable.ic_launcher;
 long when = System.currentTimeMillis(); // thoi gian hien tai
 notification = new Notification(icon, ticker, when);

// b3: thiet lap thong tin cua epended meassage
 Context context = getApplicationContext();
 CharSequence title = "Bui Son Truong";
 CharSequence text = "where are you now?";
 // moi khi kich vao epended message se thuc hien mot action nao do
 // vi du hien thi len 1 web
 Intent intent = new Intent(Intent.ACTION_VIEW,
 Uri.parse("https://www.google.com.vn/"));
 PendingIntent pi = PendingIntent.getActivity(context, 0, intent, 0);

notification.setLatestEventInfo(context, title, text, pi);
 // thiet lap am thanh
 notification.defaults |= Notification.DEFAULT_SOUND;
 // notification.sound = Uri.parse("file:///sdcard/ic_hbl.mp3");
 // thiet lap rung
 notification.defaults |= Notification.DEFAULT_VIBRATE;
 // long[] vi = { 0, 100, 0, 2000, 0, 3000, 0, 4000 };
 // notification.vibrate = vi;
 // thiet lap do sang
 notification.defaults |= Notification.DEFAULT_LIGHTS;

// b4: Show thong bao
 notificationManager.notify(idNotification, notification);

}

// public void CancelNotification(View view) {
 // // thuc hien xoa thong bao
 // notificationManager.cancel(idNotification);
 // }

@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;
 }

}<span style="line-height: 1.5em;">

Note:

Các bạn có thể theo dõi kết quả thực hiện chương trình trên logcat và màn hình. . Khi làm theo ví dụ các bạn có gì không hiểu có thể để lại câu hỏi trên web mình sẽ trả lời các bạn một cách nhanh nhất có thể. Các bạn có thể down full src theo link dưới đây

AlertDialogDemo

Kết quả thực hiện chương trình

123456

Comments
  1. 5 years ago

Leave a Reply

Your email address will not be published. Required fields are marked *