Notification和Toast一样,都是在android中起到通知和提醒的功能。但他们的使用原理完全不同,Toast是一个控件,使用new创建,而Notification是通过NotificationManager来管理的。
显示效果如下:
主程序:
public class Main extends Activity implements OnClickListener
{
private NotificationManager notificationManager;
private void setDefaults(String tickerText, String contentTitle,
String contentText, int id, int resId, int defaults)
{
Notification notification = new Notification(resId,
tickerText, System.currentTimeMillis());
//创建Notification第三步
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, Main.class), 0);
//创建Notification第四步
notification.setLatestEventInfo(this, contentTitle, contentText,
contentIntent);
notification.defaults = defaults;
//创建Notification第五步
notificationManager.notify(id, notification);
}
private void showNotification(String tickerText, String contentTitle,
String contentText, int id, int resId)
{
//创建Notification第二步
Notification notification = new Notification(resId,
tickerText, System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
getIntent(), 0);
notification.setLatestEventInfo(this, contentTitle, contentText,
contentIntent);
notificationManager.notify(id, notification);
}
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btnSmile:
showNotification("今天非常高兴", "今天考试得了全年级第一",
"数学100分、语文99分、英语100分,yeah!", R.drawable.smile,
R.drawable.smile);
break;
case R.id.btnWhy:
showNotification("这是为什么呢?", "这道题为什么会出错呢?", "谁有正确答案啊.",
R.drawable.why, R.drawable.why);
break;
case R.id.btnWrath:
showNotification("今天心情不好", "也不知道为什么,这几天一直很郁闷.", "也许应该去公园散心了",
R.drawable.why, R.drawable.wrath);
break;
case R.id.btnClear:
// notificationManager.cancel(R.drawable.smile);
// notificationManager.cancel(R.drawable.why);
notificationManager.cancelAll();
break;
case R.id.btnRing:
setDefaults("使用默认的声音", "使用默认的声音", "使用默认的声音", R.id.btnRing, R.drawable.smile,
Notification.DEFAULT_SOUND);
case R.id.btnVibrate:
setDefaults("使用默认的震动", "使用默认的震动", "使用默认的震动", R.id.btnVibrate,
R.drawable.smile, Notification.DEFAULT_VIBRATE);
case R.id.btnLight:
setDefaults("使用默认的Light", "使用默认的Light", "使用默认的Light", R.id.btnLight,
R.drawable.smile, Notification.DEFAULT_LIGHTS);
case R.id.btnRingAndVibrate:
setDefaults("所有的都使用默认值", "所有的都使用默认值", "所有的都使用默认值",
R.id.btnRingAndVibrate, R.drawable.smile,
Notification.DEFAULT_ALL);
break;
}
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//创建Notification第一步
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Button btnSmile = (Button) findViewById(R.id.btnSmile);
Button btnWhy = (Button) findViewById(R.id.btnWhy);
Button btnWrath = (Button) findViewById(R.id.btnWrath);
Button btnClear = (Button) findViewById(R.id.btnClear);
Button btnRing = (Button) findViewById(R.id.btnRing);
Button btnVibrate = (Button) findViewById(R.id.btnVibrate);
Button btnLight = (Button) findViewById(R.id.btnLight);
Button btnRingAndVibrate = (Button) findViewById(R.id.btnRingAndVibrate);
btnSmile.setOnClickListener(this);
btnWhy.setOnClickListener(this);
btnWrath.setOnClickListener(this);
btnClear.setOnClickListener(this);
btnRing.setOnClickListener(this);
btnVibrate.setOnClickListener(this);
btnLight.setOnClickListener(this);
btnRingAndVibrate.setOnClickListener(this);
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/btnSmile" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="我今天非常高兴"
android:drawablePadding="10dp" android:drawableLeft="@drawable/smile" />
<Button android:id="@+id/btnWhy" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="这是为什么呢?"
android:drawablePadding="10dp" android:drawableLeft="@drawable/why" />
<Button android:id="@+id/btnWrath" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="今天心情不好"
android:drawablePadding="10dp" android:drawableLeft="@drawable/wrath" />
<Button android:id="@+id/btnRing" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="使用默认的声音" />
<Button android:id="@+id/btnVibrate" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="使用默认的震动" />
<Button android:id="@+id/btnLight" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="使用默认的Light" />
<Button android:id="@+id/btnRingAndVibrate"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="所有的都使用默认值" />
<Button android:id="@+id/btnClear" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="清除通知" />
</LinearLayout>